11. GENERIC - MST(G,w)
1 A←∅
2 while A ≠ MST
3 do find safe edge (u,v) for A
4 A ← A ∪ {(u,v)}
5 return A
12. T = {(a,b),(b,c),(c,d),(c, f ),(c,i),(d,e),( f ,g),(g,h)}
8
7
b
c
d
4
9
A = {(c,i),( f ,g),(g,h)}
2
a
11
i
4
14
e
7
6
8
10
h
g
f
1
2
€
8
7
A = {(c,i),(c, f ),( f ,g),(g,h)}
b
c
d
4
9
2
a
11
i
4
14
e
7
6
8
10
€
h
1
g
2
f
18. •
–
–
MST − KRUSKAL(G,w)
1A←∅
2 for each v ∈ V[G]
3 do MAKE - SET(v)
4 sort E with weight w ascending order
5 for each (u,v) ∈ E (with sorting order)
6 do if FIND - SET(u) ≠ FIND - SET(v)
7 then A ← A ∪ {(u,v)}
8 UNION(u,v)
9 return A
19. 8
7
b
c
d
4
1.
9
2
a
11
i
4
14
e
7
6
8
10
h
1
g
2
f
8
7
b
c
d
4
9
2.
2
a
11
i
4
14
e
7
6
8
10
h
1
g
2
f
20. 8
7
b
c
d
4
9
3.
2
a
11
i
14
e
4
7
6
8
10
h
1
g
2
f
8
7
b
c
d
4
9
2
4.
a
11
i
4
14
e
7
6
8
10
h
1
g
2
f
21. •
–
•
– (disjoint‐set forest)
• m MAKE‐SET n MAKE‐SET/UNION/FIND‐
SET O(mα(n))
22. •
– O(V)
– O(E lg E)
–
• O((V+E)α(V)) (|E|>=|V|-1)
• = O(Eα(V)) (α(|V|)=O(lg V)=O(lg E))
• = O(E lg E) (|E|<|V|2)
• = O(E lg V)
23. •
–
MST − PRIM(G,w,r)
1 for each u ∈ V [G]
2 do key[u] ← ∞
3 π [u] ← NIL
4 key[r] = 0 A = {(v, π (v)) : v ∈ V − {r}}
5 Q ← V[G]
6 while Q ≠ ∅
7 do u ← EXTRACT - MIN(Q)
8 for each v ∈ Adj[u]
€
9 do if v ∈ Q and w(u,v) < key[v]
10 then π [v] ← u
11 key[v] ← w(u,v)
24. 8
7
b
c
d
4
1.
9
2
a
11
i
4
14
e
7
6
8
10
h
1
g
2
f
8
7
b
c
d
4
9
2.
2
a
11
i
4
14
e
7
6
8
10
h
1
g
2
f
25. 8
7
b
c
d
4
9
3.
2
a
11
i
4
14
e
7
6
8
10
h
1
g
2
f
8
7
b
c
d
4
9
2
4.
a
11
i
4
14
e
7
6
8
10
h
1
g
2
f