450 likes | 561 Views
Geography and CS. Philip Chan. How do I get there?. Navigation Which web sites can give you turn-by-turn directions?. Navigation [Problem understanding]. Finding a route from the origin to the destination “Static” directions Mapquest, Google maps “Dynamic” on-board directions
E N D
Geography and CS Philip Chan
How do I get there? • Navigation • Which web sites can give you turn-by-turn directions?
Navigation[Problem understanding] • Finding a route from the origin to the destination • “Static” directions • Mapquest, Google maps • “Dynamic” on-board directions • GPS navigation • if the car deviates from the route, it finds a new route
Consider a Simpler Problem • A national map with only • Cities and • Highways • That is, ignoring • smaller streets and intersections in a city • small roads between cities • …
Navigation[Problem Formulation] • Given (input) • Map (cities and highways) • Origin city • Destination city • Find (output) • City-by-city route between origin and destination cities
Graph Problem • A graph has vertices and edges • Cities -> vertices • Highways -> edges • City-by-city route -> shortest path
Shortest Path Problem • How would you solve the shortest path problem?
Algorithm 1 • Greedy algorithm • Pick the closest city • Go to the city • Repeat until the destination city is reached • Does this always find the shortest path? • If not, what could be a counter example?
Problem with Algorithm 1 • What is the main problem?
Problem with Algorithm 1 • What is the main problem? • Committing to the next city too soon • Any ideas for improvement?
Algorithm 2 • Keep track of alternative paths • Commit to the next city when • we are sure it is shortest • no other paths are shorter
Algorithm 2 • Let the current city be the origin • While the current city is not the destination • Explore the neighboring non-committed cities of the current city • Compare alternative path to current path • Update if alternative path is shorter • Find the non-committed city that has the shortest total distance from origin • Commit that city • Update the current city to that city
Algorithm 2 • Why does it guarantee to find the shortest path? • The shortest path to city X is committed • When?
Algorithm 2 • Why does it guarantee to find the shortest path? • The shortest path to city X is committed • when every path to the “non-committed” cities is longer
Algorithm 2 • Why does it guarantee to find the shortest path? • The shortest path to city X is committed • when every path to the “non-committed” cities is longer • no way to get to city X with a shorter path via “non-committed” cities
Dijkstra’s shortest path algorithm • Interesting applet to demonstrate the alg: • http://www.dgp.toronto.edu/people/JamesStewart/270/9798s/Laffra/DijkstraApplet.html
Implementation 1 • Simplified problem • What is the shortest distance between origin and destination? • We will worry about the intermediate cities later. • Consider • what we need to keep track (data) • how to keep track (instructions)
What to keep track (data)? • Whether a city is committed
What to keep track (data)? • Whether a city is committed • What is the shortest distance so far for a city
What to keep track (data)? • Whether a city is committed • What is the shortest distance so far for a city • How to implement the data storage?
What to keep track (data)? • Whether a city is committed • What is the shortest distance so far for a city • How to implement the data storage? • committed[city] • shortestDistance[city]
How to keep track (instructions)? • Sketching on whiteboard • Java in HW6
Implementation 2 • We would like to know the intermediate cities as well • the shortest path, not just the shortest distance
What to keep track (data)? • Whether a city is committed • What is the shortest distance so far for a city • What else?
What to keep track (data)? • Whether a city is committed • What is the shortest distance so far for a city • What else? • What do you notice for each of the intermediate city?
What to keep track (data)? • Whether a city is committed • What is the shortest distance so far for a city • What else? • What do you notice for each of the intermediate city? • Each was committed • What do you notice when we commit a city and update the shortest distance?
What to keep track (data)? • Whether a city is committed • What is the shortest distance so far for a city • What else? • What do you notice for each of the intermediate city? • Each was committed • What do you notice when we commit a city and update the shortest distance? • We know the previous city
What to keep track (data)? • Whether a city is committed • What is the shortest distance so far for a city • What is the previous city • How to implement the data storage? • committed[city] • shortestDistance[city]
What to keep track (data)? • Whether a city is committed • What is the shortest distance so far for a city • What is the previous city • How to implement the data storage? • committed[city] • shortestDistance[city] • previousCity[city]
Storing the map • How to store the distance between two cities • so that, given two cities, we can find the distance quickly?
How to keep track (instructions)? • Sketching on whiteboard • Java in HW6
Storing the Map • How to store the distance between two cities • so that, given two cities, we can find the distance quickly?
Storing the Map (graph) • How to store the distance between two cities • so that, given two cities, we can find the distance quickly? • Adjacency matrix • Table (2D array) • Rows and columns are cities • Cells have distance
Number of comparisons (speed of algorithm) • Comparing: • Shortest distance so far and • Distance of an alternative path • For updating what?
Number of comparisons (speed of algorithm) • Comparing: • Shortest distance so far and • Distance of an alternative path • For updating what? • Shortest distance so far
Number of comparisons (speed of algorithm) • Worst –case scenario • When does it occur?
Number of comparisons (speed of algorithm) • N is the number of cities • Worst –case scenario • When does it occur? • Every city is connected to every city • Maximum numbers of neighbors to explore
Worst-case scenario (speed of algorithm) • How many comparisons? • How many non-committed neighbors from the origin (in the first round)?
Worst-case scenario (speed of algorithm) • How many comparisons? • How many non-committed neighbors from the origin (in the first round)? • N – 1 comparisons • How many in the second round?
Worst-case scenario (speed of algorithm) • How many comparisons? • How many non-committed neighbors from the origin (in the first round)? • N – 1 comparisons • How many in the second round? • N – 2 comparisons • ... • How many in total?
Worst-case scenario (speed of algorithm) • How many comparisons? • How many non-committed neighbors from the origin (in the first round)? • N – 1 comparisons • How many in the second round? • N – 2 comparisons • ... • How many in total? • (N-1) + (N-2) + … + 1
Worst-case scenario (speed of algorithm) • How many comparisons? • How many non-committed neighbors from the origin (in the first round)? • N – 1 comparisons • How many in the second round? • N – 2 comparisons • ... • How many in total • (N-1) + (N-2) + … + 1 • (N-1)N/2 = (N2 – N)/2
Shortest Path Algorithm • Dijkstra’s Algorithm • In terms of vertices (cities) and edges (highways) in a graph • 1959 • more than 50 years ago • Navigation optimization • Cheapest (tolls) route? • Least traffic route? • Many applications
Summary • Navigation problem • Turn-by-turn directions • Simplified: city-by-city directions • Algorithms: • Greedy: might not yield shortest path • Dijkstra’s: always yield shortest path • Reasons for guarantee • Data structures in implementation • Quadratic comparisons in # of cities