Title: Geography and CS
1Geography and CS
2How do I get there?
- Navigation
- Which web sites can give you turn-by-turn
directions?
3NavigationProblem 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
4Consider 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
-
5NavigationProblem Formulation
- Given (input)
- Map (cities and highways)
- Origin city
- Destination city
- Find (output)
- City-by-city route between origin and destination
cities
6Graph Problem
- A graph has vertices and edges
- Cities -gt vertices
- Highways -gt edges
- City-by-city route -gt shortest path
7Shortest Path Problem
- How would you solve the shortest path problem?
8Algorithm 1
- Greedy algorithm
- Pick the closest city
- Go to the city
- Repeat until the destination city is reached
9Algorithm 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?
10Problem with Algorithm 1
- What is the main problem?
11Problem with Algorithm 1
- What is the main problem?
- Committing to the next city too soon
- Any ideas for improvement?
12Algorithm 2
- Exhaustive algorithm
- Explore/generate all possible paths
- Not just the ones that look short
- Compare all possible paths
13Greedy vs Exhaustive
- Greedy doesnt guarantee the shortest path
14Greedy vs Exhaustive
- Greedy doesnt guarantee the shortest path
- Greedy is faster
15Greedy vs Exhaustive
- Greedy doesnt guarantee the shortest path
- Greedy is faster
- Greedy requires less memory
16Algorithm 3
- smart algorithm
- Guarantees the shortest path
- Faster than Exhaustive algorithm
- Any ideas on what we can ignore?
17Algorithm 3
- Smart algorithm
- Similar to Exhaustive
- explore all alternatives from each city
- Ignore alternative paths that are not shorter
18Algorithm 4
- Smarter algorithm
- Dijkstras algorithm
- Any ideas on additional alternatives that can be
ignored?
19Algorithm 4
- Smarter algorithm
- Dijkstras algorithm
- Any ideas on additional alternatives that can be
ignored? - Hint we can commit certain cities earlier
- Cant have a shorter path to those cities
- Ignore the committed cities later
20Algorithm 4
- Keep track of alternative paths
- Commit to the next city when
- we are sure it is shortest
- no other paths are shorter
21Algorithm 4
- Let the current city be the origin (I)
- While the current city is not the destination(C)
- Explore neighboring non-committed cities Xs of
the current city - if new path to X is shorter than current path to
X - Update current path to X (ie, ignore the longer
path) - Find the non-committed city that has the shortest
path length - Commit that city
- Update the current city to the committed city (U)
22Algorithm 4
- Why does it guarantee to find the shortest path?
- The shortest path to city X is committed
- When?
23Algorithm 4
- 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
24Algorithm 4
- 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
25Dijkstras shortest path algorithm
- Interesting applet to demonstrate the alg
- http//www.dgp.toronto.edu/people/JamesStewart/270
/9798s/Laffra/DijkstraApplet.html
26Comparing the Four Algorithms
- Greedy
- Commit to closest neighboring city
- Exhaustive
- Consider all possible paths, compare all paths
- Smart
- Consider all neighboring cities, compare old and
new paths, ignore the longer one - Smarter (Dijkstras)
- Consider only non-committed neighboring cities,
compare old and new paths, ignore the worse one
27Implementation of Dijkstras Algorithm
- Keeping track of information needed by the
algorithm
28Implementation 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)
29What to keep track (data)?
30What to keep track (data)?
- Whether a city is committed
31What to keep track (data)?
- Whether a city is committed
- What is the shortest distance so far for a city
32What 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?
33What 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?
- committedcity
- pathLengthcity
- aka shortestDistancecity
34How to keep track (instructions)?
35Implementation 2
- We would like to know the intermediate cities as
well - the shortest path, not just the shortest distance
36What to keep track (data)?
- Whether a city is committed
- What is the shortest distance so far for a city
- What else?
37What 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?
38What 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?
39What 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
40What 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?
- committedcity
- pathLengthcity
- aka shortestDistancecity
41What 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?
- committedcity
- pathLengthcity
- aka shortestDistancecity
- parentcity
- aka previousCitycity
42Algorithm 4 with data tracking
- Let the current city be the origin (I)
- While the current city is not the destination(C)
- Explore neighboring non-committed cities Xs of
the current city - if new path to X is shorter than current path to
X - Update current path to X (pathLengthX,
parentX) - Find the non-committed city that has the shortest
path length - Commit that city (committedcity)
- Update the current city to the committed city (U)
43Storing the map
- How to store the distance between two cities
- so that, given two cities, we can find the
distance quickly?
44How to keep track (instructions)?
45Storing the Map
- How to store the distance between two cities
- so that, given two cities, we can find the
distance quickly?
46Storing 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
47Number of comparisons (speed of algorithm)
- Comparing
- Shortest distance so far and
- Distance of an alternative path
- For updating what?
48Number of comparisons (speed of algorithm)
- Comparing
- Shortest distance so far and
- Distance of an alternative path
- For updating what?
- Shortest distance so far
49Number of comparisons (speed of algorithm)
- Worst case scenario
- When does it occur?
50Number 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
51Worst-case scenario (speed of algorithm)
- How many comparisons?
- How many non-committed neighbors from the origin
(in the first round)?
52Worst-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?
53Worst-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?
54Worst-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
55Worst-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
56Shortest Path Algorithm
- Dijkstras 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
57Summary
- Navigation problem
- Turn-by-turn directions
- Simplified city-by-city directions
- Algorithms
- Greedy might not yield shortest path
- Dijkstras always yield shortest path
- Reasons for guarantee
- Data structures in implementation
- Quadratic comparisons in of cities