minimum spanning trees

21
Minimum Spanning Trees

Upload: sinjin

Post on 09-Jan-2016

37 views

Category:

Documents


1 download

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

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)