• Tidak ada hasil yang ditemukan

Angrybird11 November25,2013

N/A
N/A
Protected

Academic year: 2023

Membagikan "Angrybird11 November25,2013"

Copied!
8
0
0

Teks penuh

(1)

培訓- 6 グラフ理論 II

グラフ理論 II

Angrybird11 November 25, 2013

1 Minimum Spanning Tree

Introduction

• 樹 (spanning tree): 點 樹

樹 樹

• 樹 (minimum spanning tree): 樹

樹 性

T G= (V, E) MST e(u, v)∈T T

T1, T2 T1 G1 = (V1, E1) MST T2 G2 = (V2, E2)

MST ( G1 G T1 ; G2 G , T2 )

G1T1 G

T ={e(u, v)} ∪T1∪T2 T

點 MST 屬性

MST dynamic programming greedy algorithm

T G= (V, E) MST A G

A V \A e(u, v) e(u, v)∈T

e(u, v) / T Tu v

A V \A e(u, v)

T

MST 切割屬性 A V \A T

選擇 T MST 貪

婪選擇屬性

I

(2)

1.1 Prim's Algorithm グラフ理論 II

1.1 Prim's Algorithm

Prim 點 樹 選擇 樹

樹 點 點 樹

greedy

Heap O(ElogV)

Algorithm 1Prim's Algorithm

1: procedurePrim_Approach_to_finding_a_MST(G, V,E)

2: T any v ∈V

3: Q←V \T

4: while=∅do

5: finde(u, v)∈E, u∈T, v∈Q that has the minimum w(u, v)

6: Q←Q\ {v}

7: T ←T ∪ {e(u, v)}

8: end while

9: returnT

10: end procedure

1.2 Kruskal's Algorithm

Kruskal

樹 樹

性 切割屬性

disjoint-set O(ElogE+E×α(V)) Algorithm 2Kruskal's Algorithm

1: procedureKruskal_Approach_to_finding_a_MST(G,V, E)

2: T

3: Q←E

4: while=∅do

5: e(u, v)extract_min Q

6: if u, v aren't in the same treethen

7: T ←T ∪ {e(u, v)}

8: end if

9: end while

10: return T

11: end procedure

II

(3)

2. Single Source Shortest Path グラフ理論 II

2 Single Source Shortest Path

Introduction

起點 點

2.1 BFS / DFS

( 樹)

2.2 Dijkstra's Algorithm

Dijkstra Prim Prim 選擇 樹 距離樹 點

Dijkstra 選擇 樹 距離起點 點

BFS Heap O(ElogV)

Dijkstra 性

Dijkstra Algorithm 3Dijkstra's Algorithm

1: procedureDijizztra_Approach_to_SSSP(G,V, E,s)

2: for allv ∈V do

3: d(v)← ∞

4: end for

5: d(s)0

6: Q←V

7: while=∅do

8: v ←Qextract the vertex which has the minimum distance

9: for alle(v, u)∈E do

10: d(u) = min{d(u), d(v) +w(v, u)}

11: end for

12: end while

13: return d

14: end procedure

III

(4)

2.3 Bellman-Ford Algorithm グラフ理論 II

2.3 Bellman-Ford Algorithm

Dijkstra

Bellman-Ford

(relax) d(v) 起點 v

u d(u)> d(v) +w(v, u) d(u) v

u

Dijkstra 點

|V| −1

|V| −1

Bellman-Ford O(V E)

Algorithm 4Bellman-Ford Algorithm

1: procedureBellman_Ford_Approach_to_SSSP(G,V, E,s)

2: for allv ∈V do

3: d(v)← ∞

4: end for

5: d(s)0

6: for i= 1 to |V| −1do

7: for alle(v, u)∈E do

8: if d(u)> d(v) +w(v, u)then

9: d(u)←d(v) +w(v, u)

10: end if

11: end for

12: if not relaxed any vertex in this roundthen

13: break

14: end if

15: end for

16: return d

17: end procedure

2.4 Shortest Path Fast Algorithm

SPFA Bellman-Ford 點

點 IV

(5)

