Introduction to Algorithms 6.46J/.4J LECTURE 7 Shortest Paths I Properties o shortest paths Dijkstra s Correctness Analysis Breadth-irst Paths in graphs Consider a digraph G = (V, E) with edge-weight unction w : EoR. The weight o path p = v o v o ov k is deined to be k w( v i, v i i w ( p) ). Pro. Erik Demaine November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. Paths in graphs Consider a digraph G = (V, E) with edge-weight unction w : EoR. The weight o path p = v o v o ov k is deined to be Example: k w( v i, v i i w ( p) ). Shortest paths A shortest path rom u to v is a path o minimum weight rom u to v. The shortestpath weight rom u to v is deined as G(u, v) = min{w(p) : p is a path rom u to v}. Note:G(u, v) = i no path rom u to v exists. v 4 v 5 v v 4 v 5 v 4 v 5 w(p) = November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.4
Optimal substructure Theorem. A subpath o a shortest path is a shortest path. Optimal substructure Theorem. A subpath o a shortest path is a shortest path. Proo. Cut and paste: November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.5 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.6 Optimal substructure Theorem. A subpath o a shortest path is a shortest path. Proo. Cut and paste: Triangle inequality Theorem. For all u, v, x V, we have G(u, v) dg(u, x) + G(x, v). November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.7 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.
Triangle inequality Theorem. For all u, v, x V, we have G(u, v) dg(u, x) + G(x, v). Well-deinedness o shortest paths I a graph G contains a negative-weight cycle, then some shortest paths may not exist. Proo. uu G(u, v) G(u, x) G(x, v) xx vv November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.9 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. Well-deinedness o shortest paths I a graph G contains a negative-weight cycle, then some shortest paths may not exist. Example: uu < November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. vv Single-source shortest paths Problem. From a given source vertex s V, ind the shortest-path weights G(s, v) or all v V. I all edge weights w(u, v) are nonnegative, all shortest-path weights must exist. IDEA: Grdy.. Maintain a set S o vertices whose shortestpath distances rom s are known.. At each step a to S the vertex v V S whose distance estimate rom s is minimal.. Update the distance estimates o vertices adjacent to v. November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.
Dijkstra s d[s] m or each v V {s} do d[v] m Sm QmV Q is a priority queue maintaining V S Dijkstra s d[s] m or each v V {s} do d[v] m Sm QmV Q is a priority queue maintaining V S do u m EXTRACT-MIN(Q) SmS {u} or each v Adj[u] [MXLZJVSQ5 do i d[v] > d[u] + w(u, v) then d[v] m d[u] + w(u, v) MJH?YA!MRJMRMX]FVIEO )EPPVIQEMRMRK ZIVXMGIWEVIRSX EGGIWWMFPIJVSQ WSYVGI November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.4 Dijkstra s d[s] m or each v V {s} do d[v] m Sm QmV Q is a priority queue maintaining V S do u m EXTRACT-MIN(Q) SmS {u} or each v Adj[u] [MXLZJVSQ5 do i d[v] > d[u] + w(u, v) then d[v] m d[u] + w(u, v) TVIZ?ZA!Y Implicit DECREASE-KEY MJH?YA!MRJMRMX]FVIEO )EPPVIQEMRMRK ZIVXMGIWEVIRSX EGGIWWMFPIJVSQ WSYVGI relaxation step November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.5 Example o Dijkstra s Graph with nonnegative edge weights: November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.6 BB D 4 7 9 EE
Initialize: Example o Dijkstra s BB D 4 7 9 Q: A B C D E EE S: {} Example o Dijkstra s A mextract-min(q): BB D 4 7 9 Q: A B C D E EE S: { A } November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.7 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. Example o Dijkstra s Relax all edges leaving A: Q: A B C D E S: { A } 4 7 9 EE Example o Dijkstra s C mextract-min(q): Q: A B C D E 4 7 9 S: { A, C } EE November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.9 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.
Q: Example o Dijkstra s Relax all edges leaving C: A B C D E 7 5 7 4 7 9 S: { A, C } EE 5 Q: Example o Dijkstra s E mextract-min(q): A B C D E 7 5 7 4 7 9 EE 5 S: { A, C, E } November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. Q: Example o Dijkstra s Relax all edges leaving E: A B C D E 7 5 7 7 4 7 9 EE 5 S: { A, C, E } Example o Dijkstra s B mextract-min(q): Q: A B C D E 7 5 7 7 4 7 9 EE 5 S: { A, C, E, B } November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.4
Q: Example o Dijkstra s Relax all edges leaving B: A B C D E 7 5 7 9 7 9 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.5 4 7 9 EE 5 S: { A, C, E, B } Q: Example o Dijkstra s D mextract-min(q): A B C D E 7 5 7 9 7 9 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.6 4 7 9 EE 5 S: { A, C, E, B, D } Correctness Part I Lemma. Initializing d[s] m and d[v] m or all v V {s} establishes d[v] tg(s, v) or all v V, and this invariant is maintained over any sequence o relaxation steps. November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.7 Correctness Part I Lemma. Initializing d[s] m and d[v] m or all v V {s} establishes d[v] tg(s, v) or all v V, and this invariant is maintained over any sequence o relaxation steps. Proo. Suppose not. Let v be the irst vertex or which d[v] < G(s, v), and let u be the vertex that caused d[v] to change: d[v] = d[u] + w(u, v). Then, d[v] < G(s, v) supposition dg(s, u) + G(u, v) triangle inequality dg(s,u) + w(u, v) sh. path d specc path d d[u] + w(u, v) v is irst violation Contradiction. November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.
Correctness Part II Lemma. Let u be v s predecessor on a shortest path rom s to v. Then, i d[u] = G(s, u) and edge (u, v) is relaxed, we have d[v] G(s, v) ater the relaxation. Correctness Part II Lemma. Let u be v s predecessor on a shortest path rom s to v. Then, i d[u] = G(s, u) and edge (u, v) is relaxed, we have d[v] G(s, v) ater the relaxation. Proo. Observe that G(s, v) = G(s, u)+ w(u, v). Suppose that d[v] > G(s, v) beore the relaxation. (Otherwise, we re done.) Then, the test d[v] > d[u] + w(u, v) suds, because d[v] > G(s, v) = G(s, u)+ w(u, v) = d[u] + w(u, v), and the sets d[v] = d[u] + w(u, v) = G(s, v). November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.9 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. Correctness Part III Theorem. Dijkstra s terminates with d[v] = G(s, v) or all v V. November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. Correctness Part III Theorem. Dijkstra s terminates with d[v] = G(s, v) or all v V. Proo. It suices to show that d[v] = G(s, v) or every v V when v is aed to S. Suppose u is the irst vertex aed to S or which d[u]!g(s, u). Let y be the irst vertex in V S along a shortest path rom s to u, and let x be its predecessor: S, just beore aing u. ss November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. xx yy uu
Correctness Part III (continued) ss S Since u is the irst vertex violating the claimed invariant, we have d[x] = G(s, x). When x was aed to S, the edge (x, y) was relaxed, which implies that d[y] =G(s, y) dg(s, u) d[u]. But, d[u] d d[y] by our choice o u. Contradiction. xx yy uu Analysis o Dijkstra do u m EXTRACT-MIN(Q) SmS {u} or each v Adj[u] do i d[v] > d[u] + w(u, v) then d[v] m d[u] + w(u, v) November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.4 Analysis o Dijkstra Analysis o Dijkstra V times do u m EXTRACT-MIN(Q) SmS {u} or each v Adj[u] do i d[v] > d[u] + w(u, v) then d[v] m d[u] + w(u, v) V times degr(u) times do u m EXTRACT-MIN(Q) SmS {u} or each v Adj[u] do i d[v] > d[u] + w(u, v) then d[v] m d[u] + w(u, v) November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.5 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.6
Analysis o Dijkstra Analysis o Dijkstra V times degr(u) times do u m EXTRACT-MIN(Q) SmS {u} or each v Adj[u] do i d[v] > d[u] + w(u, v) then d[v] m d[u] + w(u, v) V times degr(u) times do u m EXTRACT-MIN(Q) SmS {u} or each v Adj[u] do i d[v] > d[u] + w(u, v) then d[v] m d[u] + w(u, v) Handshaking Lemma Ÿ4(E) implicit DECREASE-KEY s. November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.7 Handshaking Lemma Ÿ4(E) implicit DECREASE-KEY s. Time = 4(V T EXTRACT-MIN + E T DECREASE-KEY ) Note: Same ormula as in the analysis o Prim s minimum spanning tr. November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7. Analysis o Dijkstra (continued) Time = 4(V) T EXTRACT-MIN + 4(E) T DECREASE-KEY Q T EXTRACT-MIN T DECREASE-KEY Total Analysis o Dijkstra (continued) Time = 4(V) T EXTRACT-MIN + 4(E) T DECREASE-KEY Q T EXTRACT-MIN T DECREASE-KEY Total array O(V) O() O(V ) November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.9 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.4
Analysis o Dijkstra (continued) Time = 4(V) T EXTRACT-MIN + 4(E) T DECREASE-KEY Q T EXTRACT-MIN T DECREASE-KEY Total array O(V) O() O(V ) binary heap O(lg V) O(lg V) O(E lg V) Analysis o Dijkstra (continued) Time = 4(V) T EXTRACT-MIN + 4(E) T DECREASE-KEY Q T EXTRACT-MIN T DECREASE-KEY Total array O(V) O() O(V ) binary heap Fibonai heap O(lg V) O(lg V) O(E lg V) O(lg V) amortized O() amortized O(E + V lg V) worst case November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.4 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.4 Unweighted graphs Suppose that w(u, v) = or all (u, v) E. Can Dijkstra s be improved? Unweighted graphs Suppose that w(u, v) = or all (u, v) E. Can Dijkstra s be improved? Use a simple FIFO queue instead o a priority queue. November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.4 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.44
Unweighted graphs Suppose that w(u, v) = or all (u, v) E. Can Dijkstra s be improved? Use a simple FIFO queue instead o a priority queue. Breadth-irst do umdequeue(q) or each v Adj[u] do i d[v] = then d[v] m d[u] + ENQUEUE(Q, v) November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.45 Unweighted graphs Suppose that w(u, v) = or all (u, v) E. Can Dijkstra s be improved? Use a simple FIFO queue instead o a priority queue. Breadth-irst do umdequeue(q) or each v Adj[u] do i d[v] = then d[v] m d[u] + ENQUEUE(Q, v) Analysis: Time = O(V + E). November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.46 Example o breadth-irst Example o breadth-irst aa aa Q: Q: a November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.47 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.4
Example o breadth-irst Example o breadth-irst aa Q: a b d aa Q: a b d c e November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.49 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.5 Example o breadth-irst Example o breadth-irst aa Q: a bdc e aa Q: a bdce November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.5 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.5
Example o breadth-irst aa Q: a b d c e g i Example o breadth-irst aa 4 4 Q: a b d c e g i November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.5 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.54 Example o breadth-irst aa 4 4 4 4 Q: a b d c e g i h Example o breadth-irst aa 4 4 4 Q: a b d c e g i h November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.55 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.56
Example o breadth-irst aa 4 4 Q: a b d c e g i h Example o breadth-irst aa 4 4 Q: a b d c e g i h November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.57 November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.5 Correctness o BFS do umdequeue(q) or each v Adj[u] do i d[v] = then d[v] m d[u] + ENQUEUE(Q, v) Key idea: The FIFO Q in breadth-irst mimics the priority queue Q in Dijkstra. Invariant: v comes ater u in Q implies that d[v] = d[u] or d[v] = d[u] +. November 4, 5 Copyright -5 by Erik D. Demaine and Charles E. Leiserson L7.59