Tarjan算法總結

Tarjan算法總結

關於學習

《算法競賽進階指南》算法

前言

Tarjan算法能在線性時間內求出無向圖的割點,進一步可求出無向圖的雙連通份量。而且能在有向圖中求出有向圖的強連通份量必經點和必經邊
只打算給本身複習用,233.學習

Tarjan算法

幾個定義:
時間戳:其實就是dfs序
在圖的深度優先遍歷過程當中,按照每一個節點第一次被訪問的時間順序,
依次給予 N 個節點 1-N 的整數標記,該標被稱爲時間戳,記爲 dfn[u]
追溯值:
設 subtree(u) 表示搜索中以 x 爲根的子樹
low[u] 是下述全部節點時間戳的最小值spa

  1. 是 subtree(u) 中的節點
  2. 經過一條不在搜索樹上的邊,能夠到達 subtree(u) 的節點

關於追溯值的計算:
先令\(low_u = dfn_u\)
v 沒有被訪問過,\(low[u]=min(low[u], low[v])\)
v 被訪問過了,\(low[u]=min(low[u], dfn[v])\)class

Tarjan算法結束,進階

無向圖的割點和橋

割點定義:搜索

給定無向連通圖 G=(V,E)
若對於 x ∈ V,從圖中刪去節點 x 以及全部與 x 關聯的邊後,G 分裂成兩個或兩個以上不相連的子圖,則稱 x 爲 G 的割點遍歷

若 u 不是搜索樹的根節點 (深搜起點),則 x 是割點當且僅當搜索
樹上存在 v 的一個子節點 v 知足:
dfn[u] ≤ low[v]
∙ 若 u 是搜素樹的根節點,則 u 是割點當且僅當搜索樹上存在至少
兩個子節點 v 1 ,v 2 知足上述條件時間戳

橋定義:總結

若對於 e ∈ E,從圖中刪去邊 e 後,G 分裂成兩個不相連的子圖,
則稱 e 爲 G 的橋或割邊時間

無向邊 (u,v) 是橋,當且僅當搜索樹上存在的 u 的一個子節點 v 知足:
dfn[u] < low[v]

無向圖割點和橋的例題

例題

BZOJ1718 BZOJ2730 逃不掉的路 HDOJ3686 POJ2762 BZOJ2438

相關文章
相關標籤/搜索