Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Week 3: Minimum Spanning Trees Definition of MST Generic MST algorithm Kruskal's algorithm Prim's algorithm.

Similar presentations


Presentation on theme: "1 Week 3: Minimum Spanning Trees Definition of MST Generic MST algorithm Kruskal's algorithm Prim's algorithm."— Presentation transcript:

1 1 Week 3: Minimum Spanning Trees Definition of MST Generic MST algorithm Kruskal's algorithm Prim's algorithm

2 2 Problem: Laying Telephone Wire Central office

3 3 Wiring: Naïve Approach Central office Expensive!

4 4 Wiring: Better Approach Central office Minimize the total length of wire connecting the customers

5 5 Definition of MST Input: connected, and undirected Graph G=(V,E) –Each edge (u,v) in E carries a weight w(u,v) Also referred to as cost (length of edge) to connect u and v. Output: A subset T of E that connects all of the vertices in V and whose total weight is minimized. Since the total weight is minimized, the subset T must be acyclic (no circuit). –Thus, T is a tree. We call it a spanning tree. The problem of determining the tree T is called the minimum-spanning-tree problem.

6 What is a Minimum-Cost Spanning Tree Example: The graph Has 16 spanning trees. Some are: The graph has two minimum-cost spanning trees, each with a cost of 6:

7 All 16 of its Spanning TreesComplete Graph

8 Minimum Spanning Trees The Minimum Spanning Tree for a given graph is the Spanning Tree of minimum cost for that graph. 5 7 2 1 3 4 2 1 3 Complete GraphMinimum Spanning Tree

9 9 Application of MST: an example In the design of electronic circuitry, it is often necessary to make a set of pins electrically equivalent by wiring them together. To interconnect n pins, we can use n-1 wires, each connecting two pins. We want to minimize the total length of the wires. Minimum Spanning Trees can be used to model this problem.

10 10 Electronic Circuits:

11 11 Electronic Circuits:

12 12 Here is an example of a connected graph and its minimum spanning tree: a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8 Notice that the tree is not unique: replacing (b,c) with (a,h) yields another spanning tree with the same minimum weight.

13 13 Growing a MST(Generic Algorithm) Set A is always a subset of some minimum spanning tree. This property is called the invariant Property. An edge (u, v) is a safe edge for A if adding the edge to A does not destroy the invariant. A safe edge is just the CORRECT edge to choose to add to T. GENERIC_MST(G,w) 1A:={} 2while A does not form a spanning tree do 3find an edge (u,v) that is safe for A 4A:=A ∪ {(u,v)} 5return A

14 14 V-S↓ a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8 S↑S↑ ↑ S ↓ V-S This figure shows a cut (S,V-S) of the graph. The edge (d,c) is the unique light edge crossing the cut.

15 15 Safe edge We need some definitions and a theorem. A cut (S,V-S) of an undirected graph G=(V,E) is a partition of V. An edge crosses the cut (S,V-S) if one of its endpoints is in S and the other is in V-S. An edge is a light edge crossing a cut if its weight is the minimum of any edge crossing the cut.

16 16 Theorem 1 Given: –G=(V, E) be a connected, undirected graph with a real-valued weight function w defined on E. –A be a subset of E that is included in some minimum spanning tree for G. –Let (S,V-S) be any cut of G such that for any edge e=(u, v) in A, {u, v}  S or {u, v}  (V-S). – Let (x, y) be a light edge crossing (S,V-S). Then, edge (x, y) is safe for A. Proof: Let T opt be a minimum spanning tree. (Blue) A --a subset of T opt and (x, y)-- a light edge crossing (S, V-S) If (x, y) is NOT safe, then (x, y) is not in T. –(See the red edge in Figure) There MUST be another edge (x’, y’) in T opt crossing (S, V-S).(Green) We can replace (x’, y’) in T opt with (x, y) and get another tree T’ opt Since (x, y) is light, T’ opt is also optimal. 1 2 1 11 11 1

17 17 Corollary Given: Let G=(V, E) be a connected, undirected graph with a real-valued weight function w defined on E. –Let A be a subset of E that is included in some minimum spanning tree for G. –Let C be a connected component (tree) in the forest G A =(V, A). –Let (u, v) be a light edge (shortest among all edges connecting C with others components) connecting C to some other component in G A. Then, edge (u,v) is safe for A. (For Kruskal’s algorithm)

