Download - minimum spanning trees Algorithm
![Page 1: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/1.jpg)
1
4.5. Minimum Spanning Trees
•Definition of MST•Generic MST algorithm•Kruskal's algorithm•Prim's algorithm
![Page 2: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/2.jpg)
2
Definition of MST
• Let G=(V,E) be a connected, undirected graph. • For each edge (u,v) in E, we have a weight w(u,v) specifying
the cost (length of edge) to connect u and v.• We wish to find a (acyclic) 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.
![Page 3: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/3.jpg)
3
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.
![Page 4: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/4.jpg)
4
Electronic Circuits:
![Page 5: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/5.jpg)
5
Electronic Circuits:
![Page 6: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/6.jpg)
6
Here is an example of a connected graph and its minimum spanning tree:
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
Notice that the tree is not unique: replacing (b,c) with (a,h) yields another spanning tree with the same minimum weight.
![Page 7: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/7.jpg)
7
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)1 A:={}2 while A does not form a spanning tree do3 find an edge (u,v) that is safe for A4 A:=A∪{(u,v)}5 return A
![Page 8: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/8.jpg)
8
How to find a 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.
![Page 9: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/9.jpg)
9
V-S↓
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
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.
![Page 10: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/10.jpg)
10
Theorem 1• 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 (S,V-S) be any cut of G such that for any edge (u, v) in
A, {u, v} S or {u, v} (V-S). • Let (u,v) be a light edge crossing (S,V-S).• Then, edge (u,v) is safe for A.• Proof: Let Topt be a minimum spanning tree.(Blue)• A --a subset of Topt and (u,v)-- a light edge crossing (S, V-S)• If (u,v) is NOT safe, then (u,v) is not in T. (See the red edge in Figure)• There MUST be another edge (u’, v’) in Topt crossing (S, V-S).(Green)• We can replace (u’,v’) in Topt with (u, v) and get another treeT’opt
• Since (u, v) is light (the shortest edge connect crossing (S, V-S), T’opt is also optimal.
1
2
11 1
1 1
1
![Page 11: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/11.jpg)
11
Corollary .2• 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 Kruskal’s algorithm)
![Page 12: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/12.jpg)
12
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.
![Page 13: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/13.jpg)
13
Kruskal's algorithm(basic part)1 (Sort the edges in an increasing order)2 A:={}3 while E is not empty do {3 take an edge (u, v) that is shortest in E and delete it from E4 if u and v are in different components then add (u, v) to A }Note: each time a shortest edge in E is considered.
![Page 14: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/14.jpg)
14
Kruskal's algorithm (Fun Part, not required)MST_KRUSKAL(G,w)1 A:={}2 for each vertex v in V[G]3 do MAKE_SET(v)4 sort the edges of E by nondecreasing weight w5 for each edge (u,v) in E, in order by nondecreasing
weight6 do if FIND_SET(u) != FIND_SET(v)7 then A:=A {(u,v)}∪8 UNION(u,v)9 return A(Disjoint set is discussed in Chapter 21, Page 498)
![Page 15: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/15.jpg)
15
Disjoint-Set (Chapter 21, Page 498)• Keep a collection of sets S1, S2, .., Sk,
– Each Si is a set, e,g, S1={v1, v2, v8}.• 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, 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.
![Page 16: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/16.jpg)
16
• 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|)). (The analysis is not required.)
![Page 17: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/17.jpg)
17
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
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.
![Page 18: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/18.jpg)
18
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
![Page 19: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/19.jpg)
19
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
![Page 20: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/20.jpg)
20
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
![Page 21: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/21.jpg)
21
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
![Page 22: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/22.jpg)
22
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
![Page 23: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/23.jpg)
23
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 }
![Page 24: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/24.jpg)
24
Prim's algorithmMST_PRIM(G,w,r)1 for each u in Q do2 key[u]:=∞3 parent[u]:=NIL4 key[r]:=0; parent[r]=NIL;5 QV[Q]6 while Q!={} do7 u:=EXTRACT_MIN(Q); if parent[u]Nil print (u,
parent[u])8 for each v in Adj[u] do9 if v in Q and w(u,v)<key[v]10 then parent[v]:=u11 key[v]:=w(u,v)
![Page 25: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/25.jpg)
25
• 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|).
![Page 26: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/26.jpg)
26
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
The execution of Prim's algorithm(moderate part)
the root vertex
![Page 27: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/27.jpg)
27
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
![Page 28: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/28.jpg)
28
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
![Page 29: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/29.jpg)
29
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
8
![Page 30: minimum spanning trees Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062302/58b8950d1a28ab3e3a8b6731/html5/thumbnails/30.jpg)
30
a
b
h
c d
e
fg
i
4
8 79
10
1442
2
6
1
711
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)