cs 225
play

CS 225 Data Structures No Novem ember er 4 Di Disjoint Sets G - PowerPoint PPT Presentation

CS 225 Data Structures No Novem ember er 4 Di Disjoint Sets G G Carl Evans Heap Heap Sort 4 1. 5 6 2. 15 9 7 20 3. 16 25 11 14 12 4 5 6 15 9 7 20 16 25 14 12 11 Running Time? Why do we care about another


  1. CS 225 Data Structures No Novem ember er 4 – Di Disjoint Sets G G Carl Evans

  2. Heap Heap Sort 4 1. 5 6 2. 15 9 7 20 3. 16 25 11 14 12 4 5 6 15 9 7 20 16 25 14 12 11 Running Time? Why do we care about another sort?

  3. A( A(no nothe her) ) throwback k to CS 173… Let R be an equivalence relation on us where (s, t) ∈ R if s and t have the same favorite among: { ___, ___, ____, ___, ____, }

  4. Di Disjoint S Sets 2 5 9 7 0 1 4 8 3 6

  5. Di Disjoint S Sets 2 5 9 7 0 1 4 8 3 6 Operation: find(4)

  6. Di Disjoint S Sets 2 5 9 7 0 1 4 8 3 6 Operation: find(4) == find(8)

  7. Di Disjoint S Sets 2 5 9 7 0 1 4 8 3 6 Operation: if ( find(2) != find(7) ) { union( find(2), find(7) ); }

  8. Di Disjoint S Sets 2 5 9 7 0 1 4 8 3 6 Key Ideas: • Each element exists in exactly one set. • Every set is an equitant representation. • Mathematically: 4 ∈ [0] R à 8 ∈ [0] R • Programmatically: find(4) == find(8)

  9. Di Disjoint S Sets A ADT • Maintain a collection S = {s 0 , s 1 , … s k } • Each set has a representative member. • API: void makeSet(const T & t); void union(const T & k1, const T & k2); T & find(const T & k);

  10. Im Implem plemen entatio tion n #1 0 1 4 2 7 3 5 6 0 1 2 3 4 5 6 7 Find(k): Union(k1, k2):

  11. Implem Im plemen entatio tion n #2 • We will continue to use an array where the index is the key • The value of the array is: • -1, if we have found the representative element • The index of the parent , if we haven’t found the rep. element • We will call theses UpTrees : 0 1 2 3 0 1 2 3 -1 -1 -1 -1

  12. Up UpTrees ees 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3

  13. Di Disjoint S Sets 2 5 9 7 0 1 4 8 3 6 4 3 7 5 6 0 8 9 2 1 0 1 2 3 4 5 6 7 8 9 4 8 5 6 -1 -1 -1 -1 4 5

  14. Di Disjoint S Sets F Find 1 int DisjointSets::find() { 2 if ( s[i] < 0 ) { return i; } 3 else { return _find( s[i] ); } 4 } Running time? What is the ideal UpTree?

  15. Di Disjoint S Sets U Union 1 void DisjointSets::union(int r1, int r2) { 0 4 2 3 4 } 8 1

  16. Di Disjoint S Sets – Un Unio ion 4 7 8 6 9 10 3 0 1 2 5 11 0 1 2 3 4 5 6 7 8 9 10 11 6 6 6 8 -1 10 7 -1 7 7 4 5

  17. Disjoint S Di Sets – Sma Smart rt U Union on 4 7 8 6 9 10 3 0 1 2 5 11 Union by height Idea : Keep the height of 0 1 2 3 4 5 6 7 8 9 10 11 the tree as small as 6 6 6 8 10 7 7 7 4 5 possible.

  18. Di Disjoint S Sets – Sma Smart rt U Union on 4 7 8 6 9 10 3 0 1 2 5 11 Union by height Idea : Keep the height of 0 1 2 3 4 5 6 7 8 9 10 11 the tree as small as 6 6 6 8 10 7 7 7 4 5 possible. Idea : Minimize the 0 1 2 3 4 5 6 7 8 9 10 11 Union by size number of nodes that 6 6 6 8 10 7 7 7 4 5 increase in height Both guarantee the height of the tree is: _____________.

  19. Di Disjoint S Sets F Find 1 int DisjointSets::find(int i) { 2 if ( s[i] < 0 ) { return i; } 3 else { return _find( s[i] ); } 4 } 1 void DisjointSets::unionBySize(int root1, int root2) { 2 int newSize = arr_[root1] + arr_[root2]; 3 4 // If arr_[root1] is less than (more negative), it is the larger set; 5 // we union the smaller set, root2, with root1. 6 if ( arr_[root1] < arr_[root2] ) { 7 arr_[root2] = root1; 8 arr_[root1] = newSize; 9 } 10 11 // Otherwise, do the opposite: 12 else { 13 arr_[root1] = root2; 14 arr_[root2] = newSize; 15 } 16 }

  20. Pa Path Compression 10 9 11 1 7 8 2 4 3 5 6

  21. Di Disjoint S Sets A Anal alysis The iterated log function: The number of times you can take a log of a number. log*(n) = 0 , n ≤ 1 1 + log*(log(n)) , n > 1 What is lg*(2 65536 ) ?

  22. Di Disjoint S Sets A Anal alysis In an Disjoint Sets implemented with smart unions and path compression on find : Any sequence of m union and find operations result in the worse case running time of O( ____________ ), where n is the number of items in the Disjoint Sets.

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend