Académique Documents
Professionnel Documents
Culture Documents
Disjoint-set Union,
Amortized analysis
Minimum Spanning Tree
p2.
Minimum Spanning Tree
p3.
Minimum Spanning Tree
8 7
b c d
4 9
2
11 14
a i 4 e
6
8 7 10
h g f
1 2
p4.
Minimum Spanning Tree
p5.
Minimum Spanning Tree
Generic-MST(G , w)
{
A← φ
while A does not form a spanning tree
do find an edge (u , v ) that is safe
for A;
A ← A U {(u , v )};
return A
}
p6.
Minimum Spanning Tree
8 7
b c d
4 9
2
a 11 14 e
i 4
S 6
8 7 10 a cut
h g f
V-S 1 2
A cut (S, V-S) of an undirected graph G=(V, E) is a
partition of V
An edge (u,v) ∈ E crosses the cut (S, V-S) if one of its
endpoints is in S and the other is in V-S
A cut respects the set A of edges if no edge in A crosses the
cut
An edge is a light edge crossing a cut if its weight is the
minimum of any edge crossing the cut
What is the light edge in the above graph ?
p7.
Minimum Spanning Tree
Thm1:
G=(V,E): connected, undirected
w: real-valued weight function on E
A: a subset of E and is included in some MST
(S, V-S): any cut of G and respects A
(u,v): a light edge crossing (S, V-S)
Then (u,v) is safe for A.
pf:
S : {O}
x V-S: {O}
A: { - }
u
y
T’ = T – {(x,y)} U {(u,v)}
v original MST
p8.
Minimum Spanning Tree
w(T’) = w(T) – w(x,y) + w(u,v)
= w(T)
Thus, T’ is a MST
A ⊆ T, and (x,y) ∉ A
A U {(u,v)} ⊆ T'
⇒ T' is a MST and (u, v) is safe for A
p9.
Minimum Spanning Tree
Cor2:
G=(V,E): connected, undirected
w = real-valued weight function
A ⊆ E and A is in some MST
C: a connected component in GA=(V,A)
if (u,v) is a light edge connecting C to some other
component in GA, then (u,v) is safe for A
v
u
V-C
C
p10.
Disjoint sets
S = {S1 , S2 , S3 ,....., S n }, Si I S j = φ , if i ≠ j
Operations:
Make-Set(x ) S ← S U {{x}}
Union(Si , S j ) S ← S − {Si , S j } U {Si U S j }
Find-Set(x ) return Si ∈ S s.t. x ∈ Si
p11.
Eg. Minimum spanning tree
G=(V,E): connected, undirected, edge-weighted graph
w:ER
Kruskals' algorithm:
T=φ
for each v ∈ V
do Make-Set(v )
p12.
Kruskal’s algorithm
(a) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
(b) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
p13.
(c) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
(d) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
p14.
(e) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
(f) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
p15.
(g) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
(h) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
p16.
(i) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
(j) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
p17.
(k) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
(l) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
p18.
(m) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
(n) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
p19.
Prim’s algorithm:
MTS-Prim(G, w, r)
{
Q ← V[G] /* Q: priority queue */
for each u ∈ Q
O(V) do key[u] ← ∞
π [u] ← NIL
key[r] ← 0
while Q ≠ φ lg V
do u ← Extract-Min(Q)
O(V lg V) for each v ∈ adj[u]
do if v ∈ Q and w(u,v) < key[v]
O(E) then π [v] ← u
key[v] ← w(u,v)
}
O(lg V), Decrease-key involves
p20.
Analysis
Binary heap: O(V lg V + E lg V)
= O(E lg V)
Fibonacci heap:
Decrease-key: O(1) amortized time
O(V lg V + E)
p21.
Prim’s algorithm
(a) 8 7
b c d
4 9
r
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
(b) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
p22.
(c) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
(d) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
p23.
(e) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
(f) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
p24.
(g) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
(h) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
p25.
(i) 8 7
b c d
4 9
2
a 11 14 e
i 4
6
8 7 10
h g f
1 2
p26.