資料結構實習 - 十四

18
Graph

Upload: wood

Post on 04-Feb-2016

94 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: 資料結構實習 - 十四

Graph

Page 2: 資料結構實習 - 十四

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), }

Page 3: 資料結構實習 - 十四

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

Page 4: 資料結構實習 - 十四

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

Page 5: 資料結構實習 - 十四

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

Page 6: 資料結構實習 - 十四

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

Page 7: 資料結構實習 - 十四

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

Page 8: 資料結構實習 - 十四

Biconnected Graph

8

Articulation point如果將 v 以及所有附著於 v 的邊刪除 , 會產生兩個以上的連通元件 (connected graph), 我們就稱 v 為

Articulation point( 連接點 ) 。biconnected graph

二連通圖是一個沒有連接點的連通圖形

Page 9: 資料結構實習 - 十四

Biconnected Graph – 範例

9

0

1

2 3

4

5

8

7

6

9

3

1

5

7

Page 10: 資料結構實習 - 十四

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

Page 11: 資料結構實習 - 十四

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

Page 12: 資料結構實習 - 十四

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))

Page 13: 資料結構實習 - 十四

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

Page 14: 資料結構實習 - 十四

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

Page 15: 資料結構實習 - 十四

練習• 右圖為本次練習的題目

• 請自教學網站下載 graph.txt 。• 共有十個 vertex ,以 0-9 表示。• 每一行代表一條 edge• vertex 之間以 tab(\t) 隔開

0 1

2 3 4

5 6 7

8 9

Page 16: 資料結構實習 - 十四

練習 -11. 將該圖形資料轉換成 Adjacency matrices 的格式,並輸出矩陣格式。2. 針對練習一中完成的矩陣格式,做 Depth First

Search 的動作,並將結果輸出。3. 針對練習一中完成的矩陣格式,找出該圖形中的所有 Biconnected Components graph ,並將結果輸出。

Page 17: 資料結構實習 - 十四

練習 -21. 將該圖形資料轉換成 Adjacency list 的格式,並輸出矩陣格式。2. 針對練習一中完成的串列格式,做 Depth First

Search 的動作,並將結果輸出。3. 針對練習一中完成的串列格式,找出該圖形中的所有 Biconnected Components graph ,並將結果輸出。

Page 18: 資料結構實習 - 十四

練習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>