tarjan算法與無向圖連通性
阿新 • • 發佈:2018-03-30
是否 img 搜索 時間 bsp 斷點 技術 代碼 割點
一,無向圖的割點與橋
對於G=(V,E)
1.割點:xξV若刪除x以及與x所連邊後,圖被分裂成為多個聯通圖,則x為圖的割點
2.橋(割邊):eξE若刪除e後圖,圖被分裂成為多個聯通圖,則e為圖的割點
怎樣求割點與割邊
tarjan算法
就是他了。。。
首先我們引入時間戳的概念
設dfsn[x]表示從源節點Y開始訪問到的第幾個
也就是說我們假設dfsn[Y]=1,然後我們采用深度優先搜索樹對圖進行訪問
依次對圖的訪問次序進行標記
如圖:
圖中紅色數字左表示low[x]值,右表示dfsn[x]值
什麽是low[x],值呢?
我們定義low[x]表示x通過它的子樹所能到達的最早編號的節點的編號
如何更新low[x]值?
我們在dfs過程中,先讓low[x]=dfsn[x]
有定義可知,設y為x子節點,則low[x]=min(low[x],low[y]);
如圖,我們會發現節點5可以不通過它的父節點而到達節點1
所以,同樣low[x]=min(low[x],dfsn[y])
怎樣判斷點是否為割點?
dfsn[x]<=low[x]
怎樣判斷邊是否為割邊?
dfsn[x]<low[y]
(x,y)為割邊
割點代碼
tarjan算法與無向圖連通性