Minimum Spanning Trees

21
Minimum Spanning Trees

description

Minimum Spanning Trees. b. 3. 4. f. a. 5. 2. 1. 1. e. 5. 7. 2. c. 9. d. 3. g. h. 4. 有權重的圖. G =( V , E ). 很多圖形演算法的問題都假設其輸入為有權重的圖形 . 這裡我們假設權重都定在邊上面 , 且權重值都為正 , 例如請參考上圖所顯示的圖形. Minimum Spanning Trees (MST). - PowerPoint PPT Presentation

Transcript of Minimum Spanning Trees

Page 1: Minimum Spanning Trees

Minimum Spanning Trees

Page 2: Minimum Spanning Trees

Minimum Spanning Trees 2

有權重的圖

很多圖形演算法的問題都假設其輸入為有權重的圖形 .

這裡我們假設權重都定在邊上面 , 且權重值都為正 , 例如請參考上圖所顯示的圖形 .

ab

c d

e

f

g h

35

1 1

95

4

7

32

2

4

G=(V,E)

Page 3: Minimum Spanning Trees

Minimum Spanning Trees 3

Minimum Spanning Trees (MST)

Find the lowest-cost way to connect all of the points (the cost is the sum of weights of the selected edges).

The solution must be a tree. (Why ?)

A spanning tree : a subgraph that is a tree and connect all of the points.

A graph may contains exponential number of spanning trees.

(e.g. # spanning trees of a complete graph = nn-2.)

Page 4: Minimum Spanning Trees

Minimum Spanning Trees 4

A High-Level Greedy Algorithm for MST

The algorithm grows a MST one edge at a time and maintains that A is always a subset of some MST.

An edge is safe if it can be safely added to without destroying the invariant.

How to check that T is a spanning tree of G ? How to select a “safe edge” edge ?

A = ; while(T=(V,A) is not a spanning tree of G) { select a safe edge for A ; }

Page 5: Minimum Spanning Trees

Minimum Spanning Trees 5

MST 基本引理Let V = V1 + V2, (V1,V2 ) = {uv | u V1& v V2 }.

if xy (V1,V2 ) and w(xy) = min {w(uv)| uv (V

1,V2 )}, then xy is contained in a MST.

ab

c d

e

f

g h

35

1 1

95

4

7

32

2

4

V1 V2

Page 6: Minimum Spanning Trees

Minimum Spanning Trees 6

Kruskal’s Algorithm (pseudo code 1)

A= ;for( each edge in order by nondecreasing weight ) if( adding the edge to A doesn't create a cycle ){ add it to A; if( | A| == n1 ) break; }

How to check that adding an edge does not create a

cycle?

Page 7: Minimum Spanning Trees

Minimum Spanning Trees 7

Kruskal’s Algorithm ( 例 1/3)

ab

cd

e

f

g h

35

1 1

94

4

7

32

2

4

Page 8: Minimum Spanning Trees

Minimum Spanning Trees 8

Kruskal’s Algorithm ( 例 2/3)

ab

cd

e

f

g h

35

1 1

94

4

7

32

2

4

Page 9: Minimum Spanning Trees

Minimum Spanning Trees 9

Kruskal’s Algorithm ( 例 3/3)

ab

cd

e

f

g h

35

1 1

94

4

7

32

2

4

MST cost = 17MST cost = 17

Page 10: Minimum Spanning Trees

Minimum Spanning Trees 10

Kruskal’s Algorithm (pseudo code 2)

A = ; initial(n); // for each node x construct a set {x}for( each edge xy in order by nondecreasing weight)

if ( ! find(x, y) ) { union(x, y); add xy to A; if( | A| == n1 ) break; }

find(x, y) = true iff. x and y are in the same setunion(x, y): unite the two sets that contain x an

d y, respectively.

find(x, y) = true iff. x and y are in the same setunion(x, y): unite the two sets that contain x an

d y, respectively.

Page 11: Minimum Spanning Trees

Minimum Spanning Trees 11

Prim’s Algorithm (pseudo code 1)

ALGORITHM Prim(G)// Input: A weighted connected graph G=(V,E)// Output: A MST T=(V, A) VT { v0 } // Any vertex will do; A ; for i 1 to |V|1 do find an edge xy (VT, VVT ) s.t. its weight is minimized among all edges in (VT, VVT ); VT VT { y } ; A A { xy } ;

Page 12: Minimum Spanning Trees

Minimum Spanning Trees 12

Prim’s Algorithm ( 例 1/8)

ab

cd

e

f

g h

35

1 1

94

4

7

32

2

4

Page 13: Minimum Spanning Trees

Minimum Spanning Trees 13

Prim’s Algorithm ( 例 2/8)

ab

cd

e

f

g h

35

1 1

94

4

7

32

2

4

Page 14: Minimum Spanning Trees

Minimum Spanning Trees 14

Prim’s Algorithm ( 例 3/8)

ab

cd

e

f

g h

35

1 1

94

4

7

32

2

4

Page 15: Minimum Spanning Trees

Minimum Spanning Trees 15

Prim’s Algorithm ( 例 4/8)

ab

cd

e

f

g h

35

1 1

94

4

7

32

2

4

Page 16: Minimum Spanning Trees

Minimum Spanning Trees 16

Prim’s Algorithm ( 例 5/8)

ab

cd

e

f

g h

35

1 1

94

4

7

32

2

4

Page 17: Minimum Spanning Trees

Minimum Spanning Trees 17

Prim’s Algorithm ( 例 6/8)

ab

cd

e

f

g h

35

1 1

94

4

7

32

2

4

Page 18: Minimum Spanning Trees

Minimum Spanning Trees 18

Prim’s Algorithm ( 例 7/8)

ab

cd

e

f

g h

35

1 1

94

4

7

32

2

4

Page 19: Minimum Spanning Trees

Minimum Spanning Trees 19

Prim’s Algorithm ( 例 8/8)

ab

cd

e

f

g h

35

1 1

94

4

7

32

2

4

MST cost = 17MST cost = 17

Page 20: Minimum Spanning Trees

Minimum Spanning Trees 20

Prim’s Algorithm (pseudo code 2)

Built a priority queue Q for V with key[u] = uV;key[v0] = 0; [v0] = Nil; // Any vertex will do While (Q ) { u = Extract-Min(Q); for( each v Adj(u) ) if (v Q && w(u, v) < key[v] ) { [v] = u; key[v] = w(u, v); Change-Priority(Q, v, key[v]); }}

Page 21: Minimum Spanning Trees

Minimum Spanning Trees 21

Minimum Spanning Tree ( 分析 )

Let n = |V( G)|, m =|E( G)|. Execution time of Kruskal’s algorithm: (use unio

n-find operations, or disjoint-set unions)

O(m log m ) = O(m log n )

Running time of Prim’s algorithm: adjacency lists + (binary or ordinary) heap:

O((m+n) log n ) = O(m log n )

adjacency matrix + unsorted list: O(n2)

adjacency lists + Fibonacci heap:O(n log n + m)