CSE 326: Data Structures Disjoint Union/Find. Equivalence Relations Relation R : For every pair of elements (a, b) in a set S, a R b is either true or.

Slides:



Advertisements
Similar presentations
CSE 326: Data Structures Part 7: The Dynamic (Equivalence) Duo: Weighted Union & Path Compression Henry Kautz Autumn Quarter 2002 Whack!! ZING POW BAM!
Advertisements

1 Union-find. 2 Maintain a collection of disjoint sets under the following two operations S 3 = Union(S 1,S 2 ) Find(x) : returns the set containing x.
1 Disjoint Sets Set = a collection of (distinguishable) elements Two sets are disjoint if they have no common elements Disjoint-set data structure: –maintains.
EECS 311: Chapter 8 Notes Chris Riesbeck EECS Northwestern.
Union-Find: A Data Structure for Disjoint Set Operations
Disjoint Sets Given a set {1, 2, …, n} of n elements. Initially each element is in a different set.  {1}, {2}, …, {n} An intermixed sequence of union.
CSE 326: Data Structures Disjoint Union/Find Ben Lerner Summer 2007.
Disjoint Union / Find CSE 373 Data Structures Lecture 17.
CSE 326: Data Structures Hashing Ben Lerner Summer 2007.
Data Structures, Spring 2004 © L. Joskowicz 1 Data Structures – LECTURE 17 Union-Find on disjoint sets Motivation Linked list representation Tree representation.
CSE 326: Data Structures Lecture #19 Disjoint Sets Dynamic Equivalence Weighted Union & Path Compression David Kaplan Today we’re going to get.
Lecture 16: Union and Find for Disjoint Data Sets Shang-Hua Teng.
1 Chapter 8 The Disjoint Set ADT Concerns with equivalence problems Find and Union.
CSE 373, Copyright S. Tanimoto, 2002 Up-trees - 1 Up-Trees Review of the UNION-FIND ADT Straight implementation with Up-Trees Path compression Worst-case.
29-Jan-00 CPSC 212: Data Structures and Algorithms Instructor: Harry Plantinga.
Minimal Spanning Trees What is a minimal spanning tree (MST) and how to find one.
Trees Featuring Minimum Spanning Trees HKOI Training 2005 Advanced Group Presented by Liu Chi Man (cx)
MA/CSSE 473 Day 36 Kruskal proof recap Prim Data Structures and detailed algorithm.
Spring 2015 Lecture 11: Minimum Spanning Trees
1 22c:31 Algorithms Union-Find for Disjoint Sets.
Computer Algorithms Submitted by: Rishi Jethwa Suvarna Angal.
CSE373: Data Structures & Algorithms Lecture 11: Implementing Union-Find Aaron Bauer Winter 2014.
CSE373: Data Structures & Algorithms Lecture 10: Disjoint Sets and the Union-Find ADT Lauren Milne Spring 2015.
CMSC 341 Disjoint Sets. 8/3/2007 UMBC CMSC 341 DisjointSets 2 Disjoint Set Definition Suppose we have an application involving N distinct items. We will.
CMSC 341 Disjoint Sets Textbook Chapter 8. Equivalence Relations A relation R is defined on a set S if for every pair of elements (a, b) with a,b  S,
Union-find Algorithm Presented by Michael Cassarino.
Union Find ADT Data type for disjoint sets: makeSet(x): Given an element x create a singleton set that contains only this element. Return a locator/handle.
CSE373: Data Structures & Algorithms Lecture 11: Implementing Union-Find Nicki Dell Spring 2014.
CSE373: Data Structures & Algorithms Lecture 10: Implementing Union-Find Dan Grossman Fall 2013.
Fundamental Data Structures and Algorithms Peter Lee April 24, 2003 Union-Find.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 223 – Advanced Data Structures Disjoint Sets.
1 The Disjoint Set ADT CS146 Chapter 8 Yan Qing Lei.
1 Today’s Material The dynamic equivalence problem –a.k.a. Disjoint Sets/Union-Find ADT –Covered in Chapter 8 of the textbook.
Union-Find A data structure for maintaining a collection of disjoint sets Course: Data Structures Lecturers: Haim Kaplan and Uri Zwick January 2014.
CS 146: Data Structures and Algorithms July 16 Class Meeting Department of Computer Science San Jose State University Summer 2015 Instructor: Ron Mak
MA/CSSE 473 Days Answers to student questions Prim's Algorithm details and data structures Kruskal details.
0 Union-Find data structure. 1 Disjoint set ADT (also Dynamic Equivalence) The universe consists of n elements, named 1, 2, …, n n The ADT is a collection.
CHAPTER 8 THE DISJOINT SET ADT §1 Equivalence Relations 【 Definition 】 A relation R is defined on a set S if for every pair of elements (a, b), a, b 
CMSC 341 Disjoint Sets. 2 Disjoint Set Definition Suppose we have N distinct items. We want to partition the items into a collection of sets such that:
CSE373: Data Structures & Algorithms Lecture 9: Disjoint Sets and the Union-Find ADT Lauren Milne Summer 2015.
Binary Search Trees1 Chapter 3, Sections 1 and 2: Binary Search Trees AVL Trees   
WEEK 5 The Disjoint Set Class Ch CE222 Dr. Senem Kumova Metin
CSE 589 Applied Algorithms Spring 1999 Prim’s Algorithm for MST Load Balance Spanning Tree Hamiltonian Path.
MA/CSSE 473 Day 37 Student Questions Kruskal Data Structures and detailed algorithm Disjoint Set ADT 6,8:15.
CSE 373, Copyright S. Tanimoto, 2001 Up-trees - 1 Up-Trees Review of the UNION-FIND ADT Straight implementation with Up-Trees Path compression Worst-case.
CSE 326: Data Structures: Set ADT
CSE 373: Data Structures and Algorithms
CSE 373, Copyright S. Tanimoto, 2001 Up-trees -
Chapter 8 Disjoint Sets and Dynamic Equivalence
Disjoint Sets Chapter 8.
CSE373: Data Structures & Algorithms Lecture 10: Disjoint Sets and the Union-Find ADT Linda Shapiro Spring 2016.
Course Outline Introduction and Algorithm Analysis (Ch. 2)
CMSC 341 Disjoint Sets Based on slides from previous iterations of this course.
CSE373: Data Structures & Algorithms Lecture 11: Implementing Union-Find Linda Shapiro Spring 2016.
CSE373: Data Structures & Algorithms Lecture 10: Disjoint Sets and the Union-Find ADT Linda Shapiro Winter 2015.
Disjoint Set Neil Tang 02/23/2010
Disjoint Set Neil Tang 02/26/2008
CSE 332: Data Structures Disjoint Set Union/Find
CSE 373 Data Structures and Algorithms
CSE373: Data Structures & Algorithms Lecture 9: Disjoint Sets & Union-Find Dan Grossman Fall 2013.
CSE 332: Data Abstractions Union/Find II
CSE373: Data Structures & Algorithms Implementing Union-Find
CSE 326 Union Find Richard Anderson Text Chapter CSE 326.
Disjoint Sets DS.S.1 Chapter 8 Overview Dynamic Equivalence Classes
Minimum Spanning Trees
Disjoint Sets Textbook Chapter 8
CSE 373: Data Structures and Algorithms
Disjoint Set Operations: “UNION-FIND” Method
Presentation transcript:

