• Tidak ada hasil yang ditemukan

グラフ理論

N/A
N/A
Protected

Academic year: 2023

Membagikan "グラフ理論"

Copied!
14
0
0

Teks penuh

(1)

培訓- 4 グラフ理論

グラフ理論

c2251393 November 7, 2013

1?

圖 的 一 圖 (Graph) 的 的圖

(Graph) 圖 (Picture) 一 的 在 Graph 點 (Vertex)

的元 (Edge) 元 的 點 的

點 連一 Edge 與

Graph 的 點與點 的 點的 的 的

1.1

1. 圖 (Graph) : 一張圖 一 點 一 的

G= (V, E) GVE

2. 點 ( 點,Vertex,Node) : 的元 的 圖 G 的點 V(G) 點的

3. (Edge) : 的 圖 GE(G) e(v1, v2)

存在一 連 v1&v2 的 雙 的 (Undirected

edge, Edge) e(v1, v2) = e(v2, v1); (Directed

edge) (Arc) e(v1, v2) 一 v1 v2v1

v2 v1v2 一 一

4. (Adjacent) : 點 的 v1v2 存在

e(v1, v2) or e(v2, v1)

5. 圖 (Undirected Graph) : 的圖

6. 圖 (directed Graph) : 的圖

7. 圖 (Mixed Graph) : 的圖

I

(2)

1.2 在電腦上存一張圖 グラフ理論

8. 路徑 (Path) : 一 點 的 v1, e1, v2, e2, , , en1, vn v1 vn 的一 路; vi ∈V(G), ei ∈E(G), ei =e(vi, vi+1)

9. 路徑 (Simple path) : 一 點 的路徑

10. (Cycle) : 一 路徑 v1 =vn

11. (Simple Cycle) : 一 點 ( 點) 的

12. (Degree) : 一 點 v 的 點 deg(v)

13. (In-Degree) : 點 v 的 點與 的

deg+(v)

14. (Out-Degree) : 點v 的 點與 的

deg(v)

一 ∑

vV(G)deg(v)與|E|的 ∑

vV(G)deg+(v)與∑

vV(G)deg(v)

的 ( )

1.2 在電腦上存一張圖

Coder 電腦 存 一張圖

1. Adjacent Matrix : 一 A = [ai,j]n×n ai,j

e(vi, vj) 的 ( ...) 的 點

O(1) 點 的 點 與

O(|V|2)

2. Adjacent list : 點 一 ( 的

) 與 點 的 的 點 O(|E|+|V|)

點 ( 的 )

3. Forward star : 的 存在一

一 點連 vi 連 的 在一 [si, ei] 通 一

(vi, vj) vivj

的 的

II

(3)

2.子圖與特殊圖 グラフ理論

2 子圖與特殊圖

2.1

1. 子圖 Subgraph : 圖 G= (V, E), G = (V, E) V ⊆V, E ⊆E G G的子圖

2. 圖 Compilment graph : 圖 G 的 圖 Gc V(Gc) = V(G) e E(G)←→e∈/ E(Gc)

3. 樹Spanning tree : 圖T G的子圖 T 一 樹 T G

2.2(Simple graph)

e(v, v) e1 =e2 圖 上 的

2.3 連通圖 (Connected graph)

一張圖 Gvi, vj 一 路徑連 點 G 通圖

2.4(DAG)

一張 的 圖 DP 的 與 的圖 DAG

DP 在一張DAG 上 點AB 的 ( ) 路

2.5(Bipartite graph)

一張 圖GV1, V2 e(vi, vj)∈E(G)

vi&vj G

GG ( 點

點 與 點 點 與 點 )

2.6(Complete graph)

GG

III

(4)

2.7 平面圖(Plannar graph) グラフ理論

2.7 平面圖 (Plannar graph)

一張圖G 在平面上 G 平面圖 一 平面圖的 平面 的面 F Euler 一 |V| − |E|+|F|= 2

2.8(Tree)

一 的 圖 G G 的連通圖 G 一 樹

(Tree)

樹 在 圖 G 存在一點 v deg+(v) = 0 點 u

deg+(u) = 1 v u 一 路徑 連 G

v 的 樹(Directed Tree)

1. 連通圖 GG

2. 連通圖 G 一 連通

3. 連通圖 G 點 一 路徑 連

4. 連通圖 G 的 與點 的 |E|=|V| −1

5. 連通圖 G 的 點 G 樹 ( )

2.9 Exercises

1. Island(IOI 2008, HOJ 247)

樹的 路徑(|V| ≤100000) 2. Dreaming(IOI 2013, HOJ 288)

樹 樹 l 的 連 一顆 樹

樹的 點 的 ( 點 100000)

3. (99 , HOJ 75)

n( 500) 在 的上

一 的 的

IV

(5)

3.圖的遍歷 グラフ理論

3 圖的遍歷

Graph traversal 的 一張圖 G 點 v

點的點 點 子圖 T 的 與點的

T G 的 樹 T

3.1 DFS

