Download presentation
Presentation is loading. Please wait.
Published byElisabeth McKinney Modified over 8 years ago
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.