Shortest path algorithm

12,892 views 23 slides Jan 09, 2018
Slide 1
Slide 1 of 23
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23

About This Presentation

Shortest path algorithm Dijikstra Algorithm,BellMen algorithm,
Floyed warshall Algorithm




Slide Content

Shortest Path Algorithm Dijikstra Algorithm BellMen ALGORITHM Floyed WARSHALL Algorithm

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.

Single source Shortest path algorithm It is defined as Cost of shortest path from a source vertex u to a destination v. s a b c

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 .

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

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.

Dijkstra’s Algorithm Dijkstra’s(G,W,S) INITIALIZE-SINGLE-SOURCE(G,s) for each vertex v v.d = v. s.d = 0 S = Q = G.V while (Q u = dequeue_min(Q) S = for each vertex v if( v.d > u.d+ w(u,v) ) v.d = u.d + w (u,v) // update distance of v = u return v.d  

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.

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.

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

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.

ALGORITHM for v in V: v.distance = infinity v.p = None source.distance = 0 for i from 1 to |V| - 1: for (u, v) in E: relax(u, v)

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.

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.

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

Relax Equation relax(u, v): if v.distance > u.distance + weight(u, v): v.distance = u.distance + weight(u, v) v.p = u

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.

Cont.. for v in V: v.distance = infinity v.p = None source.distance = 0 for i from 1 to |V| - 1: for (u, v) in E: relax(u, v) for (u, v) in E: if v.distance > u.distance + weight(u, v): print "A negative weight cycle exists"

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.

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

Example 1 2 3 5 inf 10 1 Inf 3 Inf 2 Inf Inf 1 3 inf inf Inf Vo V3 V1 V2 5 10 1 3

Uses Of Shortest Path Algorithm Weighted graph Distance function or array  Priority Queue  Relaxation

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.