Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
295 views

Dijkstra Algorithm

Dijkstra's algorithm is used to find the shortest path between vertices in a graph. It works by assigning all vertices an initial distance of infinity from the source vertex, whose distance is set to 0. The algorithm then iteratively selects the vertex with the lowest distance and examines its neighbors, updating their distances if a shorter path is found. This process repeats until distances are determined for all vertices. The algorithm applies to directed and undirected graphs with positive edge weights and requires the graph be connected.

Uploaded by

Mir Salam Khan
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
295 views

Dijkstra Algorithm

Dijkstra's algorithm is used to find the shortest path between vertices in a graph. It works by assigning all vertices an initial distance of infinity from the source vertex, whose distance is set to 0. The algorithm then iteratively selects the vertex with the lowest distance and examines its neighbors, updating their distances if a shorter path is found. This process repeats until distances are determined for all vertices. The algorithm applies to directed and undirected graphs with positive edge weights and requires the graph be connected.

Uploaded by

Mir Salam Khan
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

Dijkstra’s Algorithm

Single source shortest path Problem


o This is an example of Dynamic Programming
o This algorithm is used to find the shortest path from a
source vertex v to all other vertices in the graph theory.
o Apply to both directed, undirected and weighted graph,
where weight must be positive.
o Graph must be connected.
Algorithm
dist[s]←0 (distance to source vertex is zero)

for all v ∈ V–{s}


dist[v]←∞ [ set all other distances to infinity ]

S←∅ [ S, the set of visited vertices is initially empty ]


U={V} [ initially U contains all vertices ]
While U≠∅
u ← min-distance(U, dist) [ select the element of U with
minimum distance]

S ← S ∪ {u} [ add u to list of visited vertices ]


for all v ∈ neighbors[u]
do
if dist[v] > dist[u] + w(u,v) [ if new shortest path found ]
then d[v] ←d[u] + w(u,v) [ set new value of shortest
path ]

return dist

Steps
1. Set distance to Source vertex is Zero
2. Set distance to other vertices to infinity (∞)
3. Repeat Steps 4 to 6 Until Unvisited List is Empty
4. Include the vertex with the smallest cost into Visited List
5. Examine its neighboring nodes and calculate its distance to them
6. If the calculated distance is less than currently known distance,
then update the shortest distances for these vertices
Here for above graph,
Visited = { }
Unvisited = { a, b, c, d, e, z }

-- a has shortest distance 0, take it as first visited node


Visited = { a }, Unvisited = { b, c, d, e, z }
-- Find the distance from a to its neighbors i.e. b and c
a to b = 4, a to c to b =3 and a to c =2
Here shortest path = 2, so include c in visited list
Visited ={ a, c} , Unvisited = { b, d, e, z }
- Now find the distance from a, c to its neighboring i.e. b, d and e
a to c to b = 2 +1 = 3, a to c to d = 2 + 8 =10, a to c to e = 2+10 =12
Here shortest path = 3, so include b in visited list.
Visited = { a, c, b }, Unvisited = { d, e, z }
--- Now find the shortest path up to d and e i.e.
a to c to d = 2 + 8 = 10
a to c to b to d = 2 + 1 + 5 = 8
a to c to e = 2 + 10 = 12
Here shortest path = 8, so include d in visited list.
Visited = { a, c, b, d }, Unvisited = { e, z }
-- Now a to c to b to d to e = 8 + 2 = 10 < 12
a to c to b to d to z = 8 + 6 = 14
Here shortest path = 10, include e in visited list.
Visited = { a, c, b, d, e }, Unvisited = { z }
-- Now a to c to b to d to e to z = 13 < 14, include z in visited list.
Visited = { a, c, b, d, e, z }, Unvisited = { }

Vertex Shortest distance Prev Vertex


a 0
b ∞ 4, 3
c ∞ 2
d ∞ 10 9 8
e ∞ 12 10
z ∞ 14 13

Applications of Dijkstra’s Algorithm


i. Algorithms for calculating shortest path from source to sink.
This is useful to calculate the shortest path from one router to
another.
ii. Currency Exchange Problem

You might also like