2. Shortest Path Algorithm
An algorithm that is designed essentially to
find a path of minimum length between two
specified vertices of a connected weighted
graph.
3. Single source Shortest path algorithm
o It is defined as
Cost of shortest path from a source
vertex u to a destination v.
s a
b c
4. Dijkstra’s Algorithm
Dijkstra’s algorithm is a greedy algorithm for
solving single source shortest path problem
that provide us with the shortest path from one
particular source node to all other nodes in the
given graph .
5. Rules of Dijkstra’s algorithm
It can be applied on both directed and undirected
graph.
It is applied on weighted graph.
For the algorithm to be applicable the graph must
be connected.
a 3 b
4 5 1
c d
4
6. Cont…
Dijkstra’s algorithm does not work for graphs with
negative weight edges. For graphs with negative
weight edges, Bellman_ford algorithm can be used.
In Dijkstra’s algorithm always assign source vertex to
zero distance.
Assign every other node a tentative distance.
7. Dijkstra’s Algorithm
Dijkstra’s(G,W,S)
INITIALIZE-SINGLE-SOURCE(G,s)
1. for each vertex v ∈ 𝐺. 𝑉
2. v.d = ∞
3. v.𝜋 = 𝑁𝐼𝐿
4. s.d = 0
5. S = ∅
6. Q = G.V
7. while (Q≠ ∅)
8. u = dequeue_min(Q)
9. S = S ∪ 𝑢
10. for each vertex v∈ 𝐴𝑑𝑗 𝑢
11. if( v.d > u.d+ w(u,v) )
12. v.d = u.d + w (u,v) // update distance of v
13. v. 𝜋 = u
14. return v.d
8. BellMan-Algorithm
Bellman–Ford algorithm. The Bellman–Ford
algorithm is an algorithm that computes shortest
paths from a single source vertex to all of the other
vertices in a weighted digraph. ... Negative edge
weights are found in various applications of graphs,
hence the usefulness of this algorithm.
9. Cont..
It is similar to Dijkstra's algorithm but it can work
with graphs in which edges can have negative
weights.
Negative weight edges can create negative weight
cycles i.e. a cycle which will reduce the total path
distance by coming back to the same point.
10. Cont..
Shortest path algorithms
like Dijkstra's Algorithm that
aren't able to detect such a
cycle can give an incorrect
result because they can go
through a negative weight
cycle and reduce the path
length.
A B D E
2
1 3
2 -4
C
11. Uses of Algorithm
This algorithm can be used on both weighted and
unweighted graphs.
Like Dijkstra's shortest path algorithm, the Bellman-Ford
algorithm is guaranteed to find the shortest path in a graph.
Though it is slower than Dijkstra's algorithm, Bellman-Ford is
capable of handling graphs that contain negative edge
weights, so it is more versatile.
12. ALGORITHM
1. for v in V:
2. v.distance = infinity
3. v.p = None
4. source.distance = 0
5. for i from 1 to |V| - 1:
6. for (u, v) in E:
7. relax(u, v)
13. Explanation
The first for loop sets the distance to each vertex in
the graph to infinity. This is later changed for the
source vertex to equal zero. Also in that first for loop,
the p value for each vertex is set to nothing. This
value is a pointer to a predecessor vertex so that we
can create a path later.
The next for loop simply goes through each edge (u,
v) in E and relaxes it. This process is done |V| - 1 times.
14. Relaxation Equation
Relaxation is the most important step in Bellman-
Ford. It is what increases the accuracy of the
distance to any given vertex. Relaxation works by
continuously shortening the calculated distance
between vertices comparing that distance with
other known distances.
15. Example
Take the baseball example from earlier. Let's say I think the
distance to the baseball stadium is 20 miles. However, I know
that the distance to the corner right before the stadium is 10
miles, and I know that from the corner to the stadium, the
distance is 1 mile. Clearly, the distance from me to the
stadium is at most 11 miles. So, I can update my belief to
reflect that. That is one cycle of relaxation, and it's done over
and over until the shortest paths are found
17. Negative Cycle
Detecting Negative Cycles
A very short and simple addition to the Bellman-Ford
algorithm can allow it to detect negative cycles, something
that is very important because it disallows shortest-path
finding altogether. After the Bellman-Ford algorithm
shown above has been run, one more short loop is required
to check for negative weight cycles.
This psuedo-code is written as a high level descrpition of the
algorithm, not an implementation.
18. Cont..
1. for v in V:
2. v.distance = infinity
3. v.p = None
4. source.distance = 0
5. for i from 1 to |V| - 1:
6. for (u, v) in E:
7. relax(u, v) for (u, v) in E:
8. if v.distance > u.distance + weight(u, v):
9. print "A negative weight cycle exists"
19. Floyed Warshall ALgorithm
Floyd–Warshall algorithm is an algorithm for
finding shortest paths in a weighted graph
The Graph may be weighted with positive or
negative edge weights .
The Graph may be directed or undirected.
20. Cont..
If a node has not a direct path or
link to any other node then the
distance between these nodes
are infinite.
If only one path between the two
nodes or vertices then it said to
be the shortest distance.
The distance of a vertex to itself is
0.
Vo 10 V3
5 1
3
V1 V2
22. Uses Of Shortest Path Algorithm
Weighted graph
Distance function or array
Priority Queue
Relaxation
23. Applications of Shortest Path Algorithm
It is used in Google Map.
It is used in finding Shortest Path.
It is used in geographical Maps.
To find locations of Map which refers to vertices of
graph.
Distance between the location refers to edges.
It is used in IP routing to find Open shortest Path First.
It is used in the telephone network.