130 likes | 148 Views
Learn about implementing disjoint sets with arrays in Java, array method implementation, graph design, and scenarios for navigating Disneyland efficiently using graph algorithms.
E N D
Lecture 21: Disjoint Sets with Arrays CSE 373: Data Structures and Algorithms CSE 373 19 wi - Kasey Champion
Implementation • Use Nodes? • In modern Java (assuming 64-bit JDK) each object takes about 32 bytes • int field takes 4 bytes • Pointer takes 8 bytes • Overhead ~ 16 bytes • Adds up to 28, but we must partition in multiples of 8 => 32 bytes • Use arrays instead! • Make index of the array be the vertex number • Either directly to store ints or representationally • We implement makeSet(x) so that we choose the representative • Make element in the array the index of the parent CSE 373 SP 18 - Kasey Champion
Array Implementation 6 15 16 17 10 11 7 8 1 3 2 5 9 13 12 18 0 4 14 rank = 3 rank = 0 rank = 3 Store (rank * -1) - 1 Each “node” now only takes 4 bytes of memory instead of 32 CSE 373 SP 18 - Kasey Champion
Practice 0 12 11 1 13 14 15 8 9 3 7 5 4 6 16 2 10 rank = 1 rank = 2 rank = 2 rank = 0 CSE 373 SP 18 - Kasey Champion
Array Method Implementation • makeSet(x) • add new value to array with a rank of -1 • findSet(x) • Jump into array at index/value you’re looking for, jump to parent based on element at that index, continue until you hit negative number • union(x, y) • findSet(x) and findSet(y) to decide who has larger rank, update element to represent new parent as appropriate CSE 373 SP 18 - Kasey Champion
Graph Design CSE 373 SP 18 - Kasey Champion
Graphs are about representing relationships… • Physical distances • Connections • Bloodlines • Probabilities • Sequences • States CSE 373 SP 18 - Kasey Champion
Scenario #1 6 7 It’s a small world Dumbo • You are going to Disneyland for spring break! You’ve never been, so you want to make sure you hit ALL the rides. • Is there a graph algorithm that would help? • BFS or DFS • How would you draw the graph? • What are the vertices? Rides • What are the edges? Walkways 8 5 Matter- horn Thunder Mtn 1 4 Castle Splash Mtn 9 3 Space Mtn Indiana Jones 10 0 BFS = 0 1 2 3 5 6 7 8 9 4 10 DFS = 0 3 5 6 7 8 9 10 1 4 2 Star Tours 2 Flag Pole Jungle Cruise CSE 373 19 wi - Kasey Champion
Scenario #1 continued 6 7 It’s a small world Dumbo • Now that you have your basic graph of Disneyland what might the following graph items represent in this context? • Weighted edges • Walkway distances • Walking times • Foot traffic • Directed edges • Entrances and exits • Crowd control for fireworks • Parade routes • Self Loops • Looping a ride • Parallel Edges • Foot traffic at different times of day • Walkways and train routes 8 5 Matter- horn Thunder Mtn 1 4 Castle Splash Mtn 9 3 Space Mtn Indiana Jones 10 0 Star Tours 2 Flag Pole Jungle Cruise CSE 373 19 wi - Kasey Champion
Scenario #2 6 4 7 It’s a small world It’s a small world Dumbo Dumbo • You are a Disneyland employee and you need to rope off as many miles of walkways as you can for the fireworks while leaving guests access to all the rides. • Is there a graph algorithm that would help? • MST • How would you draw the graph? • What are the vertices? Rides • What are the edges? Walkways with distances 6 16 12 10 8 5 14 Matter- horn Matter- horn Thunder Mtn Thunder Mtn 1 13 5 4 Castle Castle 9 Splash Mtn Splash Mtn 7 17 15 11 9 3 Space Mtn Space Mtn 8 Indiana Jones Indiana Jones 10 0 1 2 Star Tours Star Tours 2 Flag Pole Flag Pole 3 Jungle Cruise Jungle Cruise CSE 373 SP 18 - Kasey Champion 6 4 7 6 16 12 10 8 5 14 1 13 5 4 9 7 17 15 11 9 3 8 10 0 1 2 2 3
Scenario #3 6 4 7 It’s a small world It’s a small world Dumbo Dumbo • You arrive at Disneyland and you want to visit all the rides, but do the least amount of walking possible. If you start at the Flag Pole, plan the shortest walk to each of the attractions. • Is there a graph algorithm that would help? • Dijkstra’s • How would you draw the graph? • What are the vertices? Rides • What are the edges? Walkways with distances 6 16 12 10 8 5 14 Matter- horn Matter- horn Thunder Mtn Thunder Mtn 1 13 5 4 Castle Castle 9 Splash Mtn Splash Mtn 7 17 15 11 9 3 Space Mtn Space Mtn 8 Indiana Jones Indiana Jones 10 0 1 2 Star Tours Star Tours 2 Flag Pole Flag Pole 3 Jungle Cruise Jungle Cruise CSE 373 SP 18 - Kasey Champion 23 21 6 4 7 6 16 12 10 8 5 24 14 13 1 13 5 4 20 9 11 7 17 15 11 9 3 28 8 29 10 0 5 1 2 2 3 3
Scenario #2b 6 4 7 It’s a small world Dumbo • Now that you know the shortest distance to each attraction, can you make a plan to visit all the attractions with the least amount of total walking? 6 16 12 10 8 5 14 Matter- horn Thunder Mtn 1 13 Nope! This is the travelling salesman problem which is much more complicated than Dijkstra’s. (NP Hard, more on this later) 5 4 Castle 9 Splash Mtn 7 17 15 11 9 3 Space Mtn 8 Indiana Jones 10 0 1 2 Star Tours 2 Flag Pole 3 Jungle Cruise CSE 373 SP 18 - Kasey Champion 23 21 6 4 7 6 16 12 10 8 5 24 14 13 1 13 5 4 20 9 11 7 17 15 11 9 3 28 8 29 10 0 5 1 2 2 3 3
Scenario #3 6 4 7 It’s a small world Dumbo • You have great taste so you are riding Space Mountain. Your friend makes poor choices so they are riding Splash Mountain. You decide to meet at the castle, how long before you can meet up? 6 16 12 10 8 5 14 Matter- horn • Is there a graph algorithm that would help? • Dijkstra’s • What information do our edges need to store? • Walking times • How do we apply the algorithm? • Run Dijkstra’s from Splash Mountain. • Run Dijkstra’s from Space Mountain. • Take the larger of the two times. Thunder Mtn 1 13 5 4 Castle 9 Splash Mtn 7 17 15 11 9 3 Space Mtn 8 Indiana Jones 10 0 1 2 Star Tours 2 Flag Pole 3 Jungle Cruise CSE 373 SP 18 - Kasey Champion