Presentation is loading. Please wait.

Presentation is loading. Please wait.

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.

Similar presentations


Presentation on theme: "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."— Presentation transcript:

1 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..

2 20080111 chap21Hsiu-Hui Lee2 Disjoint-set Data Structure To maintain a collection of disjoint dynamic sets S = {S 1, S 2, …, S k }. Each set S i is identified by a representative x=rep[S i ]. 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 S x, S y with S x ∪ S y in S for any x, y in distinct sets Sx, Sy. FIND-SET(x): returns representative of set S x containing x.

3 20080111 chap21Hsiu-Hui Lee3 Connected Component: an application ab cd ef g h i j (a)

4 20080111 chap21Hsiu-Hui Lee4 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) 5then UNION(u,v) SAME-COMPONENT(u,v) 1 if FIND-SET(u) = FIND-SET(v) 2 then return TRUE 3 else return FALSE

5 20080111 chap21Hsiu-Hui Lee5 Linked-list representation of disjoint sets The first object in each linked list serve as its set ’ s representative

6 20080111 chap21Hsiu-Hui Lee6 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)

7 20080111 chap21Hsiu-Hui Lee7 A simple implementation of union m: # of operation = 2n-1 Amortized time : Θ (n) Θ(n)Θ(n) Θ (1+2+...+n) = Θ (n 2 )

8 20080111 chap21Hsiu-Hui Lee8 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

9 20080111 chap21Hsiu-Hui Lee9 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.

10 20080111 chap21Hsiu-Hui Lee10 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)

11 20080111 chap21Hsiu-Hui Lee11 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.

12 20080111 chap21Hsiu-Hui Lee12 Before FIND-SET(a)After FIND-SET(a)

13 20080111 chap21Hsiu-Hui Lee13 Pseudo code for disjoint-set forests MAKE-SET(x) 1 p[x]  x 2 rank[x]  0 UNION(x, y) 1 LINK(FIND-SET(x), FIND-SET(y)) path compression

14 20080111 chap21Hsiu-Hui Lee14 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] union by rank

15 20080111 chap21Hsiu-Hui Lee15 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+log 2+f/n n)) --- path comprsssion The improvement is greater when the two heuristics are used together. O(m  (n)) --- both


Download ppt "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."

Similar presentations


Ads by Google