Professional Documents
Culture Documents
Text
Read Weiss, 9.5 Weiss 9.5.1 Similar to Dijkstras 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
F
7 8
Initialize array
C
3 4
K
A B C F F F
dv
pv
A
4 9
B
10 2
18
D
25
H
3
D
E F G H
F
F F F F
10
F
7 8
C
3 4
K
A B C
dv
pv
A
4 9
B
10 2
18
D
25
H
3
D
E F G H
10
F
7 8
C
3 4 18 10 2 25 7
A
4 9
B G
D E
H
3
D
E F G H
0
25 18 2
D D D
10
F
7 8
C
3 4 18 10 2 25 7
A
4 9
B G
D E
H
3
D
E F G H
0
25 18
D D D
10
F
7 8
C
3 4 18 10 2 25 7
A
4 9
B G
D E
H
3
D
E F G H
0
7 18
G D D G
2 3
10
F
7 8
C
3 4 18 10 2 25 7
A
4 9
B G
D E
H
3
D
E F G H
0
7 18
G D D G
2 3
10
F
7 8
C
3 4
pv
C D
A
4 9
A B C
B
10 2
18
D
25
H
3
D
E F G H
0
7 3
G C D G
2 3
10
F
7 8
C
3 4
pv
C D
A
4 9
A B C
B
10 2
18
D
25
H
3
D
E F G H
T
T T
0
7 3 2 3
G C D G
10
F
7 8
C
3 4
pv
F C D
A
4 9
A B C
B
10 2
18
D
25
H
3
D
E F G H
T
T T
0
2 3 2 3
F C D G
10
F
7 8
C
3 4
pv
F C D
A
4 9
A B C
B
10 2
18
D
25
H
3
D
E F G H
T
T T T
0
2 3 2 3
F C D G
10
F
7 8
C
3 4
pv
F C D
A
4 9
A B C
B
10 2
18
D
25
H
3
D
E F G H
T
T T T
0
2 3 2 3
F C D G
10
F
7 8
C
3 4
pv
F C D
A
4 9
A B C
B
10 2
18
D
25
H
3
D
E F G H
T
T T T T
0
2 3 2 3
F C D G
10
F
7 8
C
3 4
pv
H C D
A
4 9
A B C
B
10 2
18
D
25
H
3
D
E F G H
T
T T T T
0
2 3 2 3
F C D G
10
F
7 8
C
3 4
pv
H C D
A
4 9
A B C
B
10 2
18
D
25
H
3
D
E F G H
T
T T T T
0
2 3 2 3
F C D G
10
F
7 8
C
3 4
pv
H C D
A
4 9
A B C
B
10 2
18
D
25
H
3
D
E F G H
T
T T T T
0
2 3 2 3
F C D G
10
F
7 8
C
3 4
pv
H C D
A
4 9
A B C
T T T
B
10 2
18
D
25
H
3
D
E F G H
T
T T T T
0
2 3 2 3
F C D G
F
A
4
C
3 4
pv
H C D
A B C
T T T
B
2 3
D E
H G
D
E F G H
T
T T T T
0
2 3 2 3
F C D G
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
10
F
4 8
C
3 4 6 4 2 1 3
A
5 4
B G
D E
H
3
10
F
4 8
C
3 4 6 4 2 1 3
edge
(D,E) (D,G) (E,G) (C,D) (G,H) (C,F) (B,C)
dv
1 2 3 3 3 3 4
dv 4 4
A
5 4
B G
D E
(B,H)
(A,H) (D,F) (A,B) (A,F)
4
5 6 8 10
H
3
F
4 8
C
3 4 6 4 2 1 3
edge
(D,E) (D,G) (E,G) (C,D) (G,H) (C,F) (B,C)
dv
1 2 3 3 3 3 4
edge
dv 4 4
A
5 4
(B,E) (B,F)
B G
D E
(B,H)
(A,H) (D,F) (A,B) (A,F)
4
5 6 8 10
H
3
F
4 8
C
3 4 6 4 2 1 3
edge
(D,E) (D,G) (E,G) (C,D) (G,H) (C,F) (B,C)
dv
1 2 3 3 3 3 4
edge
dv 4 4
A
5 4
(B,E) (B,F)
B G
D E
(B,H)
(A,H) (D,F) (A,B) (A,F)
4
5 6 8 10
H
3
F
4 8
C
3 4 6 4 2 1 3
edge
(D,E) (D,G) (E,G) (C,D) (G,H) (C,F) (B,C)
dv
1 2 3 3 3 3 4
edge
dv 4 4
A
5 4
(B,E) (B,F)
B G
D E
(B,H)
(A,H) (D,F) (A,B) (A,F)
4
5 6 8 10
H
3
F
4 8
C
3 4 6 4 2 1 3
edge
(D,E) (D,G) (E,G) (C,D) (G,H) (C,F) (B,C)
dv
1 2 3 3 3 3 4
edge
dv 4 4
A
5 4
(B,E) (B,F)
B G
D E
(B,H)
(A,H) (D,F) (A,B) (A,F)
4
5 6 8 10
H
3
F
4 8
C
3 4 6 4 2 1 3
edge
(D,E) (D,G) (E,G) (C,D) (G,H) (C,F) (B,C)
dv
1 2 3 3 3 3 4
edge
dv 4 4
A
5 4
(B,E) (B,F)
B G
D E
(B,H)
(A,H) (D,F) (A,B) (A,F)
4
5 6 8 10
H
3
F
4 8
C
3 4 6 4 2 1 3
edge
(D,E) (D,G) (E,G) (C,D) (G,H) (C,F) (B,C)
dv
1 2 3 3 3 3 4
edge
dv 4 4
A
5 4
(B,E) (B,F)
B G
D E
(B,H)
(A,H) (D,F) (A,B) (A,F)
4
5 6 8 10
H
3
F
4 8
C
3 4 6 4 2 1 3
edge
(D,E) (D,G) (E,G) (C,D) (G,H) (C,F) (B,C)
dv
1 2 3 3 3 3 4
edge
dv 4 4
A
5 4
(B,E) (B,F)
B G
D E
(B,H)
(A,H) (D,F) (A,B) (A,F)
4
5 6 8 10
H
3
F
4 8
C
3 4 6 4 2 1 3
edge
(D,E) (D,G) (E,G) (C,D) (G,H) (C,F) (B,C)
dv
1 2 3 3 3 3 4
edge
dv 4 4
A
5 4
(B,E) (B,F)
B G
D E
(B,H)
(A,H) (D,F) (A,B) (A,F)
4
5 6 8 10
H
3
F
4 8
C
3 4 6 4 2 1 3
edge
(D,E) (D,G) (E,G) (C,D) (G,H) (C,F) (B,C)
dv
1 2 3 3 3 3 4
edge
dv 4 4
A
5 4
(B,E) (B,F)
B G
D E
(B,H)
(A,H) (D,F) (A,B) (A,F)
4
5 6 8 10
H
3
F
4 8
C
3 4 6 4 2 1 3
edge
(D,E) (D,G) (E,G) (C,D) (G,H) (C,F) (B,C)
dv
1 2 3 3 3 3 4
edge
dv 4 4
A
5 4
(B,E) (B,F)
B G
D E
(B,H)
(A,H) (D,F) (A,B) (A,F)
4
5 6 8 10
H
3
F
4 8
C
3 4 6 4 2 1 3
edge
(D,E) (D,G) (E,G) (C,D) (G,H) (C,F) (B,C)
dv
1 2 3 3 3 3 4
edge
dv 4 4
A
5 4
(B,E) (B,F)
B G
D E
(B,H)
(A,H) (D,F) (A,B) (A,F)
4
5 6 8 10
H
3
F
A
5
C
3 4
edge
(D,E) (D,G) (E,G) (C,D) (G,H) (C,F) (B,C)
dv
1 2 3 3 3 3 4
edge
dv 4 4
(B,E) (B,F)
B
2 3 1
D E
(B,H)
(A,H) (D,F) (A,B) (A,F)
4
5 6 8 10
H G
not considered
Done
Total Cost = dv = 21
Detecting Cycles
Use Disjoint Sets (Chapter 8)