18 18 The algorithms of Kruskal and Prim The two algorithms are elaborations of the generic algorithm. They each use a specific rule to determine a safe edge in line 3 of GENERIC_MST. In Kruskal's algorithm, –The set A is a forest. –The safe edge added to A is always a least-weight edge in the graph that connects two distinct components. In Prim's algorithm, –The set A forms a single tree. –The safe edge added to A is always a least-weight edge connecting the tree to a vertex not in the tree.

19 Kruskal’s Algorithm 19

20 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J Complete Graph

21 1 4 2 5 2 5 4 3 4 4 4 10 1 6 3 3 2 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J AABD BB B CD JC C E F D DH JEG FFGI GGIJ HJJI

22 2 5 2 5 4 3 4 4 1 6 3 3 2 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J B B D J C C E F D DH J EG F F G I G G I J HJ JI 1 AD 4 BC 4 AB Sort Edges (in reality they are placed in a priority queue - not sorted - but sorting them makes the algorithm easier to visualize)

23 2 5 2 5 4 3 4 4 10 1 6 3 3 2 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J B B D J C C E F D DH J EG F F G I G G I J HJ JI 1 AD 4 BC 4 AB Add Edge

24 2 5 2 5 4 3 4 4 10 1 6 3 3 2 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J B B D J C C E F D DH J EG F F G I G G I J HJ JI 1 AD 4 BC 4 AB Add Edge

25 2 5 2 5 4 3 4 4 10 1 6 3 3 2 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J B B D J C C E F D DH J EG F F G I G G I J HJ JI 1 AD 4 BC 4 AB Add Edge

26 2 5 2 5 4 3 4 4 10 1 6 3 3 2 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J B B D J C C E F D DH J EG F F G I G G I J HJ JI 1 AD 4 BC 4 AB Add Edge

27 2 5 2 5 4 3 4 4 10 1 6 3 3 2 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J B B D J C C E F D DH J EG F F G I G G I J HJ JI 1 AD 4 BC 4 AB Add Edge

28 2 5 2 5 4 3 4 4 10 1 6 3 3 2 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J B B D J C C E F D DH J EG F F G I G G I J HJ JI 1 AD 4 BC 4 AB Cycle Don’t Add Edge

29 2 5 2 5 4 3 4 4 10 1 6 3 3 2 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J B B D J C C E F D DH J EG F F G I G G I J HJ JI 1 AD 4 BC 4 AB Add Edge

30 2 5 2 5 4 3 4 4 10 1 6 3 3 2 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J B B D J C C E F D DH J EG F F G I G G I J HJ JI 1 AD 4 BC 4 AB Add Edge

31 2 5 2 5 4 3 4 4 10 1 6 3 3 2 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J B B D J C C E F D DH J EG F F G I G G I J HJ JI 1 AD 4 BC 4 AB Add Edge

32 2 5 2 5 4 3 4 4 10 1 6 3 3 2 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J B B D J C C E F D DH J EG F F G I G G I J HJ JI 1 AD 4 BC 4 AB Cycle Don’t Add Edge

33 2 5 2 5 4 3 4 4 10 1 6 3 3 2 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J B B D J C C E F D DH J EG F F G I G G I J HJ JI 1 AD 4 BC 4 AB Add Edge

34 4 1 2 2 1 3 3 2 4 A BC D E F G H I J 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J Minimum Spanning TreeComplete Graph

35 35 Kruskal's algorithm (basic part) 1(Sort the edges in an increasing order) 2A:={} 3while E is not empty do { 3 take an edge (u, v) that is shortest in E and delete it from E 4 if u and v are in different components then add (u, v) to A } Note: each time a shortest edge in E is considered.

36 36 Kruskal's algorithm MST_KRUSKAL(G,w) 1A:={} 2for each vertex v in V[G] 3do MAKE_SET(v) 4sort the edges of E by nondecreasing weight w 5for each edge (u,v) in E, in order by nondecreasing weight 6do if FIND_SET(u) != FIND_SET(v) 7thenA:=A ∪ {(u,v)} 8UNION(u,v) 9return A

