Professional Documents
Culture Documents
1. Spanning Tree
2. Minimum Spanning Tree
3. Prim’s Algorithm
4. Kruskal’s Algorithm
Spanning Tree
G = (V,E)
Weight W
G = (V,E)
Weight W
Prim's Algorithm
Kruskal's Algorithm
Prim's Algorithm
Annotate all vertices v outside of the set S. The minimum weight of an edge
that connects v to a vertex in S is w.
(w = ¥ if no edge exists)
Prim's Algorithm
T = a spanning tree containing a single node s;
E = set of edges adjacent to s;
while T does not contain all the nodes {
remove an edge (v, w) of lowest cost from E
if w is already in T then discard edge (v, w)
else {
add edge (v, w) and node w to T
add to E the edges adjacent to w
}
}
An edge of lowest cost can be found with a priority queue
Testing for a cycle is automatic
Hence, Prim’s algorithm is far simpler to implement than Kruskal’s algorithm
Prim's Algorithm
2
Initialize array
3
F C K dv pv
10
A 7 3 A F
8 4
18 B F
4
B D
9 C F
10
H D F
2 25
3 E F
G E
7 F F
G F
H F
Prim's Algorithm
2
Start with any node, say D
3
F C K dv pv
10
A 7 3 A
8 4
18 B
4
B D
9 C
10
H D T 0
2 25
3 E
G E
7 F
G
H
Prim's Algorithm
Update distances of
adjacent, unselected nodes
3
F C K dv pv
10
A 7 3 A
8 4
18 B
4
B D
9 C 3 D
10
H D T 0
2 25
3 E 25 D
G E
7 F 18 D
G 2 D
H
Prim's Algorithm
3
F C K dv pv
10
A 7 3 A
8 4
18 B
4
B D
9 C 3 D
10
H D T 0
2 25
3 E 7 G
G E
7 F 18 D
G T 2 D
H 3 G
Prim's Algorithm
3
F C K dv pv
10
A 7 3 A
8 4
18 B 4 C
4
B D
9 C T 3 D
10
H D T 0
2 25
3 E 7 G
G E
7 F 3 C
G T 2 D
H 3 G
Prim's Algorithm
Select node with minimum
distance
2
3
F C K dv pv
10
A 7 3 A
8 4
18 B 4 C
4
B D
9 C T 3 D
10
H D T 0
2 25
3 E 7 G
G E
7 F T 3 C
G T 2 D
H 3 G
Prim's Algorithm
Update distances of
adjacent, unselected nodes
2
3
F C K dv pv
10
A 7 3 A 10 F
8 4
18 B 4 C
4
B D
9 C T 3 D
10
H D T 0
2 25
3 E 2 F
G E
7 F T 3 C
G T 2 D
H 3 G
Prim's Algorithm
3
F C K dv pv
10
A 7 3 A 10 F
8 4
18 B 4 C
4
B D
9 C T 3 D
10
H D T 0
2 25
3 E T 2 F
G E
7 F T 3 C
G T 2 D
H 3 G
Table entries unchanged
Prim's Algorithm
Select node with minimum
distance
2
3
F C K dv pv
10
A 7 3 A 10 F
8 4
18 B 4 C
4
B D
9 C T 3 D
10
H D T 0
2 25
3 E T 2 F
G E
7 F T 3 C
G T 2 D
H T 3 G
Prim's Algorithm
Update distances of
adjacent, unselected nodes
2
3
F C K dv pv
10
A 7 3 A 4 H
8 4
18 B 4 C
4
B D
9 C T 3 D
10
H D T 0
2 25
3 E T 2 F
G E
7 F T 3 C
G T 2 D
H T 3 G
Prim's Algorithm
Select node with minimum
2 distance
3
F C K dv pv
10
A 7 3 A T 4 H
8 4
18 B 4 C
4
B D
9 C T 3 D
10
H D T 0
2 25
3 E T 2 F
G E
7 F T 3 C
G T 2 D
H T 3 G
Prim's Algorithm
Update distances of
adjacent, unselected nodes
2
3
F C K dv pv
10
A 7 3 A T 4 H
8 4
18 B 4 C
4
B D
9 C T 3 D
10
H D T 0
2 25
3 E T 2 F
G E
7 F T 3 C
G T 2 D
H T 3 G
Table entries unchanged
Prim's Algorithm
3
F C K dv pv
10
A 7 3 A T 4 H
8 4
18 B T 4 C
4
B D
9 C T 3 D
10
H D T 0
2 25
3 E T 2 F
G E
7 F T 3 C
G T 2 D
H T 3 G
Prim's Algorithm
3
F C K dv pv
A 3 A T 4 H
4
B T 4 C
4
B D C T 3 D
H D T 0
2
3 E T 2 F
G E
F T 3 C
G T 2 D
H T 3 G
Done
Kruskal's Algorithm
}
Finding an edge of lowest cost can be done just by sorting
the edges
Efficient testing for a cycle requires a fairly complex
algorithm (UNION-FIND) which we don’t cover in this
course
Kruskal’s algorithm
3
F C edge dv edge dv
10
A 4 3 (D,E) 1 (B,E) 4
8 4
6 (D,G) 2 (B,F) 4
5
B D (E,G) 3 (B,H) 4
4
4
H (C,D) 3 (A,H) 5
2 1
3 (G,H) 3 (D,F) 6
G E (A,B) 8
3 (C,F) 3
(B,C) 4 (A,F) 10
Kruskal’s algorithm
Select first |V|–1 edges which do not
generate a cycle
3
F C edge dv edge dv
10
A 4 3 (D,E) 1 (B,E) 4
8 4
6 (D,G) 2 (B,F) 4
5
B D (E,G) 3 (B,H) 4
4
4
H (C,D) 3 (A,H) 5
2 1
3 (G,H) 3 (D,F) 6
G E (A,B) 8
3 (C,F) 3
(B,C) 4 (A,F) 10
Kruskal’s algorithm
A 3 (D,E) 1 (B,E) 4
4
(D,G) 2 (B,F) 4
5
B D (E,G) 3 (B,H) 4
H (C,D) 3 (A,H) 5
1
}
2
3 (G,H) 3 (D,F) 6
G E not
(C,F) 3 (A,B) 8 considered
(B,C) 4 (A,F) 10
Done
Total Cost = dv = 21
Books
1. https://en.wikipedia.org/wiki/Data_structure
2. https://visualgo.net/en/mst?slide=1