Minimum Spanning Tree algorithms:
1.
A :=
Æ
/*A Set of edges in minimum spanning tree*/
2. for each vertex v Î V[G]
3. do MAKE-SET(v)
4. sort
the edges of E into nondecreasing order by weight w
5.
for each edge (u,v) Î E, taken in nondecreasing order by weight
6.
do if FIND-SET(u)
¹ FIND-SET(v)
7.
then A := A U {(u,v)}
8.
UNION( u,v )
9. return A
END
MAKE-SET(v)
1. p[v]
:= v /* p[v]
is parent of node v */
2. rank[v] := 0
/* rank[v] is upperbound on height of node v */
FIND_SET (v)
1. if
v
¹ p[v]
/* determine whether v is the root if so go to line 2*/
2.
then p[v]:=
FIND-SET(p[v])
3. return p[v]
UNION ( u ,v)
1. LINK ( FIND-SET(u) ,
FIND-SET(v) )
LINK ( u ,v)
1. if
rank[u] > rank[v]
2.
then p[v] :=
u
3. else
p[u] :=
v
4.
if rank[u]=rank [v]
5.
then rank[v] := rank [v] +1
MST-PRIM (G = (V,E), w, Source s)
1. for each vertex
u in V[G]
2.
do key[u]
:=
¥
3.
p[u]
:=
NIL
/*
p[u]
ia parent of node u */
4. key[s] := 0
5.
Q := V[G]
/*Q is a priority queue of set of all vertices not
in the tree */
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 p[v] := u
11.
key[v] := w(u,v)
END
MST-CHERITON-TARJAN (G = (V,E), w)
1. Q :=
Æ
/*A Set of edges in minimum spanning tree*/
2. for each vertex v Î V[G]
3. do Q Ü
v
4.
stage(v) := 0
5.
j := 1 /* j is stage number which is
initialized to 1 */
6. while |Q| ³ 2
7.
do T1 Ü Q
/* Let T1 be the tree in front of Q */
8.
if stage(T1) = j
9.
do j:=j+1
10.
CLEAN-UP
11.
find edge (u,v)Î
E
with min weight such that u ÎT1
, v ÎV-T1
12.
let T2 be the tree in Q that contains v
13.
T:= MERGE(T1,T2) /* by adding edge (u,v) to MST*/
14.
Q:=Q-T1-T2
/* Remove T1 & T2 from Q */
15.
stage(T):= 1+min { stage(T1), stage(T2) }
16.
Q<==T
END
ClEAN-UP
Shrink G to G* where G* is G with each tree shrunk to a single node and only those edges (u,v) Î G*, u Î T, vÎ T', that are shortest incident edges between disjoint T, T'.