Minimum Spanning Trees
Text
Read Weiss, 9.5
Prims Algorithm
Weiss 9.5.1
Similar to Dijkstras Algorithm
Kruskals Algorithm
Weiss 9.5.2
Focuses on edges, rather than nodes
Definition
A Minimum Spanning Tree (MST) is a
subgraph of an undirected graph such that
the subgraph spans (includes) all nodes, is
connected, is acyclic, and has minimum
total edge weight
Algorithm Characteristics
Both Prims and Kruskals Algorithms work
with undirected graphs
Both work with weighted and unweighted
graphs but are more interesting when edges
are weighted
Both are greedy algorithms that produce
optimal solutions
Prims Algorithm
Similar to Dijkstras Algorithm except that
dv records edge weights, not path lengths
Walk-Through
2
10
18
C
3
Initialize array
10
25
2
3
dv
pv
10
H
3
D
25
dv
pv
10
2
K
A
18
C
3
Start with any node, say D
C
D
E
F
G
H
Update distances of
adjacent, unselected nodes
10
H
3
D
25
pv
25
18
10
2
dv
18
K
3
C
C
D
Select node with
minimum distance
10
H
3
D
25
pv
25
18
10
2
dv
18
K
3
C
C
D
G
H
Update distances of
adjacent, unselected nodes
10
H
3
D
25
pv
18
10
2
dv
18
K
3
C
C
D
G
H
Select node with
minimum distance
10
10
25
2
3
dv
pv
18
18
K
A
G
H
Update distances of
adjacent, unselected nodes
10
D
25
2
3
10
dv
pv
18
K
3
C
C
G
H
Select node with
minimum distance
10
D
25
2
3
10
dv
pv
18
K
3
C
C
E
F
Update distances of
adjacent, unselected nodes
10
18
10
25
2
3
K
3
dv
pv
10
E
F
Select node with
minimum distance
10
18
10
25
2
3
K
3
dv
pv
10
Update distances of
adjacent, unselected nodes
10
18
10
25
2
3
K
3
dv
pv
10
Table entries unchanged
Select node with
minimum distance
10
18
10
25
2
3
K
3
dv
pv
10
Update distances of
adjacent, unselected nodes
10
18
10
25
2
3
K
3
dv
pv
Select node with
minimum distance
10
10
25
2
3
dv
pv
18
C
C
Update distances of
adjacent, unselected nodes
10
10
25
2
3
dv
pv
18
C
C
Table entries unchanged
Select node with
minimum distance
10
18
C
D
10
25
2
3
dv
pv
Cost of Minimum
Spanning Tree = dv = 21
2
3
F
A
C
3
2
3
dv
pv
Done
Kruskals Algorithm
Work with edges, rather than nodes
Two steps:
Sort edges by increasing edge weight
Select the first |V| 1 edges that do not
generate a cycle
Walk-Through
F
10
3
6
Consider an undirected, weight graph
4
1
2
3
10
3
6
Sort the edges by increasing edge weight
4
1
2
3
edge
dv
edge
dv
(D,E)
(B,E)
(D,G)
(B,F)
(E,G)
(B,H)
(C,D)
(A,H)
(G,H)
(D,F)
(C,F)
(A,B)
(B,C)
(A,F)
10
Select first |V|1 edges which do not
generate a cycle
10
C
D
4
1
2
3
edge
dv
(B,E)
(B,F)
(E,G)
(B,H)
(C,D)
(A,H)
(G,H)
(D,F)
(C,F)
(A,B)
(B,C)
(A,F)
10
edge
dv
(D,E)
(D,G)
Select first |V|1 edges which do not
generate a cycle
10
C
D
4
1
2
3
edge
dv
(B,E)
(B,F)
(B,H)
(C,D)
(A,H)
(G,H)
(D,F)
(C,F)
(A,B)
(B,C)
(A,F)
10
edge
dv
(D,E)
(D,G)
(E,G)
Select first |V|1 edges which do not
generate a cycle
10
C
D
4
1
2
3
edge
dv
(B,E)
(B,F)
(E,G)
(B,H)
(C,D)
(A,H)
(G,H)
(D,F)
(C,F)
(A,B)
(B,C)
(A,F)
10
edge
dv
(D,E)
(D,G)
Accepting edge (E,G) would create a cycle
Select first |V|1 edges which do not
generate a cycle
10
C
D
4
1
2
3
edge
dv
(B,E)
(B,F)
(E,G)
(B,H)
(C,D)
(A,H)
(G,H)
(D,F)
(C,F)
(A,B)
(B,C)
(A,F)
10
edge
dv
(D,E)
(D,G)
Select first |V|1 edges which do not
generate a cycle
10
C
D
4
1
2
3
edge
dv
(B,E)
(B,F)
(E,G)
(B,H)
(C,D)
(A,H)
(G,H)
(D,F)
(C,F)
(A,B)
(B,C)
(A,F)
10
edge
dv
(D,E)
(D,G)
Select first |V|1 edges which do not
generate a cycle
10
C
D
4
1
2
3
edge
dv
(B,E)
(B,F)
(E,G)
(B,H)
(C,D)
(A,H)
(G,H)
(D,F)
(C,F)
(A,B)
(B,C)
(A,F)
10
edge
dv
(D,E)
(D,G)
Select first |V|1 edges which do not
generate a cycle
10
C
D
4
1
2
3
edge
dv
(B,E)
(B,F)
(E,G)
(B,H)
(C,D)
(A,H)
(G,H)
(D,F)
(C,F)
(A,B)
(B,C)
(A,F)
10
edge
dv
(D,E)
(D,G)
Select first |V|1 edges which do not
generate a cycle
10
C
D
4
1
2
3
edge
dv
(B,E)
(B,F)
(E,G)
(B,H)
(C,D)
(A,H)
(G,H)
(D,F)
(C,F)
(A,B)
(B,C)
(A,F)
10
edge
dv
(D,E)
(D,G)
Select first |V|1 edges which do not
generate a cycle
10
C
D
4
1
2
3
edge
dv
(B,E)
(B,F)
(E,G)
(B,H)
(C,D)
(A,H)
(G,H)
(D,F)
(C,F)
(A,B)
(B,C)
(A,F)
10
edge
dv
(D,E)
(D,G)
Select first |V|1 edges which do not
generate a cycle
10
C
D
4
1
2
3
edge
dv
(B,E)
(B,F)
(E,G)
(B,H)
(C,D)
(A,H)
(G,H)
(D,F)
(C,F)
(A,B)
(B,C)
(A,F)
10
edge
dv
(D,E)
(D,G)
Select first |V|1 edges which do not
generate a cycle
10
C
D
4
1
2
3
edge
dv
(B,E)
(B,F)
(E,G)
(B,H)
(C,D)
(A,H)
(G,H)
(D,F)
(C,F)
(A,B)
(B,C)
(A,F)
10
edge
dv
(D,E)
(D,G)
Select first |V|1 edges which do not
generate a cycle
3
F
A
C
3
D
1
2
3
edge
dv
(B,E)
(B,F)
(E,G)
(B,H)
(C,D)
(A,H)
(G,H)
(D,F)
(C,F)
(A,B)
(B,C)
(A,F)
10
edge
dv
(D,E)
(D,G)
Done
Total Cost =
dv = 21
not
considered
Detecting Cycles
Use Disjoint Sets (Chapter 8)