# Bellman Ford’s Algorithm

“An algorithm is a rythem with in . ” -softwarebug

Bellman ford’s Algorithm is a single source shortest pathfinding algorithm, which means it helps us find the shortest distance from a single source or source vertice to other vertices in a weighted graph.

The algorithm was first proposed by Alfonso Shimbel (1955) yet is instead named after Richard Bellman and Lester Ford Jr., who published it in 1958 and 1956, respectively

The question comes why can't we use the Dijkstra algorithm, well in a negatively weighted graph there is no guarantee whether the answer arrived from Dijkstra is correct it may be right or wrong, but if we use Bellman’s algorithm in a negatively weighted graph the outcome is always correct but is take more time as compared to Dijkstra there are other advantages and disadvantages to this algorithm, which we will discuss later.

# Algorithm

In the bellman algorithm, we basically go on ** relaxing **all the edges (n-1) times where n is the number of vertices.

By relaxing we mean:

if -

d[u] + c[u,v] < d[v]

than

d[v]=d[u] + c[u,v]

where d is distance and c is the coast of u and v.

**Procedure**

Step 1: Take a weighted graph

Step 2: Choose a Source vertex mark it as 0 as its source and distance from source to source is 0 and other vertices as infinity

Step 3- visit each edge and relax the path distance using the relaxation equation given below

Step 4- complete this process v-1 times

step 5- after doing it v-1 times, when all path lengths get adjusted (if you do this manually you will realize generally you will get the answer even before completing it v-1 times, you can even add code to check if any value is changed while relaxing and if not you can stop the program(we will talk about this down the blog)

Step 6- Do see for negative cycles(we will talk about this in drawbacks below).

# Algorithm Pseudo-code

The pseudo-code for the Bellman-Ford algorithm is exceptionally short.

This is the undeniable level portrayal of Bellman-Ford composed with pseudo-code, not an execution.

`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)

# Relaxation Equation

Relaxation is the main advance in Bellman-Ford. It is the thing that builds the exactness of the distance to some random vertex. Relaxation works by ceaselessly shortening the determined distance between vertices contrasting that distance and other known distances.

Basic idea is to update the distance if a shorter distance is available

Relax equation is:

`relax(u, v):`

if v.distance > u.distance + weight(u, v):

v.distance = u.distance + weight(u, v)

v.p = u

# Finding Negative cycle

At the point when the algorithm is utilized to discover the briefest ways, the presence of negative cycles is an issue, keeping the algorithm from tracking down a right answer. In any case, since it ends after tracking down a negative cycle, the Bellman-Ford algorithm can be utilized for applications in which this is the objective to be looked for — for instance in cycle-canceling strategies in network stream analysis.

pseudo-code is :

`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"

# Complexity

time complexity:-

As no. of edges are getting adjusted v-1 time hence

Best Case Complexity O(E)

Average Case Complexity O(VE)

Worst Case Complexity O(VE)

If v=e than

O(n²)

for a complete graph :

O(n³)

Space complexity:

O(V)

# Advantages & Disadvantages

The principle benefit of the Bellman-Ford algorithm is its capacity to deal with negative loads. Nonetheless, the Bellman-Ford algorithm has an impressively bigger intricacy than Dijkstra’s algorithm. Accordingly, Dijkstra’s algorithm has more applications, since charts with negative loads are typically viewed as an uncommon case.

The only case this is incorrect is when we have a cycle that has a negative total sum of edges. In that case, we usually can’t calculate the shortest path because we can always get a shorter path by iterating one more time inside the cycle. Therefore, the term shortest path loses its meaning. Hence once we should check for the negative cycle once the process is complete.

# COMPARISON

Investigate the similitudes and contrasts among Dijkstra’s and Bellman-Ford algorithms:

As should be obvious, Dijkstra’s algorithm is better with regards to decreasing the time intricacy. Nonetheless, when we have negative loads, we need to go with the Bellman-Ford algorithm. Additionally, n the off chance that we need to know if the chart contains negative cycles, the Bellman-Ford algorithm can assist us with that.

Only one thing to recollect, if there should be an occurrence of negative loads or even negative cycles, the Bellman-Ford algorithm can just assist us with coordinated

Bellman-Ford works (better than Dijksra’s) for conveyed frameworks. Not at all like Dijkstra’s the place where we need to track down the base estimation of all vertices, in Bellman-Ford, edges are viewed as one by on

# Improvements

The Bellman-Ford algorithm might be improved by and by (albeit not in the most pessimistic scenario) by the perception that, if a cycle of the primary circle of the algorithm ends without rolling out any improvements, the algorithm can be promptly ended, as ensuing emphasis won’t roll out additional improvements. With this early end condition, the principle circle may sometimes utilize numerous less than |V| − 1 emphasis, even though the most pessimistic scenario of the algorithm stays unaltered. The accompanying enhancements all keep up the O{ |V| . E } most pessimistic scenario time intricacy.

# Application

An adaptation of Bellman-Ford is utilized somewhere out there vector directing convention. This convention concludes how to course bundles of information on an organization. The distance condition (to choose loads in the organization) is the number of switches a specific way should go through to arrive at its objective.

For the Internet explicitly, there are numerous conventions that utilization Bellman-Ford. One model is the steering Information convention. This is one of the most established Internet conventions, and it forestalls circles by restricting the number of jumps a bundle can make on its way to the objective. A subsequent model is an inside entryway directing convention. This restrictive convention is utilized to help machines trade directing information inside a framework.

# Conclusion:

We tried to provide basic information on the Bellman ford algorithm, with all pseudo-codes and things to keep in mind while using Bellman’s algorithm

Thank you.