Download presentation
Presentation is loading. Please wait.
Published byAntony Clarke Modified over 9 years ago
1
Shortest Paths and Dijkstra's Algorithm CS 110: Data Structures and Algorithms First Semester, 2010-2011
2
Single-Source Shortest Paths ► Given a weighted graph G and a source vertex v in G, determine the shortest paths from v to all other vertices in G ► Path length: sum of all edges in path ► Useful in road map applications (e.g., Google maps or map quest) for example
3
Dijkstra’s Algorithm ► Solves the single-source shortest path problem ► Involves keeping a table of current shortest path lengths from a source vertex (initialize to infinity for all vertices except v, which has length 0)
4
Dijkstra’s Algorithm ► 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
5
Dijkstra’s Algorithm ► Can make use of a priority queue to facilitate selection of shortest lengths ► Need to refine the data structure to allow the updating of key values ► Time complexity: O(n+m) or O(n 2 log n) ► O(n 2 ) if computation of minimum is simplified
6
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Dijkstra’s Algorithm
7
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ 0 Dijkstra’s Algorithm
8
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 ∞ 621 ∞ ∞ 946 ∞ 184 ∞ 0 Dijkstra’s Algorithm
9
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 ∞ 621 ∞ ∞ 946 ∞ 184 ∞ 0 Dijkstra’s Algorithm
10
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 328 621 ∞ ∞ 946 371 184 1575 0 Dijkstra’s Algorithm
11
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 328 621 ∞ ∞ 946 371 184 1575 0 Dijkstra’s Algorithm
12
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 328 621 ∞ ∞ 946 371 184 1575 0 Dijkstra’s Algorithm
13
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 328 621 ∞ ∞ 946 371 184 1575 0 Dijkstra’s Algorithm
14
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 328 621 3075 ∞ 946 371 184 1575 0 Dijkstra’s Algorithm
15
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 328 621 3075 ∞ 946 371 184 1575 0 Dijkstra’s Algorithm
16
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 328 621 2467 ∞ 946 371 184 1423 0 Dijkstra’s Algorithm
17
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 328 621 2467 ∞ 946 371 184 1423 0 Dijkstra’s Algorithm
18
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 328 621 2467 3288 946 371 184 1423 0 Dijkstra’s Algorithm
19
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 328 621 2467 3288 946 371 184 1423 0 Dijkstra’s Algorithm
20
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 328 621 2467 3288 946 371 184 1423 0 Dijkstra’s Algorithm
21
MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 328 621 2467 2658 946 371 184 1423 0 Dijkstra’s Algorithm
22
Pseudo-Code: Dijkstra function Dijkstra( Graph g, Vertex source ) for each vertex v in g dist[v] <-- infinity previous[v] <-- undefined dist[source] <-- 0 Q <-- the set of all nodes in Graph while Q is not empty u <-- vertex in Q with smallest dist[] if dist[u] == infinity break remove u from Q for each neighbor v of u alt = dist[u] + dist_between( u, v ) if alt < dist[v] dist[v] = alt previous[v] = u return dist[]
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.