dijkstrw algorithm
DESCRIPTION
mmmTRANSCRIPT
![Page 1: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/1.jpg)
Dijkstra's algorithm
![Page 2: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/2.jpg)
The author: Edsger Wybe Dijkstra
"Computer Science is no more about computers than astronomy is about telescopes." http://www.cs.utexas.edu/~EWD/
![Page 3: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/3.jpg)
Edsger Wybe Dijkstra
- May 11, 1930 – August 6, 2002 - Received the 1972 A. M. Turing Award, widely considered the most prestigious award in computer science.
- The Schlumberger Centennial Chair of Computer Sciences at The University of Texas at Austin from 1984 until 2000 - Made a strong case against use of the GOTO statement in programming languages and helped lead to its deprecation. - Known for his many essays on programming.
![Page 4: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/4.jpg)
Single-Source Shortest Path Problem
Single-Source Shortest Path Problem - The problem of finding shortest paths from a source vertex v to all other vertices in the graph.
![Page 5: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/5.jpg)
Dijkstra's algorithm
Dijkstra's algorithm - is a solution to the single-source shortest path problem in graph theory. Works on both directed and undirected graphs. However, all edges must have nonnegative weights.
Approach: Greedy
Input: Weighted graph G={E,V} and source vertex v∈V, such that all edge weights are nonnegative Output: Lengths of shortest paths (or the shortest paths themselves) from a given source vertex v∈V to all other vertices
![Page 6: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/6.jpg)
Dijkstra's algorithm - Pseudocode
DijkstraAlgorithm(weighted simple digraph, vertex first)
1. Repeat for all vertices v
V.currDist = ∞;
2. First. currDist = 0;
3. toBeChecked = all vertices;
4. Repeat while toBeChecked is not empty1. v = a vertex in toBeChecked with minimal currDist(v);
2. remove v from toBeChecked;
3. for all vertices u adjacent to v and in toBeChecked
4. if u. currDist > v. currDist + weight(edge(v, u))
then set u.currDist= v.currDist + weight(edge(v, u));
5. predecessor(u) = v;
![Page 7: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/7.jpg)
Dijkstra Animated Example
![Page 8: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/8.jpg)
Dijkstra Animated Example
![Page 9: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/9.jpg)
Dijkstra Animated Example
![Page 10: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/10.jpg)
Dijkstra Animated Example
![Page 11: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/11.jpg)
Dijkstra Animated Example
![Page 12: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/12.jpg)
Dijkstra Animated Example
![Page 13: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/13.jpg)
Dijkstra Animated Example
![Page 14: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/14.jpg)
Dijkstra Animated Example
![Page 15: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/15.jpg)
Dijkstra Animated Example
![Page 16: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/16.jpg)
Dijkstra Animated Example
![Page 17: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/17.jpg)
Class Work
![Page 18: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/18.jpg)
• Label a with 0 and all others with . L0(a) = 0 and L0(v) =
L0(a) = 0
L0(i) =
L0(r) =
L0(c) =
L0(b) = 9
25
19
16
5
2131
36
![Page 19: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/19.jpg)
ii) Labels are shortest paths from a to vertices. S1 = {a, i}
L1(a) = 0
L1(i) = 9
L1(r) =
L1(c) =
L1(b) = 9
25
19
16
5
2131
36
![Page 20: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/20.jpg)
Lk(a, v) = min{Lk-1(a, v), Lk-1(a, u) + w(u, v)}
S2 = {a, i, b}
L2(a) = 0
L2(i) = 9
L2(r) =
L2(c) =
L2(b) = 199
25
19
16
5
2131
36
![Page 21: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/21.jpg)
S3 = {a, i, b, r}
L3(a) = 0
L3(i) = 9
L3(r) = 24
L3(c) =
L3(b) = 19
9
25
19
16
5
2131
36
![Page 22: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/22.jpg)
• S4 = {a, i, b, r, c}
L4(a) = 0
L4(i) = 9
L4(r) = 24
L4(c) = 45
L4(b) = 19
9
25
19
16
5
2131
36
![Page 23: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/23.jpg)
Class WorkA
D
E
F
C
1
1
2
3
2
3
5
2
4
3B
![Page 24: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/24.jpg)
Dijkstra's Algorithm - Why It Works
• As with all greedy algorithms, we need to make sure that it is a correct algorithm (e.g., it always returns the right solution if it is given correct input).
• A formal proof would take longer than this presentation, but we can understand how the argument works intuitively.
![Page 25: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/25.jpg)
• As mentioned, Dijkstra’s algorithm calculates the shortest path to every vertex.
• However, it is about as computationally expensive to calculate the shortest path from vertex u to every vertex using Dijkstra’s as it is to calculate the shortest path to some particular vertex v.
• Therefore, anytime we want to know the optimal path to some other vertex from a determined origin, we can use Dijkstra’s algorithm.
DIJKSTRA'S ALGORITHM - WHY USE IT?
![Page 26: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/26.jpg)
Applications of Dijkstra's Algorithm- Traffic Information Systems are most prominent use - Mapping (Map Quest, Google Maps) - Routing Systems
![Page 27: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/27.jpg)
Applications of Dijkstra's Algorithm
One of the most important applications: epidemiology
Prof. Lauren Meyers (Biology Dept.) uses networks to model the spread of infectious diseases and design prevention and response strategies.
Vertices represent individuals, and edges their possible contacts. It is useful to calculate how a particular individual is connected to others.
Knowing the shortest path lengths to other individuals can be a relevant indicator of the potential of a particular individual to infect others.
![Page 28: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/28.jpg)
For Further Reading on the Dijkstra Algorithm
• Dijkstra’s original paper:E. W. Dijkstra. (1959) A Note on Two Problems in Connection with Graphs. Numerische Mathematik, 1. 269-271.
• MIT OpenCourseware, 6.046J Introduction to Algorithms.< http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-046JFall-2005/CourseHome/>
• Meyers, L.A. (2007) Contact network epidemiology: Bond percolation applied to infectious disease prediction and control. Bulletin of the American Mathematical Society 44: 63-86.
• Department of Mathematics, University of Melbourne. Dijkstra’s Algorithm.<http://www.ms.unimelb.edu.au/~moshe/620-261/dijkstra/dijkstra.html > Accessed 4/25/09
![Page 29: Dijkstrw Algorithm](https://reader035.vdocuments.site/reader035/viewer/2022062409/55cf91e6550346f57b918d12/html5/thumbnails/29.jpg)
Searching • Difference b/w linear search and binary search• The Binary Search is more efficient than the
linear search, but we must pay initially to sort the array. Once it is sorted, the best case performance is one comparison (the searched-for value is the mid-point value in the original array). The worst-case, where the value is not in the array, is log2N, where N is the size of the array. For example if we have 100 values in an array or link, we need to check only 50 values for searching required data element in first iteration.