Transcript
Page 2: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

2

Edsger Wybe Dijkstra (May 11, 1930 – August 6, 2002)

• Born in Rotterdam, Dijkstra studied theoretical physics at Leiden University, but he quickly realized he was more interested in computer science.

• Originally employed by the Mathematisch Centrum in Amsterdam, he held a professorship at the Eindhoven University of Technology in the Netherlands, worked as a research fellow for Burroughs Corporation in the early 1970s, and later held the Schlumberger Centennial Chair in Computer Sciences at The University of Texas at Austin, in the United States. He retired in 2000

Page 3: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

3

Paths in graphs

Consider a digraph G = (V, E) with edge-weightfunction w : E → . The weight of path p = v1 →v2 → → vk is defined to be

Example :

Page 4: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

4

Shortest paths

A shortest path from u to v is a path ofminimum weight from u to v. The shortest-path weight from u to v is defined as

(u, v) = min{w(p) : p is a path from u to v}.

Note: (u, v) = if no path from u to v exists.

Page 5: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

5

Optimal substructure

Theorem. A subpath of a shortest path is ashortest path.

Proof. Cut and paste:

Page 6: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

6

Triangle inequality

Theorem. For all u, v, x V, we have(u, v) (u, x) + (x, v).

Proof.

Page 7: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

7

Well-definedness of shortest paths

If a graph G contains a negative-weight cycle,then some shortest paths may not exist.

Example:

Page 8: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

8

Single-source shortest pathsProblem. From a given source vertex s V, findthe shortest-path weights (s, v) for all v V.

If all edge weights w(u, v) are nonnegative, allshortest-path weights must exist.

IDEA: Greedy. 1. Maintain a set S of vertices whose shortest-path distances from s are known.2. At each step add to S the vertex v V – S whose distance estimate from s is minimal.3. Update the distance estimates of vertices adjacent to v.

Page 9: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

9

d[s] ← 0for each v V – {s} do d[v] ← S ← Q ← V ⊳ Q is a priority queue maintaining V – Swhile Q ≠ do u ← Extract-Min(Q) S ← S {u} for each v Adj[u] do

Dijkstra’s algorithm

Implicit DECREASE-KEY

relaxationstepif d[v] > d[u] + w(u, v)

then d[v] ← d[u] + w(u, v)

Page 10: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

10

Example of Dijkstra’salgorithm

Graph withnonnegativeedge weights:

Page 11: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

11

Example of Dijkstra’salgorithm

S : {}

Page 12: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

12

Example of Dijkstra’salgorithm

S : {A}

Page 13: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

13

Example of Dijkstra’salgorithm

S : {A}

Page 14: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

14

Example of Dijkstra’salgorithm

S : {A,C}

Page 15: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

15

Example of Dijkstra’salgorithm

Page 16: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

16

Example of Dijkstra’salgorithm

Page 17: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

17

Example of Dijkstra’salgorithm

Page 18: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

18

Example of Dijkstra’salgorithm

Page 19: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

19

Example of Dijkstra’salgorithm

Page 20: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

20

Example of Dijkstra’salgorithm

Page 21: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

21

Correctness — Part ILemma. Initializing d[s] ← 0 and d[v] ← for allv V – {s} establishes d[v] ≥ (s, v) for all v V,and this invariant is maintained over any sequenceof relaxation steps.Proof. Suppose not. Let v be the first vertex forwhich d[v] < (s, v), and let u be the vertex thatcaused d[v] to change: d[v] = d[u] + w(u, v). Then, d[v] < (s, v) supposition ≤ (s, u) + (u, v) triangle inequality ≤ (s,u) + w(u, v) sh. path ≤ specific path ≤ d[u] + w(u, v) v is first violationContradiction.

Page 22: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

22

Correctness — Part IITheorem. Dijkstra’s algorithm terminates withd[v] = (s, v) for all v V.Proof. It suffices to show that d[v] = (s, v) for everyv V when v is added to S. Suppose u is the firstvertex added to S for which d[u] ≠ (s, u). Let y be the first vertex in V – S along a shortest path from s to u, and let x be its predecessor:

Page 23: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

23

Correctness — Part II(continued)

Since u is the first vertex violating the claimed invariant,we have d[x] = (s, x). Since subpaths of shortest pathsare shortest paths, it follows that d[y] was set to (s, x) +w(x, y) = (s, y) when (x, y) was relaxed just after x wasadded to S. Consequently, we have d[y] = (s, y) ≤ (s, u)≤ d[u]. But, d[u] ≤ d[y] by our choice of u, and hence d[y]= (s, y) = (s, u) = d[u]. Contradiction.

Page 24: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

24

Analysis of Dijkstra

|V|times degree(u

)times

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)

Handshaking Lemma (E) implicit DECREASE-KEY’s.

Time = (V)·TEXTRACT-MIN + (E)·TDECREASE-KEY

Note: Same formula as in the analysis of Prim’sminimum spanning tree algorithm.

Page 25: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

25

Analysis of Dijkstra(continued)

Time = (V)·TEXTRACT-MIN + (E)·TDECREASE-KEY

Q TEXTRACT-MIN TDECREASE-KEY Total

array O(V) O(1) O(V2)

binaryheap

O(lg V) O(lg V) O(E lg V)

Fibonacciheap

O(lg V)amortized

O(1)amortized

O(E + V lg V)worst case

Page 26: 1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra 1930-2002

26

Unweighted graphsSuppose w(u, v) = 1 for all (u, v) E. Can thecode for Dijkstra be improved?

• Use a simple FIFO queue instead of a priority queue.• Breadth-first search

while Q ≠ do u ← DEQUEUE(Q) for each v Adj[u] do if d[v] = then d[v] ← d[u] + 1 ENQUEUE(Q, v)

Analysis: Time = O(V + E).


Top Related