Download presentation
Presentation is loading. Please wait.
1
Minimum Spanning Trees
2
2 有權重的圖 * 很多圖形演算法的問題都假設其輸入為有權重 的圖形. * 這裡我們假設權重都定在邊上面, 且權重值都 為正, 例如請參考上圖所顯示的圖形. a b c d e f gh 3 5 1 1 9 5 4 7 3 2 2 4 G=(V,E)
3
Minimum Spanning Trees3 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 = n n-2.)
4
Minimum Spanning Trees4 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 ; }
5
Minimum Spanning Trees5 MST 基本引理 Let V = V 1 + V 2, (V 1,V 2 ) = {uv | u V 1 & v V 2 }. if xy (V 1,V 2 ) and w(xy) = min {w(uv)| uv (V 1,V 2 )}, then xy is contained in a MST. a b c d e f gh 3 5 1 1 9 5 4 7 3 2 2 4 V1V1 V2V2
6
Minimum Spanning Trees6 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| == n 1 ) break; } *How to check that adding an edge does not create a cycle?
7
Minimum Spanning Trees7 Kruskal’s Algorithm ( 例 1/3) a b c d e f g h 3 5 1 1 9 4 4 7 3 2 2 4
8
Minimum Spanning Trees8 Kruskal’s Algorithm ( 例 2/3) a b c d e f g h 3 5 1 1 9 4 4 7 3 2 2 4
9
Minimum Spanning Trees9 Kruskal’s Algorithm ( 例 3/3) a b c d e f g h 3 5 1 1 9 4 4 7 3 2 2 4 MST cost = 17
10
Minimum Spanning Trees10 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| == n 1 ) break; } find(x, y) = true iff. x and y are in the same set union(x, y): unite the two sets that contain x and y, respectively. find(x, y) = true iff. x and y are in the same set union(x, y): unite the two sets that contain x and y, respectively.
11
Minimum Spanning Trees11 Prim’s Algorithm (pseudo code 1) ALGORITHM Prim(G) // Input: A weighted connected graph G=(V,E) // Output: A MST T=(V, A) V T { v 0 } // Any vertex will do; A ; for i 1 to |V| 1 do find an edge xy ( V T, V V T ) s.t. its weight is minimized among all edges in ( V T, V V T ); V T V T { y } ; A A { xy } ;
12
Minimum Spanning Trees12 Prim’s Algorithm ( 例 1/8) a b c d e f g h 3 5 1 1 9 4 4 7 3 2 2 4
13
Minimum Spanning Trees13 Prim’s Algorithm ( 例 2/8) a b c d e f g h 3 5 1 1 9 4 4 7 3 2 2 4
14
Minimum Spanning Trees14 Prim’s Algorithm ( 例 3/8) a b c d e f g h 3 5 1 1 9 4 4 7 3 2 2 4
15
Minimum Spanning Trees15 Prim’s Algorithm ( 例 4/8) a b c d e f g h 3 5 1 1 9 4 4 7 3 2 2 4
16
Minimum Spanning Trees16 Prim’s Algorithm ( 例 5/8) a b c d e f g h 3 5 1 1 9 4 4 7 3 2 2 4
17
Minimum Spanning Trees17 Prim’s Algorithm ( 例 6/8) a b c d e f g h 3 5 1 1 9 4 4 7 3 2 2 4
18
Minimum Spanning Trees18 Prim’s Algorithm ( 例 7/8) a b c d e f g h 3 5 1 1 9 4 4 7 3 2 2 4
19
Minimum Spanning Trees19 Prim’s Algorithm ( 例 8/8) a b c d e f g h 3 5 1 1 9 4 4 7 3 2 2 4 MST cost = 17
20
Minimum Spanning Trees20 Prim’s Algorithm (pseudo code 2) Built a priority queue Q for V with key[u] = u V ; key[v 0 ] = 0; [v 0 ] = 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] ); }
21
Minimum Spanning Trees21 Minimum Spanning Tree ( 分析 ) *Let n = |V( G)|, m =|E( G)|. *Execution time of Kruskal’s algorithm: (use union-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(n 2 ) ]adjacency lists + Fibonacci heap: O(n log n + m)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.