37 37 Disjoint-Set Keep a collection of sets S 1, S 2,.., S k, –Each S i is a set, e,g, S 1 ={v 1, v 2, v 8 }. Three operations –Make-Set(x)-creates a new set whose only member is x. –Union(x, y) –unites the sets that contain x and y, say, S x and S y, into a new set that is the union of the two sets. –Find-Set(x)-returns a pointer to the representative of the set containing x. –Each operation takes O(log n) time.

38 38 Our implementation uses a disjoint-set data structure to maintain several disjoint sets of elements. Each set contains the vertices in a tree of the current forest. The operation FIND_SET(u) returns a representative element from the set that contains u. Thus, we can determine whether two vertices u and v belong to the same tree by testing whether FIND_SET(u) equals FIND_SET(v). The combining of trees is accomplished by the UNION procedure. Running time O(|E| lg (|E|)).

39 39 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8 The execution of Kruskal's algorithm (Moderate part) The edges are considered by the algorithm in sorted order by weight. The edge under consideration at each step is shown with a red weight number.

40 40 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8

41 41 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8

42 42 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8

43 43 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8

44 44 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8

45 Prim’s Algorithm 45

46 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J Complete Graph

47 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J Old GraphNew Graph 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J

48 4 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J Old GraphNew Graph 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J

49 4 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J Old GraphNew Graph 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J

50 4 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J Old GraphNew Graph 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J

51 4 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J Old GraphNew Graph 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J

52 4 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J Old GraphNew Graph 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J

53 4 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J Old GraphNew Graph 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J

54 4 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J Old GraphNew Graph 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J

55 4 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J Old GraphNew Graph 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J

56 4 1 2 3 2 1 3 5 3 4 2 56 4 4 A BC D E F G H I J Old GraphNew Graph 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J

57 4 1 2 2 1 3 3 2 4 A BC D E F G H I J Complete GraphMinimum Spanning Tree 4 1 2 3 2 1 3 5 3 4 2 56 4 4 10 A BC D E F G H I J

58 58 Prim's algorithm (basic part) MST_PRIM(G,w,r) 1.A={} 2.S:={r} (r is an arbitrary node in V) 3. Q=V-{r}; 4. while Q is not empty do { 5 take an edge (u, v) such that (1) u  S and v  Q (v  S ) and (u, v) is the shortest edge satisfying (1) 6 add (u, v) to A, add v to S and delete v from Q }

59 59 Prim's algorithm MST_PRIM(G,w,r) 1for each u in Q do 2key[u]:=∞ 3parent[u]:=NIL 4 key[r]:=0; parent[r]=NIL; 5Q  V[Q] 6while Q!={} do 7u:=EXTRACT_MIN(Q); if parent[u]  Nil print (u, parent[u]) 8for each v in Adj[u] do 9if v in Q and w(u,v)<key[v] 10thenparent[v]:=u 11key[v]:=w(u,v)

60 60 priority queue Q: three important operations –EXTRACT-MIN(Q) –takes log (n) times if there are n items in Q. –Insert an element (key u) into Q- takes log(n) time. –Update(u, k): update the key value of element u into k. It takes Olog (n) time for adaptable priority queue (heap).

61 61 Grow the minimum spanning tree from the root vertex r. Q is a priority queue, holding all vertices that are not in the tree now. key[v] is the minimum weight of any edge connecting v to a vertex in the tree. parent[v] names the parent of v in the tree. When the algorithm terminates, Q is empty; the minimum spanning tree A for G is thus A={(v,parent[v]):v ∈ V-{r}}. Running time: O(||E||lg |V|).

62 62 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8 The execution of Prim's algorithm (basic part) the root vertex

63 63 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8

64 64 a b h cd e fg i 4 879 10 14 4 2 2 6 1 7 11 8 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8

65 65 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8

66 66 a b h cd e fg i 4 87 9 10 14 4 2 2 6 1 7 11 8 Bottleneck spanning tree: A spanning tree of G whose largest edge weight is minimum over all spanning trees of G. The value of the bottleneck spanning tree is the weight of the maximum-weight edge in T. Theorem: A minimum spanning tree is also a bottleneck spanning tree. (Challenge problem)


Download ppt "1 Week 3: Minimum Spanning Trees Definition of MST Generic MST algorithm Kruskal's algorithm Prim's algorithm."

Similar presentations


Ads by Google