COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST...
Transcript of COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST...
![Page 1: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/1.jpg)
COT 6405 Introduction to Theory of Algorithms
Topic 15. Minimum Spanning Tree
11/10/2015 1
![Page 2: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/2.jpg)
Minimum Spanning Tree
• Problem:
– given a connected, undirected, weighted graph G = (V, E)
– find a spanning tree using edges that connects all nodes with a minimal total weight w(T)= SUM(w[u,v])
• w[u,v] is the weight of edge (u,v)
• Objectives: we will learn
– Generic MST
– Kruskal’s algorithm
– Prim’s algorithm2
![Page 3: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/3.jpg)
Motivation Example
• Problem definition– A town has a set of houses and a set of roads
– Each road connects 2 and only 2 houses
– A road connecting houses u and v has a repair cost w(u, v)
• Goal: Repair enough (and no more) roads such that
– everyone stays connected: can reach every house from all other houses, and
– The total repair cost is minimum
3
![Page 4: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/4.jpg)
Model as a graph• The problem can be modeled as a graph
– Undirected weighted graph G = (V, E).
– Weight w(u, v) on each edge (u, v) ∈ E.
• Find T ⊆ E , such that
– T connects all vertices (T is a spanning tree)
–
• A spanning tree whose weight is minimum over all spanning trees is called a minimum spanning tree, MST. 4
![Page 5: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/5.jpg)
Growing a minimum spanning tree
• Building up the solution
– We will build a set A of edges
– Initially, A has no edges.
– As we add edges to A, maintain a loop invariant
• Loop invariant: A is a subset of some MST
– Add only edges that maintain the invariant
– Definition: If A is a subset of some MST, an edge (u, v) is safe for A, if and only if A ∪ {(u, v)} is also a subset of some MST
– So we will add only safe edges5
![Page 6: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/6.jpg)
Generic MST algorithm
6
![Page 7: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/7.jpg)
Correctness
• Use the loop invariant to show that this generic algorithm works.
– Initialization: The empty set trivially satisfies the loop invariant.
– Maintenance: Since we add only safe edges, A remains a subset of some MST.
– Termination: All edges added to A are in an MST, so A is a spanning tree that is also an MST, when we stop
7
![Page 8: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/8.jpg)
Definitions• Let S ⊂ V (vertex set); A ⊆ E (edge set).
• A cut (S, V −S) is a partition of vertices into two disjoint sets: S and V-S
• Edge (u, v) ∈ E crosses the cut (S, V−S) if one endpoint is in S and the other is in V−S.
• A cut respects edge set A, if and only if no edge in A crosses the cut.
• An edge is a light edge crossing a cut, if and only if its weight is minimum over all edges crossing the cut. – For a given cut, there can be > 1 light edge crossing it.
9
![Page 9: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/9.jpg)
Theorem• Let edge set A be a subset of some MST
• (S, V −S) be a cut that respects edge set A
– No edges in A crosses the cut
• (u, v) be a light edge crossing cut (S, V −S).
• Then, (u, v) is safe for A.
• Proof
– Let tree T be an MST that includes edge set A
– If T contains edge (u, v), done.
– So, now assume that T does not contain edge (u, v)
– We’ll construct a different MST T’ that includes A ∪{(u, v)}. 10
![Page 10: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/10.jpg)
Proof• Recall: a tree has a unique path between each pair of
vertices (why?).
– Since T is an MST, it contains a unique path p between u and v.
– Path p must cross the cut (S, V−S) once
– Let (x, y) be an edge of p that crosses the cut
• As (u,v) is a light edge, we have w(u,v) ≤ w(x,y)
• Since the cut respects A, edge (x, y) is not in A• We can build tree T ’ from T
– Remove (x, y): Breaks T into two components.– Reconnects them with edge (u,v) T’
11
![Page 11: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/11.jpg)
Proof • Except for the dashed edge (u, v) , all edges shown are in T
• Shaded edges are the path p
12
![Page 12: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/12.jpg)
Proof• So T’ = T − {(x, y)} ∪ {(u, v)}.
• T’ is another spanning tree
• w(T’) = w(T) − w(x, y) + w(u, v) ≤ w(T) – since w(u, v) ≤ w(x, y)
– Since (1) T’ is a spanning tree, (2) w(T’) ≤ w(T), and (3) T is
an MST T’ must be an MST
• Need to show that A ∪ {(u, v)} ⊂ T’
– A ⊆ T and (x, y) A ⇒ A ⊆ T − {(x, y)}
– A ∪ {(u, v)} ⊆ T − {(x, y)} ∪ {(u, v)} = T’
– Since T ’ is an MST, edge (u, v) is safe for A.
13
![Page 13: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/13.jpg)
MST: optimal substructure
• MSTs satisfy the optimal substructure property: an optimal tree is composed of optimal subtrees
– Let T be an MST of G with an edge (u,v) in the middle
– Removing (u,v) partitions T into two trees T1 and T2
– Claim: T1 is an MST of G1 = (V1,E1), and T2 is an MST of G2 = (V2,E2)
• Proof: w(T) = w(u, v) + w(T1) + w(T2)(There can’t be a better tree than T1 or T2, or T would be suboptimal)
14
![Page 14: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/14.jpg)
Corollary
• If C = (VC, EC) is a connected component in the forest GA = (V, A)
• (u, v) is a light edge connecting C to some other component in GA
– i.e.,(u,v) is a light edge crossing the cut (VC,V−VC)
• Then, edge (u, v) is safe for A.
• Proof: Set S = VC in the theorem.
– This naturally leads to the Kruskal’s algorithm
16
![Page 15: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/15.jpg)
Kruskal’s algorithm
• Starts with each vertex being its own component
• Repeatedly merges two components into one by choosing the light edge that connects them
• Scans the set of edges in monotonically increasing order by weight
• Uses a disjoint-set data structure to determine whether an edge connects vertices in different components.
11/10/2015 17
![Page 16: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/16.jpg)
Disjoint Sets Data Structure
• A disjoint-set is a collection C ={S1, S2,…, Sk} of distinct dynamic sets
• Each set is identified by a member of the set, called representative.
• Disjoint set operations:
– MAKE-SET(x): create a new set with only x• assume x is not already in some other set.
– UNION(x,y): combine the two sets containing x and y into one new set. • A new representative is selected.
– FIND-SET(x): return the representative of the set containing x.
11/10/2015 18
![Page 17: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/17.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
1725
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}19
![Page 18: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/18.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
1725
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}20
![Page 19: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/19.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
1725
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}21
![Page 20: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/20.jpg)
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v) // same tree?
A = A U {{u,v}};
Union(u, v);
}
Kruskal’s Algorithm
2 19
9
1?
5
13
1725
148
21
Run the algorithm:
22
![Page 21: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/21.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
1725
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}23
![Page 22: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/22.jpg)
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}
Kruskal’s Algorithm
2? 19
9
1
5
13
1725
148
21
Run the algorithm:
24
![Page 23: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/23.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
1725
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}25
![Page 24: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/24.jpg)
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}
Kruskal’s Algorithm
2 19
9
1
5?
13
1725
148
21
Run the algorithm:
26
![Page 25: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/25.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
1725
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}27
![Page 26: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/26.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
1725
148?
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}28
![Page 27: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/27.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
1725
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}29
![Page 28: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/28.jpg)
Kruskal’s Algorithm
2 19
9?
1
5
13
1725
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}30
![Page 29: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/29.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
1725
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}31
![Page 30: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/30.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13?
1725
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}32
![Page 31: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/31.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
1725
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}33
![Page 32: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/32.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
1725
14?8
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}34
![Page 33: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/33.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
1725
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}35
![Page 34: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/34.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
17?25
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}36
![Page 35: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/35.jpg)
Kruskal’s Algorithm
2 19?
9
1
5
13
1725
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}37
![Page 36: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/36.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
1725
148
21?
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}38
![Page 37: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/37.jpg)
Kruskal’s Algorithm
2 19
9
1
5
13
1725?
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}39
![Page 38: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/38.jpg)
Kruskal’s Algorithm: Done
2 19
9
1
5
13
1725
148
21
Run the algorithm:
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}40
![Page 39: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/39.jpg)
Correctness Of Kruskal’s Algorithm
• Sketch of a proof: this algorithm produces an MST of T
– Assume algorithm is wrong: result is not an MST
– Then, algorithm adds a wrong edge at some point
– If it adds a wrong edge, there must be another lower weight edge
– But algorithm chooses lowest weight edge at each step. Contradiction
41
![Page 40: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/40.jpg)
Kruskal(G, w)
{
A = ;
for each v G.V
Make-Set(v);
sort G.E by non-decreasing order by weight w
for each (u,v) G.E (in sorted order)
if FindSet(u) FindSet(v)
A = A U {{u,v}};
Union(u, v);
}
Kruskal’s Algorithm
What will affect the running time?
Initialize A O(1)
1st FOR loop |V| MakeSet() calls
Sort O(E lgE)
FINDSET()/Union() O(E) calls
42
![Page 41: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/41.jpg)
Kruskal’s Algorithm: Running Time
• Initialize A: O(1)
• First for loop: |V| MAKE-SETs
• Sort E: O(E lg E)
• Second for loop: O(E) FIND-SETs and UNIONs
• O(V) +O (E α(V)) + O(E lg E) – Since G is connected, |E| ≥ |V|−1⇒ O(E α(V)) + O(E lg E)
– α(|V|) = O(lg V) = O(lg E)
– Therefore, the total time is O(E lg E)
– |E| ≤ |V|2 ⇒ lg |E| = O(2 lg V) = O(lg V)
– Therefore, O(E lg V) time43
![Page 42: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/42.jpg)
Prim’s algorithm• Build a tree A
– Starts from an arbitrary “root” r.
– At each step, find a light edge crossing the cut (VA, V − VA), where VA = vertices that A is incident on.
– Add this light edge to A.
• GREEDY CHOICE: add min weight to A
44
![Page 43: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/43.jpg)
How to find the light edge quickly?
• Use a priority queue Q
– Each object is a vertex in V−VA
– Key of v is the minimum weight of any edge (u, v), where u ∈ VA
– the vertex returned by EXTRACT-MIN is v
• such that there exists u ∈ VA, and edge (u, v) is a light edge crossing (VA, V−VA)
• Key of v is ∞, if v is not adjacent to any vertices in VA
45
![Page 44: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/44.jpg)
How to find the light edge quickly?
• The edges of A form a rooted tree with root r
– r is given as an input to the algorithm, but it can be any vertex
– Each vertex knows its parent in the tree by the attribute v.π = parent of v
– π[v] = NIL, if v = r or v has no parent.
– As the algorithm progresses, A= {(v, v.π) :v ∈V − {r} − Q }
46
![Page 45: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/45.jpg)
Prim’s Algorithm
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key )
v. = u
v.key = w(u,v)
47
![Page 46: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/46.jpg)
Prim’s Algorithm
1410
3
6 45
2
9
15
8
Run on example graph
48
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
![Page 47: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/47.jpg)
Prim’s Algorithm
1410
3
6 45
2
9
15
8
Run on example graph
49
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
![Page 48: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/48.jpg)
Prim’s Algorithm
0
1410
3
6 45
2
9
15
8
Pick a start vertex r
r
50
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
![Page 49: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/49.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
0
1410
3
6 45
2
9
15
8
Red vertices have been removed from Q
u
51
![Page 50: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/50.jpg)
Prim’s Algorithm
6 45 9
52
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
0
3
1410
3
215
8
Red arrows indicate parent pointers
u
![Page 51: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/51.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
14
0
3
1410
3
6 45
2
9
15
8
u
53
![Page 52: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/52.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
14
0
3
1410
3
6 45
2
9
15
8u
54
![Page 53: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/53.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
14
0 8
3
1410
3
6 45
2
9
15
8u
55
![Page 54: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/54.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
10
0 8
3
1410
3
6 45
2
9
15
8u
56
![Page 55: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/55.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
10
0 8
3
1410
3
6 45
2
9
15
8u
57
![Page 56: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/56.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
10 2
0 8
3
1410
3
6 45
2
9
15
8u
58
![Page 57: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/57.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
10 2
0 8 15
3
1410
3
6 45
2
9
15
8u
59
![Page 58: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/58.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
10 2
0 8 15
3
1410
3
6 45
2
9
15
8
u
60
![Page 59: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/59.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
10 2 9
0 8 15
3
1410
3
6 45
2
9
15
8
u
61
![Page 60: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/60.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
10 2 9
0 8 15
3
4
1410
3
6 45
2
9
15
8
u
62
![Page 61: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/61.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
5 2 9
0 8 15
3
4
1410
3
6 45
2
9
15
8
u
63
![Page 62: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/62.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
5 2 9
0 8 15
3
4
1410
3
6 45
2
9
15
8
u
64
![Page 63: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/63.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
5 2 9
0 8 15
3
4
1410
3
6 45
2
9
15
8
u
65
![Page 64: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/64.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
5 2 9
0 8 15
3
4
1410
3
6 45
2
9
15
8
u
66
![Page 65: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/65.jpg)
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
Prim’s Algorithm
5 2 9
0 8 15
3
4
1410
3
6 45
2
9
15
8
u
67
![Page 66: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/66.jpg)
Review: Prim’s Algorithm
What is the hidden cost in this code?
68
MST-Prim(G, w, r)
for each u G.V
u.key =
u. = NIL
r.key = 0
Q = G.V
while (Q not empty)
u = ExtractMin(Q)
for each v G.Adj[u]
if (v Q and w(u,v) < v.key)
v. = u
v.key = w(u,v)
![Page 67: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/67.jpg)
Review: Prim’s Algorithm
MST-Prim(G, w, r)
Q = V[G];
for each u Q
key[u] = ;
key[r] = 0;
p[r] = NULL;
while (Q not empty)
u = ExtractMin(Q);
for each v Adj[u]
if (v Q and w(u,v) < key[v])
p[v] = u;
DecreaseKey(v, w(u,v));
69
![Page 68: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/68.jpg)
Prim’s Algorithm: running time
• We can use the BUILD-MIN-HEAP procedure to perform the initialization in lines 1–5 in O(V) time
• EXTRACT-MIN operation is called |V| times, and each call takes O(lg V) time, the total time for all calls to EXTRACT-MIN is O(V lg V)
11/10/2015 70
![Page 69: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/69.jpg)
Running time (cont’d)
• The for loop in lines 8–11 is executed O(E) times altogether, since the sum of the lengths of all adjacency lists is 2 |E|.
– Lines 9 -10 take constant time
– line 11 involves an implicit DECREASE-KEY operation on the min-heap, which takes O(lg V) time
• Thus, the total time for Prim's algorithm is O(V) +O(V lg V) + O(E lg V) = O(E lg V)
– The same as Kruskal's algorithm11/10/2015 71
![Page 70: COT 6405 Introduction to Theory of Algorithmsyliu21/Algorithm/Lecture 15.pdf · –Generic MST –Kruskal’salgorithm –Prim’s algorithm 2. Motivation Example •Problem definition](https://reader036.fdocuments.us/reader036/viewer/2022063022/5fe6e84b7936935fab04be0e/html5/thumbnails/70.jpg)
Summary
• We learned
– Generic MST
– Kruskal’s and Prim’s algorithm
• Common mistakes: Don’t mix Kruskal’salgorithm with Prim’s algorithm
72