dijkstra’s algorithm. this algorithm finds the shortest path from a source vertex to all other...
TRANSCRIPT
![Page 1: Dijkstra’s Algorithm. This algorithm finds the shortest path from a source vertex to all other vertices in a weighted directed graph without negative](https://reader036.vdocuments.us/reader036/viewer/2022072015/56649ece5503460f94bda8bd/html5/thumbnails/1.jpg)
Dijkstra’s AlgorithmDijkstra’s Algorithm
![Page 2: Dijkstra’s Algorithm. This algorithm finds the shortest path from a source vertex to all other vertices in a weighted directed graph without negative](https://reader036.vdocuments.us/reader036/viewer/2022072015/56649ece5503460f94bda8bd/html5/thumbnails/2.jpg)
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. This algorithm finds the shortest path from a source vertex to all other vertices in a weighted directed graph without negative](https://reader036.vdocuments.us/reader036/viewer/2022072015/56649ece5503460f94bda8bd/html5/thumbnails/3.jpg)
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. This algorithm finds the shortest path from a source vertex to all other vertices in a weighted directed graph without negative](https://reader036.vdocuments.us/reader036/viewer/2022072015/56649ece5503460f94bda8bd/html5/thumbnails/4.jpg)
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. This algorithm finds the shortest path from a source vertex to all other vertices in a weighted directed graph without negative](https://reader036.vdocuments.us/reader036/viewer/2022072015/56649ece5503460f94bda8bd/html5/thumbnails/5.jpg)
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. This algorithm finds the shortest path from a source vertex to all other vertices in a weighted directed graph without negative](https://reader036.vdocuments.us/reader036/viewer/2022072015/56649ece5503460f94bda8bd/html5/thumbnails/6.jpg)
Example on the boardExample on the board
![Page 7: Dijkstra’s Algorithm. This algorithm finds the shortest path from a source vertex to all other vertices in a weighted directed graph without negative](https://reader036.vdocuments.us/reader036/viewer/2022072015/56649ece5503460f94bda8bd/html5/thumbnails/7.jpg)
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