Graph
V(G 1 )={0, 1, 2, 3, 4, 5, 6, 7, 8, 9} E(G 1 )={(0, 2), (0, 3), (1, 4), (2, 3), (2, 5), (2, 6), (3, 6), (3, 7), (4, 7), (5, 6), (5, 8), (6, 9), (7, 9), }
Adjacency matrix 以右圖為例 : Adjacency matrices 表示 輸出結果 : (0) (1) (2) (3) (0) (1) (2) (3)
Adjacency matrix – 範例 The adjacency matrix of G 1 G1G The adjacency matrix of G G3G3
Adjacency list 以右圖為例 : Adjacency List 表示 輸出結果 : (0) -> 3 (1) -> 2 -> 3 (2) -> 1 -> 3 (3) -> 0 -> 1 -> 2
Adjacency list – 範例 Adjacent list of G adj_listdata link G1G G3G Adjacent list of G Adj_listdata link
Depth First Search 類似樹的先序尋訪。 必須紀錄之前的路徑。 Stack Recursive > 1 -> 3 -> 7 -> 4 -> 5 -> 2 ->
Biconnected Graph 8 Articulation point 如果將 v 以及所有附著於 v 的邊刪除, 會產生兩個以上的 連通元件 (connected graph), 我們就稱 v 為 Articulation point( 連接點 ) 。 biconnected graph 二連通圖是一個沒有連接點的連通圖形
Biconnected Graph – 範例
A Connected Graph and Its Biconnected Components (a) A connected graph (b) Biconnected components
Biconnected Graph – 範例 以右圖為例 : Biconnected Graph 表示 程式預期輸出結果 : Biconnected Graph(List) 1 : 2 :
Biconnected Graph – 演算法 depth first numbers (dfn) 在頂點在深度優先搜尋時, 頂點被拜訪的順序。 low(u) 是利用 u 的後代以及至多一個後退邊 (back edge) 可達到的頂點之最小深度優先序號 low(u) = min {dfn(u), min {low(w) | w is a child of u}, min { dfn(w) | (u, w) is a back edge} } back edge :在 DFS 時不被經過的邊。 u 是一個連接點若且唯若 u 是一個根節點且至少有兩個子節點 或 u 不是根節點但有一個子節點 w 使得 low(w) >=dfn(u))
Biconnected Graph – 演算法 Stack dfn:0 00 0, 1 1 dfn: , , 4 dfn:2 dfn: , 3 dfn:4 low:0 low:1 low:2 low:3 low:4 3, 1 low: , 5 dfn:5 low: , 6 dfn:6 low: , 7 dfn:7 low:7 7, 5 low: , 8 dfn:8 low:8 8 7 dfn:9 9 7, 9 7 low: low:5 3 4 low:
A Connected Graph and Its Biconnected Components (a) A connected graph (b) Biconnected components
練習 右圖為本次練習的題目 請自教學網站下載 graph.txt 。 共有十個 vertex ,以 0-9 表示。 每一行代表一條 edge vertex 之間以 tab(\t) 隔開
練習 將該圖形資料轉換成 Adjacency matrices 的格式,並 輸出矩陣格式。 2. 針對練習一中完成的矩陣格式,做 Depth First Search 的動作,並將結果輸出。 3. 針對練習一中完成的矩陣格式,找出該圖形中的所 有 Biconnected Components graph ,並將結果輸出。
練習 將該圖形資料轉換成 Adjacency list 的格式,並輸出 矩陣格式。 2. 針對練習一中完成的串列格式,做 Depth First Search 的動作,並將結果輸出。 3. 針對練習一中完成的串列格式,找出該圖形中的所 有 Biconnected Components graph ,並將結果輸出。
練習 DFS: Biconnected Components graph