CMPS 6610 Algorithms
CMPS 6610 – Fall 2018
Shortest Paths
Carola Wenk
Slides courtesy of Charles Leiserson with changes and additions by Carola Wenk
Shortest Paths Carola Wenk Slides courtesy of Charles Leiserson - - PowerPoint PPT Presentation
CMPS 6610 Fall 2018 Shortest Paths Carola Wenk Slides courtesy of Charles Leiserson with changes and additions by Carola Wenk CMPS 6610 Algorithms Paths in graphs Consider a digraph G = ( V , E ) with an edge-weight function w : E .
CMPS 6610 Algorithms
Slides courtesy of Charles Leiserson with changes and additions by Carola Wenk
2 CMPS 6610 Algorithms
1 1 1)
k i i i v
4 –2 –5 1
3 CMPS 6610 Algorithms
4 CMPS 6610 Algorithms
5 CMPS 6610 Algorithms
(u, v) (u, x) (x, v)
to v
shortest paths from u to x and from x to v yields one specific path from u to v
6 CMPS 6610 Algorithms
5
2
7 CMPS 6610 Algorithms
s are known, i.e., d[v]=(s,v)
estimate d[u] from s is minimal.
8 CMPS 6610 Algorithms
9 CMPS 6610 Algorithms
Q V PRIM’s algorithm key[v] for all v V key[s] 0 for some arbitrary s V while Q do u EXTRACT-MIN(Q) for each v Adj[u] do if v Q and w(u, v) < key[v] then key[v] w(u, v) [v] u
Difference to Prim’s:
it doesn’t hurt to check all v
10 CMPS 6610 Algorithms
11 CMPS 6610 Algorithms
while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) [v] u
12 CMPS 6610 Algorithms
while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) [v] u
13 CMPS 6610 Algorithms
while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) [v] u
14 CMPS 6610 Algorithms
10
u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) [v] u
15 CMPS 6610 Algorithms
10
u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) [v] u
16 CMPS 6610 Algorithms
10
while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) [v] u
17 CMPS 6610 Algorithms
10 7 11 5
while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) [v] u
18 CMPS 6610 Algorithms
10 7 11 5
while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) [v] u
C C C
19 CMPS 6610 Algorithms
10 7 11 5
C C C
while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) [v] u
20 CMPS 6610 Algorithms
10 7 11 5 7 11
C C C
while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) [v] u
21 CMPS 6610 Algorithms
10 7 11 5 7 11
C C C
while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) [v] u
22 CMPS 6610 Algorithms
10 7 11 5 7 11
9
C B C
while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) [v] u
23 CMPS 6610 Algorithms
10 7 11 5 7 11 9
C B C
while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) [v] u
24 CMPS 6610 Algorithms
25 CMPS 6610 Algorithms
26 CMPS 6610 Algorithms
27 CMPS 6610 Algorithms
28 CMPS 6610 Algorithms
29 CMPS 6610 Algorithms
weights are nonnegative assumption about path
30 CMPS 6610 Algorithms
31 CMPS 6610 Algorithms
while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v)
32 CMPS 6610 Algorithms
33 CMPS 6610 Algorithms
34 CMPS 6610 Algorithms
35 CMPS 6610 Algorithms
36 CMPS 6610 Algorithms
37 CMPS 6610 Algorithms
38 CMPS 6610 Algorithms
39 CMPS 6610 Algorithms
40 CMPS 6610 Algorithms
41 CMPS 6610 Algorithms
a a
42 CMPS 6610 Algorithms
a a
43 CMPS 6610 Algorithms
a a
44 CMPS 6610 Algorithms
a a
Distance to a: 1 2 3 4
45 CMPS 6610 Algorithms
46 CMPS 6610 Algorithms
47 CMPS 6610 Algorithms
Order of edges: (B,E), (D,B), (B,D), (A,B), (A,C), (D,C), (B,C), (E,D)
48 CMPS 6610 Algorithms
Order of edges: (B,E), (D,B), (B,D), (A,B), (A,C), (D,C), (B,C), (E,D)
49 CMPS 6610 Algorithms
Order of edges: (B,E), (D,B), (B,D), (A,B), (A,C), (D,C), (B,C), (E,D)
50 CMPS 6610 Algorithms
Order of edges: (B,E), (D,B), (B,D), (A,B), (A,C), (D,C), (B,C), (E,D)
51 CMPS 6610 Algorithms
Order of edges: (B,E), (D,B), (B,D), (A,B), (A,C), (D,C), (B,C), (E,D)
52 CMPS 6610 Algorithms
Order of edges: (B,E), (D,B), (B,D), (A,B), (A,C), (D,C), (B,C), (E,D)
53 CMPS 6610 Algorithms
Order of edges: (B,E), (D,B), (B,D), (A,B), (A,C), (D,C), (B,C), (E,D)
54 CMPS 6610 Algorithms
Order of edges: (B,E), (D,B), (B,D), (A,B), (A,C), (D,C), (B,C), (E,D)
55 CMPS 6610 Algorithms
Order of edges: (B,E), (D,B), (B,D), (A,B), (A,C), (D,C), (B,C), (E,D)
56 CMPS 6610 Algorithms
57 CMPS 6610 Algorithms
58 CMPS 6610 Algorithms
59 CMPS 6610 Algorithms
60 CMPS 6610 Algorithms
61 CMPS 6610 Algorithms
62 CMPS 6610 Algorithms
63 CMPS 6610 Algorithms
64 CMPS 6610 Algorithms
(k) = weight of a shortest path from i
(n). Also, cij (0) = aij .
65 CMPS 6610 Algorithms
(k) = min {cij (k–1), cik (k–1) + ckj (k–1)}
(k–1)
(k–1)
(k–1)
66 CMPS 6610 Algorithms
(k-1) > cik
(k-1) + ckj (k-1) then
(k) cik (k-1) + ckj (k-1)
(k) cij (k-1)
67 CMPS 6610 Algorithms
(k) = tij (k–1) (tik (k–1) tkj (k–1)).
Floyd-Warshall recurrence
(k) = min {cij (k–1), cik (k–1) + ckj (k–1)}
68 CMPS 6610 Algorithms
69 CMPS 6610 Algorithms
) ( ) ( ) ( ) ( ) ( ) , ( ) ( ) ( ) , ( ) , ( ˆ ) ( ˆ
1 1 1 1 1 1 1 1 1 1 1 1 k k k i i i k i i i i i k i i i
v h v h p w v h v h v v w v h v h v v w v v w p w
70 CMPS 6610 Algorithms
^ ^
71 CMPS 6610 Algorithms