Introduction
Dijkstra’s algorithm, conceived by Edsger Dijkstra in 1956, is a cornerstone of computer science. It efficiently finds the shortest path in a graph with non-negative edge weights, making it indispensable in applications like GPS navigation, network routing, and robotics. This post breaks down how it works, complete with examples and code.
What is Dijkstra’s Algorithm?
Dijkstra’s algorithm solves the single-source shortest path problem. Given a start node, it calculates the shortest distance to all other nodes. It’s greedy, meaning it always picks the nearest node, and optimal for graphs without negative weights.
How It Works
Initialization:
Assign
0
to the start node and∞
to others.Use a priority queue to track nodes by current distance.
Iteration:
Extract the node with the smallest distance.
Update its neighbors’ distances (relaxation).
Repeat until all nodes are visited.
Relaxation Example:
If node B
is 6 units from A
, but a path via D
(1 + 2 = 3) is shorter, update B
’s distance to 3.
Step-by-Step Example
Graph: Nodes A, B, C, D, E.
Edges:
A → B (6), A → D (1)
D → B (2), D → E (1)
B → C (5), E → B (2), E → C (5)
Goal: Find the shortest path from A to C.
Step | Current Node | Updated Distances | Visited Nodes |
---|---|---|---|
1 | A | B=6, D=1 | A |
2 | D | B=3, E=2 | A, D |
3 | E | C=7 | A, D, E |
4 | B | No change | A, D, E, B |
5 | C | – | All |
Shortest Path: A → D → E → C (Total weight = 7).
Applications
GPS Navigation: Finding the quickest route.
Network Routing: Optimizing data paths.
Robotics: Path planning in autonomous systems.
Limitations
No Negative Weights: Fails if edges have negative costs (use Bellman-Ford instead).
Single Source: Computes paths from one node only (use Floyd-Warshall for all pairs).
Conclusion
Dijkstra’s algorithm is a powerful tool for shortest-path problems. By leveraging a priority queue and greedy strategy, it efficiently navigates graphs with non-negative weights.