CSE 326: Data Structures Disjoint Union/Find

Equivalence Relations Relation R : For every pair of elements (a, b) in a set S, a R b is either true or false. If a R b is true, then a is related to b. An equivalence relation satisfies: 1.(Reflexive) a R a 2.(Symmetric) a R b iff b R a 3.(Transitive) a R b and b R c implies a R c 2

A new question Which of these things are similar? { grapes, blackberries, plums, apples, oranges, peaches, raspberries, lemons } If limes are added to this fruit salad, and are similar to oranges, then are they similar to grapes? How do you answer these questions efficiently? 3

Equivalence Classes Given a set of things… { grapes, blackberries, plums, apples, oranges, peaches, raspberries, lemons, bananas } …define the equivalence relation All citrus fruit is related, all berries, all stone fruits, and THAT’S IT. …partition them into related subsets { grapes }, { blackberries, raspberries }, { oranges, lemons }, { plums, peaches }, { apples }, { bananas } Everything in an equivalence class is related to each other. 4

Determining equivalence classes Idea: give every equivalence class a name –{ oranges, limes, lemons } = “like-ORANGES” –{ peaches, plums } = “like-PEACHES” –Etc. To answer if two fruits are related: –FIND the name of one fruit’s e.c. –FIND the name of the other fruit’s e.c. –Are they the same name? 5