3. All Pairs Shortest Path グラフ理論 II

( queue) 點

vu u u

Bellman-Ford 點

Dijkstra

Algorithm 5Shortest Path Fast Algorithm

1: procedureSPFA(G,V, E,s)

2: for allv ∈V do

3: d(v)← ∞

4: end for

5: d(s)0

6: Q←s

7: while=∅do

8: v extract Q

9: for all(v, u)∈E do

10: if d(u)> d(v) +w(v, u) then

11: d(u)←d(v) +w(v, u)

12: Q←Q∪ {u}

13: end if

14: end for

15: end while

16: return d

17: end procedure

3 All Pairs Shortest Path

Introduction

G 點 點

V Dijkstra Dijizztra 起 V Bellman-Ford O(V2E)

V

(6)

3.1 Floyd-Warshall Algorithm グラフ理論 II

3.1 Floyd-Warshall Algorithm

Floyd-Warshall dynamic programming dpi,j,k

ij{1. . . k} :

dpi,j,k =min{dpi,j,k1, dpi,k,k1+dpk,j,k1}

dp O(V3):

Algorithm 6Floyd-Warshall Algorithm

1: procedureFloyd_Warshall_Approach_to_APSP(G,V, E)

2: dp← ∞

3: for all(u, v)∈E do

4: dp(u, v)←w(u, v)

5: end for

6: for k = 1 to|V|do

7: for i= 1 to |V|do

8: for j = 1 to |V| do

9: dp(i, j)min{dp(i, j), dp(i, k) +dp(k, j)}

10: end for

11: end for

12: end for

13: return dp

14: end procedure

3.2 Johnson's Algorithm

|V| Dijkstra Floyd-

Warshall

Johnson Johnson

G Dijkstra 點

Johnson

h(v)

(u, v) w(u, v) =w(u, v) +h(u)−h(v)0 G

VI

(7)

4. Exercises グラフ理論 II

G 距離

d(t) =w(s, v1) +w(v1, v2) +. . .+w(vk, t)

=w(s, v1) +h(s)−h(v1) +w(v1, v2) +h(v1)−h(v2) +. . .+w(vk, t) +h(vk)−h(t)

=w(s, v1) +w(v1, v2) +. . .+w(vk, t) +h(s)−h(t)

=d(t) +h(s)−h(t)0

d d G

Dijkstra

h

Johnson w(u, v) +h(u)−h(v)0

h(v)≤h(u) +w(u, v) h(v) d(v)

d(v) Bellman-Ford

起點 d(v) 起點

d(v) Johnson 點 s

u e(s, u), w(s, u) = 0 點 d(v)

O(V E+V ×ElogV) Floyd-Warshall

4 Exercises

1. Prim Kruskal 性

2. <POJ 3723> Conscription

N M 10000

R (x, y, d) x y d

(10000−d) (N, M 104, R 105) 3. <APIO 2008> Roads

G= (V, E) 1 0 樹

K (|V| ≤2×105,|E| ≤106 )

4. <Codeforces 160D> Edges in MST

G= (V, E) 樹

樹 ( |V|,|E| ≤105 )

5. 樹

G= (V, E) 樹 (O(|V|2))

VII

(8)

4. Exercises グラフ理論 II

6. 樹

G= (V, E) e a(e), b(e) 樹 T

eT

a(e)

eT

b(e)

7. <NPSC 2010>

N 離 點(0,0) 點(1000,1000)

8. <IOI 2011> Crocodile

G= (V, E) 點vu

選 點

VIII

Referensi

Dokumen terkait

Peringkat idAAA Triple A untuk Obligasi Berkelanjutan II Tahap II Seri C Tahun 2017, Tahap III Seri C Tahun 2017 dan Tahap IV Seri C Tahun 2018 serta Obligasi Berkelanjutan III Tahap I

Peringkat idAA Double A untuk Obligasi Subordinasi III Seri A & Seri B Tahun 2018 dan Obligasi Subordinasi Berkelanjutan I Tahap I Tahun 2019 PT Bank CIMB Niaga Tbk, yang berlaku untuk