DijkstraAlg

advertisement
RAIK 283
Data Structures & Algorithms
Dijkstra’s Algorithm
Dr. Ying Lu
[email protected]
1
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
» I have modified them and added new slides
2
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
3
Single-Source Shortest-Paths

For instance, the following edges form the shortest
paths from node A
A
6
4
5
H
9
B
14
C
2
10
G
E
3
F
15
D
8
4
Single-Source Shortest-Paths
• Hint: does this problem looks similar?
• Can we modify Prim’s algorithm to solve this problem?
A
6
4
5
H
9
B
14
C
2
10
G
E
3
F
15
D
8
5
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 )
6
Dijkstra’s algorithm
•
2704
•
BOS
867
ORD
•
849
PVD
187
1846
•
740
621
802
JFK
SFO
1464
•
184
1258
1391
337
BWI
0
LAX
144
1235
DFW
•
•
946
1121
2342
1090
MIA
•
7
Dijkstra’s algorithm
•
2704
•
621
BOS
867
ORD
•
849
PVD
187
1846
•
740
621
802
JFK
SFO
1464
•
184
184
1258
1391
337
BWI
0
LAX
144
1235
DFW
•
•
946
1121
2342
1090
MIA
•
946
8
Dijkstra’s algorithm
•
2704
BOS
867
621
ORD
•
849
PVD
187
1846
•
740
621
802
JFK
SFO
1464
184
184
1258
1391
337
BWI
0
LAX
144
1235
DFW
•
•
946
1121
2342
1090
MIA
946
9
Dijkstra’s algorithm
371
2704
BOS
867
621
ORD
328
849
PVD
187
1846
•
740
621
802
JFK
SFO
1464
184
184
1258
1391
337
BWI
0
LAX
144
1235
DFW
•
1575
946
1121
2342
1090
MIA
946
10
Dijkstra’s algorithm
371
2704
BOS
867
621
ORD
328
849
PVD
187
1846
•
3075
740
621
802
JFK
SFO
1464
184
184
1258
1391
337
BWI
0
LAX
144
1235
DFW
•
1575
946
1121
2342
1090
MIA
946
11
Dijkstra’s algorithm
371
2704
BOS
867
621
ORD
328
849
PVD
187
1846
740
621
3075
2467
802
JFK
SFO
1464
184
184
1258
1391
337
BWI
0
LAX
144
1235
DFW
•
1575
1423
946
1121
2342
1090
MIA
946
12
Dijkstra’s algorithm (cont)
371
2704
BOS
867
621
ORD
328
849
PVD
187
1846
740
621
2467
802
JFK
SFO
1464
184
184
1258
1391
337
BWI
0
LAX
144
1235
DFW
•
3288
1423
946
1121
2342
1090
MIA
946
13
Dijkstra’s algorithm (cont)
371
2704
BOS
867
621
ORD
328
849
PVD
187
1846
740
621
2467
802
JFK
SFO
1464
184
184
1258
1391
337
BWI
0
LAX
144
1235
DFW
1423
946
1121
3288
2658
2342
1090
MIA
946
14
Dijkstra’s algorithm (cont)
371
2704
BOS
867
621
ORD
328
849
PVD
187
1846
740
621
2467
802
JFK
SFO
1464
184
184
1258
1391
337
BWI
0
LAX
144
1235
DFW
1423
946
1121
2658
2342
1090
MIA
946
15
Dijkstra’s algorithm (cont)
371
2704
BOS
867
621
ORD
328
849
PVD
187
1846
740
621
2467
802
JFK
SFO
1464
184
184
1258
1391
337
BWI
0
LAX
144
1235
DFW
1423
946
1121
2658
2342
1090
MIA
946
16
In-Class Exercises
17
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.

18
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.
19
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
Download