Building Equivalence Classes Start with disjoint, singleton sets: –{ apples }, { bananas }, { peaches }, … As you gain information about the relation, UNION sets that are now related: –{ peaches, plums }, { apples }, { bananas }, … E.g. if peaches R limes, then we get –{ peaches, plums, limes, oranges, lemons } 6

Disjoint Union - Find Maintain a set of pairwise disjoint sets. –{3,5,7}, {4,2,8}, {9}, {1,6} Each set has a unique name, one of its members –{3,5,7}, {4,2,8}, {9}, {1,6} 7

Union Union(x,y) – take the union of two sets named x and y –{3,5,7}, {4,2,8}, {9}, {1,6} –Union(5,1) {3,5,7,1,6}, {4,2,8}, {9}, 8

Find Find(x) – return the name of the set containing x. –{3,5,7,1,6}, {4,2,8}, {9}, –Find(1) = 5 –Find(4) = 8 9

Example 10 S {1,2,7,8,9,13,19} {3} {4} {5} {6} {10} {11,17} {12} {14,20,26,27} {15,16,21}. {22,23,24,29,39,32 33,34,35,36} Find(8) = 7 Find(14) = 20 S {1,2,7,8,9,13,19,14,20 26,27} {3} {4} {5} {6} {10} {11,17} {12} {15,16,21}. {22,23,24,29,39,32 33,34,35,36} Union(7,20)

Cute Application Build a random maze by erasing edges. 11

Cute Application Pick Start and End 12 Start End

Cute Application Repeatedly pick random edges to delete. 13 Start End

Desired Properties None of the boundary is deleted Every cell is reachable from every other cell. There are no cycles – no cell can reach itself by a path unless it retraces some part of the path. 14

A Cycle 15 Start End

A Good Solution 16 Start End

A Hidden Tree 17 Start End

Number the Cells 18 Start End We have disjoint sets S ={ {1}, {2}, {3}, {4},… {36} } each cell is unto itself. We have all possible edges E ={ (1,2), (1,7), (2,8), (2,3), … } 60 edges total.

Basic Algorithm S = set of sets of connected cells E = set of edges Maze = set of maze edges initially empty 19 While there is more than one set in S pick a random edge (x,y) and remove from E u := Find(x); v := Find(y); if u  v then Union(u,v) else add (x,y) to Maze All remaining members of E together with Maze form the maze

Example Step 20 Start End S {1,2,7,8,9,13,19} {3} {4} {5} {6} {10} {11,17} {12} {14,20,26,27} {15,16,21}. {22,23,24,29,30,32 33,34,35,36} Pick (8,14)

Example 21 S {1,2,7,8,9,13,19} {3} {4} {5} {6} {10} {11,17} {12} {14,20,26,27} {15,16,21}. {22,23,24,29,39,32 33,34,35,36} Find(8) = 7 Find(14) = 20 S {1,2,7,8,9,13,19,14,20 26,27} {3} {4} {5} {6} {10} {11,17} {12} {15,16,21}. {22,23,24,29,39,32 33,34,35,36} Union(7,20)

Example 22 Start End S {1,2,7,8,9,13,19 14,20,26,27} {3} {4} {5} {6} {10} {11,17} {12} {15,16,21}. {22,23,24,29,39,32 33,34,35,36} Pick (19,20)

Example at the End 23 Start End S {1,2,3,4,5,6,7,… 36} E Maze

Implementing the DS ADT n elements, Total Cost of: m finds,  n-1 unions Target complexity: O(m+n) i.e. O(1) amortized O(1) worst-case for find as well as union would be great, but… Known result: find and union cannot both be done in worst-case O(1) time 24

Implementing the DS ADT Observation: trees let us find many elements given one root… Idea: if we reverse the pointers (make them point up from child to parent), we can find a single root from many elements… Idea: Use one tree for each equivalence class. The name of the class is the tree root. 25

Up-Tree for DU/F Initial state Intermediate state Roots are the names of each set.

Find Operation Find(x) follow x to the root and return the root Find(6) = 7

Union Operation Union(i,j) - assuming i and j roots, point i to j Union(1,7)

