200 likes | 333 Views
RAIK 283 Data Structures & Algorithms. Dijkstra’s Algorithm Dr. Ying Lu ylu@cse.unl.edu. RAIK 283 Data Structures & Algorithms. Giving credit where credit is due: Most of slides for this lecture are based on slides created by Dr. John Vergara at Ateneo De Manila University
E N D
RAIK 283Data Structures & Algorithms Dijkstra’s Algorithm Dr. Ying Lu ylu@cse.unl.edu
RAIK 283Data Structures & Algorithms • Giving credit where credit is due: • Most of slides for this lecture are based on slides created by Dr. John Vergara at Ateneo De Manila University • I have modified them and added new slides
Single-Source Shortest-Paths Problem • Problem: given a connected graph G with non-negative weights on the edges and a source vertex s in G, determine the shortest paths from s to all other vertices in G. • Useful in many applications (e.g., road map applications) 6 4 5 9 14 2 10 15 3 8
Single-Source Shortest-Paths • For instance, the following edges form the shortest paths from node A A 6 4 5 9 H B C 14 2 10 15 G E D 3 8 F
Single-Source Shortest-Paths • Hint: does this problem looks similar? • Can we modify Prim’s algorithm to solve this problem? A 6 4 5 9 H B C 14 2 10 15 G E D 3 8 F
Dijkstra’s Algorithm • Solves the single-source shortest paths problem • Involves keeping a table of current shortest path lengths from source vertex (initialize to infinity for all vertices except s, which has length 0) • Repeatedly select the vertex u with shortest path length, and update other lengths by considering the path that passes through that vertex • Stop when all vertices have been selected • Could use a priority queue to facilitate selection of shortest lengths • Here, priority is defined differently from that of the Prim’s algorithm • Like Prim’s algorithm, it needs to refine data structure so that the update of key-values in priority queue is allowed • Like Prim’s algorithm, time complexity is O( (n + m) log n )
Dijkstra’s algorithm • 2704 BOS 867 • ORD • 849 PVD 187 1846 144 740 621 • 802 JFK SFO • 1464 184 1258 1391 337 BWI 1090 0 DFW 1235 LAX • 946 1121 • MIA 2342 •
Dijkstra’s algorithm • 2704 BOS 867 621 • ORD • 849 PVD 187 1846 144 740 621 • 802 JFK SFO • 184 1464 184 1258 1391 337 BWI 1090 0 DFW 1235 LAX • 946 1121 • MIA 2342 946 •
Dijkstra’s algorithm • 2704 BOS 867 621 ORD • 849 PVD 187 1846 144 740 621 • 802 JFK JFK SFO 184 1464 184 1258 1391 337 BWI 1090 0 DFW 1235 LAX • 946 1121 • MIA 2342 946
Dijkstra’s algorithm 371 2704 BOS 867 621 ORD 328 849 PVD PVD 187 1846 144 740 621 • 802 JFK SFO 184 1464 184 1258 1391 337 BWI 1090 0 DFW 1235 LAX 1575 946 1121 • MIA 2342 946
Dijkstra’s algorithm 371 2704 BOS BOS 867 621 ORD 328 849 PVD 187 1846 144 740 621 3075 • 802 JFK SFO 184 1464 184 1258 1391 337 BWI 1090 0 DFW 1235 LAX 1575 946 1121 • MIA 2342 946
Dijkstra’s algorithm 371 2704 BOS 867 621 ORD ORD 328 849 PVD 187 1846 144 740 621 2467 3075 802 JFK SFO 184 1464 184 1258 1391 337 BWI 1090 0 DFW 1235 LAX 1423 1575 946 1121 • MIA 2342 946
Dijkstra’s algorithm (cont) 371 2704 BOS 867 621 ORD 328 849 PVD 187 1846 144 740 621 2467 802 JFK SFO 184 1464 184 1258 1391 337 BWI 1090 0 DFW 1235 LAX 1423 946 1121 • 3288 MIA MIA 2342 946
Dijkstra’s algorithm (cont) 371 2704 BOS 867 621 ORD 328 849 PVD 187 1846 144 740 621 2467 802 JFK SFO 184 1464 184 1258 1391 337 BWI 1090 0 DFW DFW 1235 LAX 1423 946 1121 2658 3288 MIA 2342 946
Dijkstra’s algorithm (cont) 371 2704 BOS 867 621 ORD 328 849 PVD 187 1846 144 740 621 2467 802 JFK SFO SFO 184 1464 184 1258 1391 337 BWI 1090 0 DFW 1235 LAX 1423 946 1121 2658 MIA 2342 946
Dijkstra’s algorithm (cont) 371 2704 BOS 867 621 ORD 328 849 PVD 187 1846 144 740 621 2467 802 JFK SFO 184 1464 184 1258 1391 337 BWI 1090 0 DFW 1235 LAX LAX 1423 946 1121 2658 MIA 2342 946
In-Class Exercises • Design a linear-time, (i.e., ( n + m)) algorithm for solving the single-source shortest-paths problem for dags (directed acyclic graphs) represented by their adjacency lists. • Hint: topologically sort the dag’s vertices first.
In-Class Exercise • Suppose a person is making a travel plan driving from city 1 to city n, n > 1, following a route that will go through cities 2 through n –1 in between. The person knows the mileages between adjacent cities, and knows how many miles a full tank of gasoline can travel. Based on this information, the problem is to minimize the number of stops for filling up the gas tank, assuming there is exactly one gas station in each of the cities. Design a greedy algorithm to solve this problem and analyze its time complexity.
fill up the gas tank in City 1 for c = 2 to n –1 do // decide whether to stop in City c for gas while approaching (2.1) if there is still enough gas to go to City (c+1) then don’t stop in City c (2.2) else fill up the gas tank in City c It can be proved that this greedy algorithm minimizes the number of gas stops. The time complexity is O(n) because the loop in Step (2) runs O(n) iterations in which each iteration uses O(1) time (in Steps (2.1) and (2.2)). Proofs Techniques for Greedy Algorithms