0% found this document useful (0 votes)
8 views18 pages

08 SSSP - Dijkstra

Uploaded by

ssmukherjee2013
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views18 pages

08 SSSP - Dijkstra

Uploaded by

ssmukherjee2013
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 18

Shortest Path - Dijkstra

Shortest Path
• Tracing the shortest path from a Source
Vertex to all other vertices in graph
• Single Source Shortest Path (SSSP) problem
• Wide applicability – transportation
networks, flow networks
• Two approaches – Dijkstra and Bellman-
Ford
Dijkstra Approach
• Very similar to Prim MST – start from Source
and trace path to all other vertices
• Only variation is Distance calculation
• Distance calculation is now cumulative
• All other conditions remain unchanged
• Works for both Directed and Un-directed
Graphs
Dijkstra Shortest Path Algorithm
Input: Graph G, (AdjMat[x, y]=INFINITY, if edge(x,y) not exist); Source S
Associated Structure: Visited[1..V]
Output: Distance [1..V], Predec [1..v]
Procedure SP-Dijkstra (G, S)
Begin
Repeat for all vertices v in V
Set Distance[v] := INFINITY
Set Visited [v] := FALSE
Set Predec [v] := NULL
End Repeat
Set Distance[S] := 0
Repeat while all vertices not Visited
Set v := get_minimum()//returns vertex with min distance
Set Visited[v] := TRUE
Repeat for all adjacent vertices t of v
If Visited[t] is FALSE and
Distance[t] > Distance[v] + wt[v,t]
Set Distance[t] := Distance[v] + wt[v,t]
Set Predec[t] := v
End If
End Repeat
End Repeat
End 4
Example - 1
A
4 7
3
B 5 6
D C

2 8 9
12
E 14 F

A B C D E F
999 999 999 999 999 999
Distances
-1 -1 -1 -1 -1 -1 Visited
Predecessors
Example - 2
A Source Vertex: A
4 7
3 Initialize Distance of A to 0
B 5 6
C Mark A as Visited
D
2 8 9
12
E 14 F

A B C D E F
0 999 999 999 999 999
Distances
1 -1 -1 -1 -1 -1 Visited
Predecessors
Example - 3
A Source Vertex: A
4 7
3 Adjacent Nodes of A: B, C, D
B 5 6 Prev. Distances of B, C & D : INF
D C

2 Update Distances of B, C, D
8 9
12
Update Predec for B, C, D
E 14 F

A B C D E F
0 4 7 3 999 999
Distances
1 -1 -1 -1 -1 -1 Visited
A A A Predecessors
Example - 4
A Source Vertex: A
4 7
3 Node with min. distance: D
B 5 6 Check Distances of adjacent
D C
nodes via D
2 8 9
12
E 14 F

A B C D E F
0 4 7 3 999 999
Distances
1 -1 -1 1 -1 -1 Visited
A A A Predecessors
Example - 5
A Current Vertex: D
4 7
3 Distance of B via D: 5+3=8
B 5 6 Previous Distance of B: 4
D C

2 No change in Distance of B
8 9
12
E 14 F

A B C D E F
0 4 7 3 999 999
Distances
1 -1 -1 1 -1 -1 Visited
A A A Predecessors
Example - 6
A Current Vertex: D
4 7
3 Distance of C via D: 6+3=9
B 5 6 Previous Distance of C: 7
D C

2 No change for C
8 9
12
E 14 F

A B C D E F
0 4 7 3 999 999
Distances
1 -1 -1 1 -1 -1 Visited
A A A Predecessors
Example - 7
A Current Vertex: D
4 7
3 Distance from E via D: 11
B 5 6 Distance from F via D: 15
D C

2 Update Distances & Predec


8 9
12
E 14 F

A B C D E F
0 4 7 3 11 15
Distances
1 -1 -1 1 -1 -1 Visited
A A A D D Predecessors
Example - 8
A Current Vertex: B
4 7
3 Node with min. distance : B
B 5 6 Check distances of adjacent
D C
nodes from B
2 8 9
12
E 14 F

A B C D E F
0 4 7 3 11 15
Distances
1 1 -1 1 -1 -1 Visited
A A A D D Predecessors
Example - 9
A Current Vertex: B
4 7
3 Prev. Distance of E : 11
B 5 6 Distance of E via B : 4+2=6
D C

2 Update Distance & Predec for E


8 9
12
E 14 F

A B C D E F
0 4 7 3 6 15
Distances
1 1 -1 1 -1 -1 Visited
A A A B D Predecessors
Example - 10
A Current Vertex: E
4 7
3 Node with min. Distance : E
B 5 6 Distance of F via E: 20
D C

2 Distance of F not updated


8 9
12
E 14 F

A B C D E F
0 4 7 3 6 15
Distances
1 1 -1 1 1 -1 Visited
A A A B D Predecessors
Example - 11
A Current Vertex: C
4 7
3 Node with min. Distance : C
B 5 6 Distance of F via C: 16
D C

2 Distance of F not updated


8 9
12
E 14 F

A B C D E F
0 4 7 3 6 15
Distances
1 1 1 1 1 -1 Visited
A A A B D Predecessors
Example - 12
A Current vertex: F
4 7
3 F last node to be processed
B 5 6 All adjacent nodes already done
D C

2 No updates
8 9
12
E 14 F
Distances & Shortest Path from
Source Vertex available
A B C D E F
0 4 7 3 6 15
Distances
1 1 1 1 1 1 Visited
A A A B D Predecessors
Analysis of Dijkstra Algorithm
• Identical to Prim Algorithm:
– Depends on Procedure get_minimum
– If implemented using arrays, O(V2)
– Using Priority Queues, O(E log V)
The End

You might also like