Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Text
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
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
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
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
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
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
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
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
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
4
1
2
3
10
3
6
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
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)