(DFS) 點的子 點 點 的

DFS的 樹 DFS tree

Algorithm 1DFS

1: function DFS(v)

2: mark v as visited

3: for allu that is adjacent tov do

4: if u is not visitedthen

5: DFS(u)

6: end if

7: end for

8: end function

O(|V|+|E|)

在 DFS 的 :

1. Tree edge : DFS tree上的

2. Back edge : 連 DFS tree上 的 3. Forward edge : 連 DFS tree上 子 點的 4. Cross edge : 上面 的 Cross edge

在遍歷 圖 的

DFS 迴 的 在 stack (Windows) 圖

DFS 的 stack (RE)

DFS 迴 stack ( Judge )

V

(6)

3.2 BFS グラフ理論

3.2 BFS

與 DFS (BFS) 點 的

DFS Stack( 迴) BFS Queue 存 遍歷的點

Algorithm 2BFS

1: function BFS(v)

2: enqueue v to Q ◃ Q is a queue

3: mark v as visited

4: whileQ is not empty do

5: c← dequeue Q

6: for allu that is adjacent tocdo

7: if u is not visitedthen

8: enqueueu to Q

9: marku as visited

10: end if

11: end for

12: end while

13: end function

DFS 一 的O(|V|+|E|)

BFS tree 在 的圖 一 點 點 (root) 的 (

的 ) 圖上 點的

3.3 Time stamp

在 的 點的 與 的 點的

與 的 DFS

一 在 的

3.4 Topological sort

在 圖 G 一 點的 v1, v2, , , vnvi, vj i < j e(vj, vi) / E(G) 一 (vi, vj) vivj

VI

(7)

3.5 壓扁一顆樹 グラフ理論

一張 圖的 存在 圖 G

存在 G DAG 存在

的 的一 子的

Algorithm 3Topo sort #1

procedure Topo sort #1(G(V,E)) a []

for all v ∈V do if deg+(v) = 0 then

enqueue v toQ end if

end for

while Qis not empty do u← dequeueQ

a←a+u

for all v is adjacent to u do deg+(v)←deg+(v)1 if deg+(v) = 0 then

enqueue v toQ end if

end for end while

if |a| ̸=|V|then return No Topological sort.

else return a end if

end procedure

一 上 的 點的 DFS

3.5 壓扁一顆樹

一顆 樹的 點 子

的 一 的

一 點的 v1, v2, , , vn 一 點 子 點 在

的 的 樹壓扁

的 一 樹的DFS 子 點vs

va( 一 ) 的 va 子 點 vs 的 的點 v va 的 ( 一 子 點 vs 的 )

VII

(8)

3.6 Exercises グラフ理論

點 一

樹的 子樹的 點

3.6 Exercises

1. (101 )

n( 5000) ( ) 一的 子

子 的 子

2. Teleporter (POI XVII, HOJ 96)

一張 n( 40000) 點 m( 1000000) 的 圖

( ) 點 1 點 2 的 >4( 圖 點 1 點

2 >4)

3. 子 (TIOJ 1092)

一 DAG 點 一 點的

的路徑 4. Rare Order(UVA 200)

一 的 元 元 的

元 的 的 的

VIII

(9)

4.連通元件 グラフ理論

4 連通元件

G的子圖G 連通 在G

G 連通元件 連通 連通元件的

4.1 連通 (Strong Connected Component SCC)

子圖 G 連通的 點u, v 存在 u v v u 的路徑 的 在 圖上 一 的連通 一 的 通 圖 的SCC

在 圖上 連通元件 的 Tarjan's Kosaraju's

的 Kosaraju's 的:

1.在 G 上DFS 點的

2. 在 圖GT 上 遍歷 一 遍歷 的點 一

SCC

Algorithm 4Kosaraju's

1: procedureKosaraju(G, list[]SCC)

2: mark v ∈V(G)as unvisited

3: GT reverse all arc in G

4: for allv ∈V(G) do

5: if v is not visited then

6: DFS(v, G) with time stamp

7: end if

8: end for

9: Count←0

10: mark v ∈V(G) as unvisited

11: for all v in reverse order of time stampdo

12: if v is not visited then

13: DFS(v, GT) with time stamp and add every Vertex into SCC[Count]

14: Count←Count+ 1

15: end if

16: end for

17: end procedure

一 SCC 一 點 的圖 G 一 DAG

IX

(10)

4.2 點雙連通 グラフ理論

點 在 圖 DP 的 點 SCC

在 DAG上的DP

4.2 點雙連通

在 圖 點雙連通 子圖 G 點雙連通 G 一點 G 連通的

點雙連通元件 圖G的點 V 的元件V1, V2, , , Vn |Vi∩Vj| ≤

1 點雙連通元件 一 點 點

點雙連通元件 連通 點(Articulation Point)

點雙連通元件的 :

1. 點 的 一 子 一 點雙連通子圖 2. 點 連的 的點雙連通元件

4.3 雙連通

點雙連通 雙連通 的

