disjoint sets
play

Disjoint Sets Data Structures and Algorithms CSE 373 SP 18 - KASEY - PowerPoint PPT Presentation

Disjoint Sets Data Structures and Algorithms CSE 373 SP 18 - KASEY CHAMPION 1 Warm Up Finding a MST using Kruskals algorithm 8 7 c b d 9 4 2 4 14 e 1 i 1 6 a 10 7 8 h g f 1 2 CSE 373 SP 18 - KASEY CHAMPION 2 Warm


  1. Disjoint Sets Data Structures and Algorithms CSE 373 SP 18 - KASEY CHAMPION 1

  2. Warm Up Finding a MST using Kruskal’s algorithm 8 7 c b d 9 4 2 4 14 e 1 i 1 6 a 10 7 8 h g f 1 2 CSE 373 SP 18 - KASEY CHAMPION 2

  3. Warm Up Finding a MST using Kruskal’s algorithm 8 7 c b d 9 4 2 4 14 e 1 i 1 6 a 10 7 8 h g f 1 2 CSE 373 SP 18 - KASEY CHAMPION 3

  4. New ADT Set ADT Disjoint-Set ADT state state Set of elements Set of Sets - Elements must be unique! - Disjoint: Elements must be unique across sets - No required order - No required order - Each set has representative Count of Elements Count of Sets behavior behavior create(x) - creates a new set with a single makeSet(x) – creates a new set within the disjoint set where the only member, x member is x. Picks representative for set add(x) - adds x into set if it is unique, otherwise findSet(x) – looks up the set containing element x, returns add is ignored representative of that set remove(x) – removes x from set union(x, y) – looks up set containing x and set containing y, combines two size() – returns current number of sets into one. Picks new representative for resulting set elements in set B A C G H D F D A C B CSE 373 SP 18 - KASEY CHAMPION 4

  5. Example new() Rep: 1 makeSet(a) Rep: 0 b a makeSet(b) Rep: 2 makeSet(c) c makeSet(d) Rep: 4 makeSet(e) e Rep: 3 findSet(a) d findSet(d) union(a, c) CSE 373 WI 18 – MICHAEL LEE 5

  6. Example new() Rep: 1 makeSet(a) Rep: 0 b a makeSet(b) c makeSet(c) makeSet(d) Rep: 4 makeSet(e) e Rep: 3 findSet(a) d findSet(d) union(a, c) union(b, d) CSE 373 WI 18 – MICHAEL LEE 6

  7. Example new() Rep: 1 makeSet(a) Rep: 0 b a makeSet(b) d c makeSet(c) makeSet(d) Rep: 4 makeSet(e) e findSet(a) findSet(d) union(a, c) union(b, d) findSet(a) == findSet(c) findSet(a) == findSet(d) CSE 373 WI 18 – MICHAEL LEE 7

  8. Implementation TreeSet<E> TreeDisjointSet<E> Disjoint-Set ADT state state SetNode overallRoot state behavior Collection<TreeSet> forest Set of Sets TreeSet(x) - Disjoint: Elements must be unique Dictionary<NodeValues, across sets NodeLocations> nodeInventory add(x) - No required order remove(x, y) - Each set has representative behavior getRep()-returns data of Count of Sets overallRoot behavior makeSet(x)-create a new makeSet(x) – creates a new set within the tree of size 1 and add to SetNode<E> disjoint set where the only member is x. our forest Picks representative for set state findSet(x)-locates node with E data findSet(x) – looks up the set containing x and moves up tree to find element x, returns representative of that Collection<SetNode> root set children behavior union(x, y)-append tree union(x, y) – looks up set containing x and SetNode(x) with y as a child of tree set containing y, combines two sets into with x one. Picks new representative for resulting addChild(x) set removeChild(x, y) CSE 373 SP 18 - KASEY CHAMPION 8

  9. TreeDisjointSet<E> Implement makeSet(x) state Collection<TreeSet> forest Dictionary<NodeValues, forest NodeLocations> nodeInventory behavior makeSet(0) makeSet(x)-create a new tree 0 1 2 3 4 5 of size 1 and add to our forest makeSet(1) findSet(x)-locates node with x and moves up tree to find root makeSet(2) union(x, y)-append tree with y as a child of tree with x makeSet(3) makeSet(4) 0 1 2 3 4 5 makeSet(5) Worst case runtime? O(1) CSE 373 SP 18 - KASEY CHAMPION 9

  10. TreeDisjointSet<E> Implement union(x, y) state Collection<TreeSet> forest Dictionary<NodeValues, forest NodeLocations> nodeInventory behavior union(3, 5) makeSet(x)-create a new tree 0 1 2 3 4 5 of size 1 and add to our forest findSet(x)-locates node with x and moves up tree to find root union(x, y)-append tree with y as a child of tree with x 0 1 2 3 4 5 -> -> -> -> -> -> CSE 373 SP 18 - KASEY CHAMPION 10

  11. TreeDisjointSet<E> Implement union(x, y) state Collection<TreeSet> forest Dictionary<NodeValues, forest NodeLocations> nodeInventory behavior union(3, 5) makeSet(x)-create a new tree 0 1 2 3 4 of size 1 and add to our forest union(2, 1) findSet(x)-locates node with x 5 and moves up tree to find root union(x, y)-append tree with y as a child of tree with x 0 1 2 3 4 5 -> -> -> -> -> -> CSE 373 SP 18 - KASEY CHAMPION 11

  12. TreeDisjointSet<E> Implement union(x, y) state Collection<TreeSet> forest Dictionary<NodeValues, forest NodeLocations> nodeInventory behavior union(3, 5) makeSet(x)-create a new tree 0 2 3 4 of size 1 and add to our forest union(2, 1) findSet(x)-locates node with x 1 5 and moves up tree to find root union(2, 5) union(x, y)-append tree with y as a child of tree with x 0 1 2 3 4 5 -> -> -> -> -> -> CSE 373 SP 18 - KASEY CHAMPION 12

  13. TreeDisjointSet<E> Implement union(x, y) state Collection<TreeSet> forest Dictionary<NodeValues, forest NodeLocations> nodeInventory behavior 2 union(3, 5) makeSet(x)-create a new tree 0 4 of size 1 and add to our forest union(2, 1) findSet(x)-locates node with x 1 3 and moves up tree to find root union(2, 5) union(x, y)-append tree with y as a child of tree with x 5 0 1 2 3 4 5 CSE 373 SP 18 - KASEY CHAMPION 13

  14. TreeDisjointSet<E> Implement findSet(x) state Collection<TreeSet> forest Dictionary<NodeValues, forest NodeLocations> nodeInventory behavior 2 findSet(0) makeSet(x)-create a new tree 0 4 of size 1 and add to our forest findSet(3) findSet(x)-locates node with x 1 3 and moves up tree to find root findSet(5) union(x, y)-append tree with y as a child of tree with x 5 0 1 2 3 4 5 Worst case runtime? O(n) Worst case runtime of union? O(n) CSE 373 SP 18 - KASEY CHAMPION 14

  15. Improving union Problem: Trees can be unbalanced Solution: Union-by-rank! - let rank(x) be a number representing the upper bound of the height of x so rank(x) >= height(x) - Keep track of rank of all trees - When unioning make the tree with larger rank the root - If it’s a tie, pick one randomly and increase rank by one rank = 0 rank = 0 rank = 1 rank = 2 rank = 0 2 0 4 4 1 3 5 CSE 373 SP 18 - KASEY CHAMPION 15

  16. Practice Given the following disjoint-set what would be the result of the following calls on union if we add the “union-by-rank” optimization. Draw the forest at each stage with corresponding ranks for each tree. rank = 2 rank = 0 rank = 2 rank = 1 6 2 8 7 10 0 4 3 9 1 13 1 1 5 12 union(2, 13) union(4, 12) union(2, 8) 16 CSE 373 SP 18 - KASEY CHAMPION

  17. Practice Given the following disjoint-set what would be the result of the following calls on union if we add the “union-by-rank” optimization. Draw the forest at each stage with corresponding ranks for each tree. rank = 3 8 7 10 6 9 1 1 12 13 2 0 4 3 1 5 union(2, 13) union(12, 4) union(2, 8) Does this improve the worst case runtimes? 17 findSet is more likely to be O(log(n)) than O(n) CSE 373 SP 18 - KASEY CHAMPION

  18. Improving findSet() Problem: Every time we call findSet() you must traverse all the levels of the tree to find representative Solution: Path Compression - Collapse tree into fewer levels by updating parent pointer of each node you visit - Whenever you call findSet() update each node you touch’s parent pointer to point directly to overallRoot rank = 3 rank = 2 findSet(5) 8 8 findSet(4) 7 10 9 6 1 5 4 6 9 10 1 7 1 1 Does this improve the worst case runtimes? 12 13 2 4 3 3 12 13 2 findSet is more likely to be O(1) than O(log(n)) 5 CSE 373 SP 18 - KASEY CHAMPION 18

  19. Example Using the union-by-rank and path-compression optimized implementations of disjoint-sets draw the resulting forest caused by these calls: 1. makeSet(a) rank = 2 2. makeSet(b) 3. makeSet(c) 4. makeSet(d) e 5. makeSet(e) 6. makeSet(f) 7. makeSet(h) f c a b d 8. union(c, e) 9. union(d, e) 10.union(a, c) h g 11.union(g, h) 12.union(b, f) 13.union(g, f) 14.union(b, c) CSE 373 SP 18 - KASEY CHAMPION 19

  20. Array Representation Like heaps, pretend the tree exists, but use an Array for actual implementation CSE 373 SP 18 - KASEY CHAMPION 20

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