Simple Implementation Array of indices up Up[x] = 0 means x is a root.

Union 30 Union(up[] : integer array, x,y : integer) : { //precondition: x and y are roots// Up[x] := y } Constant Time!

Exercise Design Find operator –Recursive version –Iterative version 31 Find(up[] : integer array, x : integer) : integer { //precondition: x is in the range 1 to size// ??? }

A Bad Case n … 1 23n Union(1,2) 1 2 3n Union(2,3) Union(n-1,n) … … n :::: Find(1) n steps!!

Now this doesn’t look good  Can we do better? Yes! 1.Improve union so that find only takes Θ(log n) Union-by-size Reduces complexity to Θ(m log n + n) 2.Improve find so that it becomes even better! Path compression Reduces complexity to almost Θ(m + n) 33

Weighted Union –Always point the smaller tree to the root of the larger tree W-Union(1,7) 2 4 1

Example Again n 1 23n Union(1,2) n Union(2,3) Union(n-1,n) … … :::: 1 2 3n … Find(1) constant time …

Analysis of Weighted Union With weighted union an up-tree of height h has weight at least 2 h. Proof by induction –Basis: h = 0. The up-tree has one node, 2 0 = 1 –Inductive step: Assume true for all h’ < h. 36 h-1 Minimum weight up-tree of height h formed by weighted unions T1T1 T2T2 TW(T 1 ) > W(T 2 ) > 2 h-1 Weighted union Induction hypothesis W(T) > 2 h h-1 = 2 h

Analysis of Weighted Union Let T be an up-tree of weight n formed by weighted union. Let h be its height. n > 2 h log 2 n > h Find(x) in tree T takes O(log n) time. Can we do better? 37

Worst Case for Weighted Union 38 n/2 Weighted Unions n/4 Weighted Unions

Example of Worst Cast (cont’) 39 After n -1 = n/2 + n/4 + …+ 1 Weighted Unions Find If there are n = 2 k nodes then the longest path from leaf to root has length k. log 2 n

Elegant Array Implementation up weight

Weighted Union 41 W-Union(i,j : index){ //i and j are roots// wi := weight[i]; wj := weight[j]; if wi < wj then up[i] := j; weight[j] := wi + wj; else up[j] :=i; weight[i] := wi + wj; }

Path Compression On a Find operation point all the nodes on the search path directly to the root PC-Find(3)

Self-Adjustment Works 43 PC-Find(x) x

Draw the result of Find(e): 44 fha b c d e g i Student Activity

Path Compression Find 45 PC-Find(i : index) { r := i; while up[r]  0 do //find root// r := up[r]; if i  r then //compress path// k := up[i]; while k  r do up[i] := r; i := k; k := up[k] return(r) }

Interlude: A Really Slow Function Ackermann’s function is a really big function A(x, y) with inverse  (x, y) which is really small How fast does  (x, y) grow?  (x, y) = 4 for x far larger than the number of atoms in the universe (2 300 )  shows up in: –Computation Geometry (surface complexity) –Combinatorics of sequences 46

A More Comprehensible Slow Function log* x = number of times you need to compute log to bring value down to at most 1 E.g. log* 2 = 1 log* 4 = log* 2 2 = 2 log* 16 = log* = 3 (log log log 16 = 1) log* = log* = 4 (log log log log = 1) log* = …………… = 5 Take this:  (m,n) grows even slower than log* n !! 47

Disjoint Union / Find with Weighted Union and PC Worst case time complexity for a W-Union is O(1) and for a PC-Find is O(log n). Time complexity for m  n operations on n elements is O(m log* n) –Log * n < 7 for all reasonable n. Essentially constant time per operation! Using “ranked union” gives an even better bound theoretically. 48

Amortized Complexity For disjoint union / find with weighted union and path compression. –average time per operation is essentially a constant. – worst case time for a PC-Find is O(log n). An individual operation can be costly, but over time the average cost per operation is not. 49

Find Solutions 50 Find(up[] : integer array, x : integer) : integer { //precondition: x is in the range 1 to size// if up[x] = 0 then return x else return Find(up,up[x]); } Find(up[] : integer array, x : integer) : integer { //precondition: x is in the range 1 to size// while up[x]  0 do x := up[x]; return x; } Recursive Iterative