連 雙連通元件的 元件 連通

雙連通元件的 : 連通 一 雙連

通元件

4.4 Tarjan's algorithm in finding Articulation Point and Bridges

面 雙連通元件 點 點 ?

Tarjan 一 O(|V|+|E|)

low&df n 圖 一 DFS 圖 一 樹 上 back

edge 樹 DP 的 low df n

1.df n(v): v 在 樹的

2.low(v) = min(df n(v), df n(u), low(w)) : u v 點的 back edge 連 的 點 w v 在樹上的 子 點

X

(11)

4.5 Exercises グラフ理論

low&df n ? 一 一 Bridge 的 一

tree edge 的 點 的子樹 back edge

上 : 點 v vlow(v) 點u

df n(u) e(u, v) 一 Bridge

點 點 v 樹的 root 的 v 上的子 點

v 點 ; root 的 存在一 子 點u df n(v)≤low(u))(

u 上 連 v) v

SCC 的

4.5 Exercises

1. Kosaraju 的 2. Office (POI XIV)

一張 圖 G G 的 圖 連通 (|V| ≤105,|E| ≤106) 3. ATM (APIO 2009, HOJ 235)

一張 圖 點 ai 元 在 一 點 n 點 一 點 ?(|V|,|E| ≤ 5×105)

4. Blockade (POI XV, HOJ 68)

一 張 圖 G 點 點 連 通?(|V| ≤ 105,|E| ≤5×105)

5. (TOI 2009 p5)

一張 圖 一 點 一 點 點 的點

的 (O(|V|+|E|))

6. The Tournament (POI XI, HOJ 100)

一張 圖 G (vi, vj) E(G) i j 雙

在 一

(|V| ≤105,|E| ≤106) 7. 漢

N 漢 一 在 Q

的 一

一 的

XI

(12)

5.歐拉迴路 (路徑)與漢米頓迴路 (路徑) グラフ理論

5 歐拉迴路 (路徑) 與漢米頓迴路 (路徑)

5.1 歐拉迴路與歐拉路徑

歐拉 路 (Euler circuit) 在一張圖上的一

一 歐拉路徑(Euler trail) 一 一 的路徑

圖的歐拉迴路

一 點的 點 點 歐拉 路

上 點 點 歐拉路徑上 點 點 點 點

1. 一張圖 歐拉迴路 點 點

2. 一張圖 歐拉路徑 圖上 0 2 點 2 的

歐拉路徑的 點 點

在 圖上 歐拉路徑 (迴路) 的 (O(|V|+|E|))

XII

(13)

5.2 漢米頓迴路與漢米頓路徑 グラフ理論

Algorithm 5Eulerian Trial

1: procedureFind a Eulerian Trial(G)

2: if there is no odd node in Gthen

3: v any node in G

4: else

5: v an odd node in G

6: end if

7: DFS(v, G, S) Eulerian trial will be stored in a stack S

8: returnS

9: end procedure

10:

11: functionDFS(v, G,S)

12: for all uthat is adjacent to v do

13: if edge(v, u)is not visited then

14: mark edge(v, u)as visited

15: DFS(u, G,S)

16: push edge (v, u) into S

17: end if

18: end for

19: end function

圖 圖 :

1. 點 deg+(v) =deg(v) 存在歐拉迴路

2. 點v1, v2 deg+(v1) = deg(v1)+ 1, deg+(v2) =deg(v2)1 點 v deg+(v) = deg(v) 存在歐拉路徑

5.2 漢米頓迴路與漢米頓路徑

漢米頓路徑 (Hamilton trail) 圖上一 路徑 路徑 點;

漢米頓迴路 點 點 的漢米頓路徑

的 NP-Complete!! 的 壓

DP O(|V|2×2|V|)的

XIII

(14)

5.3 Exercises グラフ理論

5.3 Exercises

1.

一張圖 的漢米頓路徑

2. (99,100 )

一張 圖G 的一 的路徑

XIV

Referensi

Dokumen terkait

心理学概論 Introduction to Psychology 授業時間 春AB 木曜日1・2時限 一谷 幸男, 濱口 佳和, 綾部 早穂, 山田 一夫, 原田 悦子, 加藤 克紀, 佐藤 有耕, 相川 充 担当教員 履修年次 1 単位数 2.0 心理学の目的と方法、生物学的基礎、心理的発達、感覚、知覚、意識、学習、記憶、言語と

學習效率 性格傾向 管理與運用 圖跡 競爭力 彩跡 字跡 性格傾向 彩跡 多元智慧 性格傾向 圖跡 圖跡 成長檔案 學習效率 父母青少 適應度 彩跡 彩跡 字跡 年期責任 欠佳 父母養兒 圖跡 A因數 圖跡 育女認知 性格傾向 彩跡 RDQ 嬰幼兒 彩跡 圖跡.. ˙發展心理學 ˙多元智慧論、氣質理論 ˙佛洛伊德之精神動力分析理論 ˙馬斯洛之需求層次理論