1 / 21

Minimum Spanning Trees

Learn about the Minimum Spanning Trees algorithm and how to find the lowest-cost way to connect all points in a weighted graph. Explore Kruskal's and Prim's algorithms.

lidiam
Download Presentation

Minimum Spanning Trees

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Minimum Spanning Trees

  2. 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

  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.) Minimum Spanning Trees

  4. A High-Level Greedy Algorithm for MST A = ; while(T=(V,A) is not a spanning tree of G) { select a safe edge for A; } • The algorithm grows a MST one edge at a time and maintains that A is always a subset of some MST. • An edge issafeif 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 ? Minimum Spanning Trees

  5. b 3 4 f a 5 2 1 1 e 5 7 2 c 9 d 3 g h 4 MST 基本引理 Let V = V1 + V2, (V1,V2) = {uv | u  V1& v  V2 }.if xy  (V1,V2) and w(xy) = min {w(uv)| uv  (V1,V2)}, then xy is contained in a MST.   V2 V1 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| == n1 ) break; } • How to check that adding an edge does not create a cycle? Minimum Spanning Trees

  7. 3 4 5 2 1 1 4 7 2 9 3 4 Kruskal’s Algorithm (例 1/3) b f a e c d g h Minimum Spanning Trees

  8. 3 4 5 2 1 1 4 7 2 9 3 4 Kruskal’s Algorithm(例 2/3) b f a e c d g h Minimum Spanning Trees

  9. 3 4 5 2 1 1 4 7 2 9 3 4 Kruskal’s Algorithm(例 3/3) b f a e c d g h MST cost = 17 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| == 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. Minimum Spanning Trees

  11. Prim’s Algorithm(pseudo code 1) ALGORITHMPrim(G) // Input: A weighted connected graphG=(V,E) // Output: A MSTT=(V, A) VT  { v0} // Any vertex will do; A  ; for i  1to |V|1do find an edge xy  (VT, VVT) s.t. its weight is minimized among all edges in(VT, VVT); VT  VT { y} ; A  A { xy} ; Minimum Spanning Trees

  12. 3 4 5 2 1 1 4 7 2 9 3 4 Prim’s Algorithm (例 1/8) b f a e c d g h Minimum Spanning Trees

  13. 3 4 5 2 1 1 4 7 2 9 3 4 Prim’s Algorithm (例 2/8) b f a e c d g h Minimum Spanning Trees

  14. 3 4 5 2 1 1 4 7 2 9 3 4 Prim’s Algorithm (例 3/8) b f a e c d g h Minimum Spanning Trees

  15. 3 4 5 2 1 1 4 7 2 9 3 4 Prim’s Algorithm (例 4/8) b f a e c d g h Minimum Spanning Trees

  16. 3 4 5 2 1 1 4 7 2 9 3 4 Prim’s Algorithm (例 5/8) b f a e c d g h Minimum Spanning Trees

  17. 3 4 5 2 1 1 4 7 2 9 3 4 Prim’s Algorithm (例 6/8) b f a e c d g h Minimum Spanning Trees

  18. 3 4 5 2 1 1 4 7 2 9 3 4 Prim’s Algorithm (例 7/8) b f a e c d g h Minimum Spanning Trees

  19. 3 4 5 2 1 1 4 7 2 9 3 4 Prim’s Algorithm (例 8/8) b f a e c d g h MST cost = 17 Minimum Spanning Trees

  20. Prim’s Algorithm (pseudo code 2) Built a priority queue Q for V with key[u] =   uV; 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]); } } Minimum Spanning Trees

  21. 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 logm ) = O(m logn ) • Running time of Prim’s algorithm: • adjacency lists + (binary or ordinary) heap: O((m+n)logn ) = O(m logn ) • adjacency matrix + unsorted list: O(n2) • adjacency lists + Fibonacci heap: O(n logn + m) Minimum Spanning Trees

More Related