DSA Bellman Ford Algorithm

DSA Tutorial

DSA Bellman Ford Algorithm

(Concept • Steps • Example • Code • Negative Cycles • Complexity)

The DSA Bellman Ford Algorithm finds the shortest paths from a single source to all other vertices in a weighted graph, even when negative edge weights exist.
It’s a must-know algorithm for interviews and theory questions.


1️⃣ What Problem Does Bellman–Ford Solve?

Given:

  • A weighted graph (directed or undirected)

  • Negative edge weights allowed

  • A source vertex

Find:

  • Shortest distance from the source to every other vertex

  • Detect negative weight cycles


2️⃣ When to Use Bellman–Ford

ScenarioUse Bellman–Ford?
Unweighted graph❌ (Use BFS)
Weighted, all weights ≥ 0❌ (Use Dijkstra)
Weighted, negative edges
Need to detect negative cycle

3️⃣ Core Idea (Relaxation)

  • Initialize distances with , source = 0

  • Relax all edges repeatedly

  • Do this V − 1 times (V = number of vertices)

 Why V − 1?
The longest simple path in a graph has at most V − 1 edges.


4️⃣ Key Term: Relaxation

For an edge u → v with weight w:

if dist[u] + w < dist[v]:
dist[v] = dist[u] + w

This tries to improve the shortest distance.


5️⃣ Step-by-Step Example

Graph


 

Source = 0

Initial

dist = [0, ∞, ∞, ∞]

After V−1 Relaxations

dist = [0, 4, 1, -1]

Extra Pass (Cycle Check)

  • If any distance still improves → negative cycle exists


6️⃣ Algorithm Steps

  1. Initialize dist[] with ∞

  2. Set dist[source] = 0

  3. Repeat V − 1 times:

    • Relax all edges

  4. Repeat once more:

    • If any distance updates → negative cycle


7️⃣ C++ Implementation (Bellman–Ford)


 


8️⃣ Graph Representation Used

Bellman–Ford typically uses an edge list:

 This makes relaxing all edges straightforward.


9️⃣ Time & Space Complexity

 Time Complexity

O(V × E)

Space Complexity

O(V)

 Slower than Dijkstra, but more powerful.


🔟 Negative Weight Cycle Detection

A negative weight cycle is a cycle whose total weight is negative.

 If such a cycle exists:

  • Shortest path is undefined

  • Distances can decrease forever

Bellman–Ford detects this reliably.


1️⃣1️⃣ Bellman–Ford vs Dijkstra

FeatureBellman–FordDijkstra
Negative weights
Negative cycle detection
Time complexityO(VE)O(E log V)
SpeedSlowerFaster

1️⃣2️⃣ Real-Life Applications

✔ Currency arbitrage detection
✔ Network routing (RIP protocol)
✔ Graphs with penalties / losses
✔ Financial modeling


 Interview Questions (Bellman–Ford)

Q1. Why relax edges V−1 times?
👉 Longest simple path has at most V−1 edges

Q2. How to detect negative cycle?
👉 One extra relaxation pass

Q3. Why not always use Bellman–Ford?
👉 Too slow for large graphs


Final Summary

✔ Works with negative edge weights
✔ Detects negative weight cycles
✔ Uses edge relaxation
✔ Time complexity: O(V × E)
✔ Essential for advanced graph problems

You may also like...