資料結構實習 - 十四
DESCRIPTION
資料結構實習 - 十四. Graph. Graph. 0. 1. 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), - PowerPoint PPT PresentationTRANSCRIPT
Graph
Graph0 1
2 3 4
5 6 7
8 9
V(G1)={0, 1, 2, 3, 4, 5, 6, 7, 8, 9}E(G1)={(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) 0 0 0 1(1) 0 0 1 1(2) 0 1 0 1(3) 1 1 1 0
0
3
1 2
0 0 0 10 0 1 10 1 0 11 1 1 0
0 1 2 30
1
2
3
Adjacency matrix – 範例0 1 1 1
1 0 1 1
1 1 0 1
1 1 1 0
0 1 2 3
The adjacency matrix of G1
G1
0
3
1 2
0
1
2
3
0 1 0
1 0 1
0 0 0
0 1 2
The adjacency matrix of G3
0
1
2
0
1
2
G3
Adjacency list以右圖為例 :
Adjacency List表示
輸出結果 :
0
3
1 23
2 3
1 30 1 2
0123
(0) -> 3 (1) -> 2 -> 3 (2) -> 1 -> 3 (3) -> 0 -> 1 -> 2
Adjacency list – 範例
Adjacent list of G1
3 1 2
2 3 0
1 3 0
0 1 2
adj_list data link
G1
0
3
1 2
0
1
2
G3
0
1
2
3
Adjacent list of G3
1
2 0
Adj_list data link0
1
2 0
Depth First Search類似樹的先序尋訪。必須紀錄之前的路徑。
StackRecursive
0
1 2
3 4 5 6
70 -> 1 -> 3 -> 7 -> 4 -> 5 -> 2 -> 6
0
1
3
7
4 5
2
6
Biconnected Graph
8
Articulation point如果將 v 以及所有附著於 v 的邊刪除 , 會產生兩個以上的連通元件 (connected graph), 我們就稱 v 為
Articulation point( 連接點 ) 。biconnected graph
二連通圖是一個沒有連接點的連通圖形
Biconnected Graph – 範例
9
0
1
2 3
4
5
8
7
6
9
3
1
5
7
A Connected Graph and Its Biconnected Components
10
0
1
2 3
4
5
8
7
6
9
(a) A connected graph (b) Biconnected components
1
2 3
4
5
7
6
0
1
3 5
8
7 7
9
Biconnected Graph – 範例以右圖為例 :
Biconnected Graph表示
程式預期輸出結果 :
0
3
1 2
Biconnected Graph(List)1 : <0,3>2 : <1,2><1,3><2,3>
0
3
1
3
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 – 演算法
13
0
1
2 3
4
5
8
7
6
9
Stack
dfn:0 00
0 , 1
1dfn:1
1
2
1 , 2
2
4
2 , 4
dfn:2
dfn:3 4
34 , 3 dfn:4
low:0
low:1
low:2
low:3
low:4
3 , 1
low:1
3 5
3 , 5
dfn:5 low:5
5
6
5 , 6
dfn:6 low:6
6
7
6 , 7dfn:7 low:7
7 , 5low:5
7
8
7 , 8
dfn:8 low:8 8
7
<7,8>
dfn:9 9
7 , 97
low:9
7
<7,9>
99
6
5 <7,5><6,7><5,6>
low:5
3<3,5>
4low:1
2low:1
1
0
<3,1><4,3><2,4><1,2><0,1>
6
A Connected Graph and Its Biconnected Components
14
0
1
2 3
4
5
8
7
6
9
(a) A connected graph (b) Biconnected components
1
2 3
4
5
7
6
0
1
3 5
8
7 7
9
練習• 右圖為本次練習的題目
• 請自教學網站下載 graph.txt 。• 共有十個 vertex ,以 0-9 表示。• 每一行代表一條 edge• vertex 之間以 tab(\t) 隔開
0 1
2 3 4
5 6 7
8 9
練習 -11. 將該圖形資料轉換成 Adjacency matrices 的格式,並輸出矩陣格式。2. 針對練習一中完成的矩陣格式,做 Depth First
Search 的動作,並將結果輸出。3. 針對練習一中完成的矩陣格式,找出該圖形中的所有 Biconnected Components graph ,並將結果輸出。
練習 -21. 將該圖形資料轉換成 Adjacency list 的格式,並輸出矩陣格式。2. 針對練習一中完成的串列格式,做 Depth First
Search 的動作,並將結果輸出。3. 針對練習一中完成的串列格式,找出該圖形中的所有 Biconnected Components graph ,並將結果輸出。
練習DFS:
0 2 3 6 5 8 9 7 4 1Biconnected Components graph
<5,8><4,1><7,4><7,3> <9,7> <6,9> <5,2> <6,5> <6,2> <3,6> <3,0>
<2,3><0,2>