Dijkstra’s Algorithm

7
Dijkstra’s Algorithm Dijkstra’s Algorithm

description

Dijkstra’s Algorithm. Dijkstra’s Algorithm. This algorithm finds the shortest path from a source vertex to all other vertices in a weighted directed graph without negative edge weights. 5. 10. 2. a. b. d. 2. 3. 8. 4. 3. 4. 12. e. c. 16. 13. Dijkstra’s Algorithm. - PowerPoint PPT Presentation

Transcript of Dijkstra’s Algorithm

Page 1: Dijkstra’s  Algorithm

Dijkstra’s AlgorithmDijkstra’s Algorithm

Page 2: Dijkstra’s  Algorithm

Dijkstra’s AlgorithmDijkstra’s AlgorithmThis algorithm finds the shortest

path from a source vertex to all other vertices in a weighted directed graph without negative edge weights.

e c

ba d

12

2

5

10 2

4

4

13

16

3 83

Page 3: Dijkstra’s  Algorithm

Dijkstra’s AlgorithmDijkstra’s Algorithm For a Graph G

◦ Vertices V = {v1, … vn}◦ And edge weights wij, for

edge connecting vi to vj.◦ Let the source be v1.

Initialize a Set S = .◦ Keep track of the vertices

for which we’ve already computed their shortest path from the source.

Initialize an array D of estimates of shortest distances.◦ Initialize D[source]=0,

everything else D[i] = .◦ This says our estimate

from the source to the source is 0, everything else is initially.

While S!=V (or while we haven’t considered all vertices):1) Find the vertex with

the minimum dist (not already in S).

2) Add this vertex, vi to S

3) Recompute all estimates based on vi .

Specifically compute D[i]+wij. If this < D[j] then set D[j] = D[i]+wij

Page 4: Dijkstra’s  Algorithm

Dijkstra’s AlgorithmDijkstra’s Algorithm

Dijkstra’s algorithm relies on:

Knowing that all shortest paths contain subpaths that are also shortest paths. (Convince yourself of this)

c

ba d10 2

48

The shortest path from a to b is 10, ◦ so the shortest path

from a to d has to go through b

◦ so it will also contain the shortest path from a to b which is 10,

◦ plus the additional 2 = 12.

Page 5: Dijkstra’s  Algorithm

Greedy AlgorithmsGreedy AlgorithmsGreedy algorithms work in phases.

◦ In each phase, a decision is made that appears to be good, without regard for future consequences.

◦ “Take what you can get now”◦ When the algorithm terminates, we hope that the

local optimum is equal to the global optimum.

That’s why Dijkstra’s works out well as a greedy algorithm◦ It’s greedy because we assume we have a

shortest distance to a vertex before we ever examine all the edges that even lead into that vertex.

◦ It works since all shortest paths contain subpaths that are also shortest paths.

◦ This also works because we assume no negative edge weights.

Page 6: Dijkstra’s  Algorithm

Example on the boardExample on the board

Page 7: Dijkstra’s  Algorithm

ReferencesReferencesSlides adapted from Arup Guha’s

Computer Science II Lecture notes: http://www.cs.ucf.edu/~dmarino/ucf/cop3503/lectures/

Additional material from the textbook:Data Structures and Algorithm Analysis in

Java (Second Edition) by Mark Allen WeissAdditional images:

www.wikipedia.comxkcd.com