# Download - Week 3: Minimum Spanning Trees

PowerPoint Presentation

1Week 3: Minimum Spanning TreesDefinition of MSTGeneric MST algorithmKruskal's algorithmPrim's algorithm2Problem: Laying Telephone WireCentral office3Wiring: Nave ApproachCentral officeExpensive!4Wiring: Better ApproachCentral officeMinimize the total length of wire connecting the customers5Definition of MSTInput: 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.What is a Minimum-Cost Spanning TreeExample: The graph

Has 16 spanning trees. Some are:

The graph has two minimum-cost spanning trees, each with a cost of 6:

6All 16 of its Spanning TreesComplete GraphMinimum Spanning TreesThe Minimum Spanning Tree for a given graph is the Spanning Tree of minimum cost for that graph.572134213Complete GraphMinimum Spanning Tree9Application of MST: an exampleIn 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.

10Electronic Circuits:

11Electronic Circuits:

12Here is an example of a connected graph and its minimum spanning tree:abhcdefgi48791014422617118Notice that the tree is not unique: replacing (b,c) with (a,h) yields another spanning tree with the same minimum weight.13Growing 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 do3find an edge (u,v) that is safe for A4A:=A{(u,v)}5return A14V-Sabhcdefgi48791014422617118S 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.15Safe edgeWe 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.16Theorem 1Given: 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 Topt be a minimum spanning tree. (Blue) A --a subset of Topt 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 Topt crossing (S, V-S).(Green)We can replace (x, y) in Topt with (x, y) and get another tree Topt Since (x, y) is light , Topt is also optimal. 1211111117CorollaryGiven: 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 GA=(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 GA.Then, edge (u,v) is safe for A. (For Kruskals algorithm)

18The algorithms of Kruskal and PrimThe 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.Kruskals Algorithm1941232135342564410ABCDEFGHIJComplete Graph1425254344410163321232135342564410ABCDEFGHIJAABDBBBCDJCCEFDDHJEGFFGIGGIJHJJI2525434410163321232135342564410ABCDEFGHIJBBDJCCEFDDHJEGFFGIGGIJHJJI1AD4BC4ABSort Edges (in reality they are placed in a priority queue - not sorted - but sorting them makes the algorithm easier to visualize)2525434410163321232135342564410ABCDEFGHIJBBDJCCEFDDHJEGFFGIGGIJHJJI1AD4BC4ABAdd Edge2525434410163321232135342564410ABCDEFGHIJBBDJCCEFDDHJEGFFGIGGIJHJJI1AD4BC4ABAdd Edge2525434410163321232135342564410ABCDEFGHIJBBDJCCEFDDHJEGFFGIGGIJHJJI1AD4BC4ABAdd Edge2525434410163321232135342564410ABCDEFGHIJBBDJCCEFDDHJEGFFGIGGIJHJJI1AD4BC4ABAdd Edge2525434410163321232135342564410ABCDEFGHIJBBDJCCEFDDHJEGFFGIGGIJHJJI1AD4BC4ABAdd Edge2525434410163321232135342564410ABCDEFGHIJBBDJCCEFDDHJEGFFGIGGIJHJJI1AD4BC4ABCycleDont Add Edge2525434410163321232135342564410ABCDEFGHIJBBDJCCEFDDHJEGFFGIGGIJHJJI1AD4BC4ABAdd Edge2525434410163321232135342564410ABCDEFGHIJBBDJCCEFDDHJEGFFGIGGIJHJJI1AD4BC4ABAdd Edge2525434410163321232135342564410ABCDEFGHIJBBDJCCEFDDHJEGFFGIGGIJHJJI1AD4BC4ABAdd Edge2525434410163321232135342564410ABCDEFGHIJBBDJCCEFDDHJEGFFGIGGIJHJJI1AD4BC4ABCycleDont Add Edge2525434410163321232135342564410ABCDEFGHIJBBDJCCEFDDHJEGFFGIGGIJHJJI1AD4BC4ABAdd Edge412213324ABCDEFGHIJ41232135342564410ABCDEFGHIJMinimum Spanning TreeComplete Graph35Kruskal's algorithm(basic part)(Sort the edges in an increasing order)A:={}while E is not empty do { take an edge (u, v) that is shortest in E and delete it from E if u and v are in different components then add (u, v) to A }Note: each time a shortest edge in E is considered.36Kruskal's algorithmMST_KRUSKAL(G,w)1A:={}2for each vertex v in V[G]3do MAKE_SET(v)4sort the edges of E by nondecreasing weight w5for each edge (u,v) in E, in order by nondecreasing weight6do if FIND_SET(u) != FIND_SET(v)7thenA:=A{(u,v)}8UNION(u,v)return A37Disjoint-Set Keep a collection of sets S1, S2, .., Sk, Each Si is a set, e,g, S1={v1, v2, v8}.Three operationsMake-Set(x)-creates a new set whose only member is x.Union(x, y) unites the sets that contain x and y, say, Sx and Sy, 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. 38Our 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|)). 39abhcdefgi48791014422617118The 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.40abhcdefgi48791014422617118abhcdefgi4879101442261711841abhcdefgi48791014422617118abhcdefgi4879101442261711842abhcdefgi48791014422617118abhcdefgi4879101442261711843abhcdefgi48791014422617118abhcdefgi4879101442261711844abhcdefgi48791014422617118abhcdefgi48791014422617118Prims Algorithm4541232135342564410ABCDEFGHIJComplete Graph41232135342564410ABCDEFGHIJOld GraphNew Graph41232135342564410ABCDEFGHIJ41232135342564410ABCDEFGHIJOld GraphNew Graph41232135342564410ABCDEFGHIJ41232135342564410ABCDEFGHIJOld GraphNew Graph41232135342564410ABCDEFGHIJ41232135342564410ABCDEFGHIJOld GraphNew Graph41232135342564410ABCDEFGHIJ41232135342564410ABCDEFGHIJOld GraphNew Graph41232135342564410ABCDEFGHIJ41232135342564410ABCDEFGHIJOld GraphNew Graph41232135342564410ABCDEFGHIJ41232135342564410ABCDEFGHIJOld GraphNew Graph41232135342564410ABCDEFGHIJ41232135342564410ABCDEFGHIJOld GraphNew Graph41232135342564410ABCDEFGHIJ41232135342564410ABCDEFGHIJOld GraphNew Graph41232135342564410ABCDEFGHIJ41232135342564410ABCDEFGHIJOld GraphNew Graph41232135342564410ABCDEFGHIJ412213324ABCDEFGHIJComplete GraphMinimum Spanning Tree41232135342564410ABCDEFGHIJ58Prim's algorithm(basic part)MST_PRIM(G,w,r)A={}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 }

59Prim's algorithmMST_PRIM(G,w,r)1for each u in Q dokey[u]:=parent[u]:=NIL4 key[r]:=0; parent[r]=NIL;5QV[Q]6while Q!={} do7u:=EXTRACT_MIN(Q); if parent[u]Nil print (u, parent[u])8for each v in Adj[u] do9if v in Q and w(u,v)