150 likes | 164 Views
Explore disjoint-set data structure operations like MAKE-SET, UNION, and FIND-SET. Learn weight-union heuristics, path compression, union by rank, and theorems for efficient implementations. Discover how to apply these concepts to linked-list representations and disjoint-set forests.
E N D
Chapter 21 Data Structures for Disjoint Sets Lee, Hsiu-Hui Ack: This presentation is based on the lecture slides from Prof. Tsai, Shi-Chun as well as various materials from the web. .
Disjoint-set Data Structure • To maintain a collection of disjoint dynamicsets S = {S1, S2, …, Sk}. Each set Si is identified by a representativex=rep[Si]. • Operations: MAKE-SET(x): creates a new set whose only member is x. with rep[{x}] = x (for any x ∉ Si for all i). UNION(x, y): replaces sets Sx, Sywith Sx∪ Sy in S for any x, y in distinct sets Sx, Sy . FIND-SET(x): returns representative of set Sxcontaining x. Hsiu-Hui Lee
a b e f h j c d g i (a) Connected Component: an application Hsiu-Hui Lee
CONNECTED-COMPONENTS(G) 1 for each vertex v V[G] 2 do MAKE-SET(v) 3 for each edge (u,v) E[G] 4 do if FIND-SET(u) ≠ FIND-SET(v) • then UNION(u,v) SAME-COMPONENT(u,v) 1 if FIND-SET(u) = FIND-SET(v) 2 then return TRUE 3 else return FALSE Hsiu-Hui Lee
Linked-list representation of disjoint sets The first object in each linked list serve as its set’s representative Hsiu-Hui Lee
MAKE-SET(x) : O(1) FIND-SET(x) : O(1) UNION(x, y) : by appending x’s list onto the end of y’s list UNION (e, g) Hsiu-Hui Lee
Θ(n) Θ(1+2+...+n) =Θ(n2) A simple implementation of union m: # of operation = 2n-1 Amortized time : Θ(n) Hsiu-Hui Lee
A weight-union heuristic • In simple implementation of union, we may be appending a longer list onto a shorter list • Weighted-union heuristic To append the smaller list onto the longer Hsiu-Hui Lee
Theorem 21.1 • Using the linked-list representation of disjoint sets and the weight-union heuristic, a sequence of m MAKE-SET, UNION, and FIND-SET operations, n of which are MAKE-SET operations, takes O( m + n lg n) time. Hsiu-Hui Lee
Disjoint-set forests • We represent sets by rooted trees. • Each node contains one member and each tree represents one set. • In a disjoint-set forest, each member points to its parent. UNION (e, g) Hsiu-Hui Lee
Heuristics to improve the running time • Union by rank The root with smaller rank is made to point to the root with larger rank during a UNION operation • Path compression During FIND-SET, to make each node on the find path point directly to the root. Hsiu-Hui Lee
Before FIND-SET(a) After FIND-SET(a) Hsiu-Hui Lee
Pseudo code for disjoint-set forests MAKE-SET(x) 1p[x] x 2rank[x] 0 UNION(x, y) 1 LINK(FIND-SET(x), FIND-SET(y)) path compression Hsiu-Hui Lee
union by rank LINK(x, y) 1 if rank[x] > rank[y] 2 then p[y] x 3 else p[x] y 4 if rank[x] = rank[y] 5 then rank[y] rank[y] + 1 FIND-SET(x) 1 if x ≠ p[x] 2 then p[x] FIND-SET(p[x]) 3 return p[x] Hsiu-Hui Lee
Effect of the heuristics • Either union by rank or path compression improves the running time. O(m lg n) --- union by rank Θ(n + f ‧ (1+log2+f/nn)) --- path comprsssion • The improvement is greater when the two heuristics are used together. O(m (n)) --- both Hsiu-Hui Lee