NEW
A single-source shortest path algorithm for weighted graphs with non-negative edge weights, using a greedy strategy and priority queue.
DESCRIPTION
Dijkstra’s algorithm computes shortest paths from a source to all nodes in graphs with non-negative weights. It maintains tentative distances and iteratively selects the smallest via a priority queue, relaxing edges to update paths. The method underpins routing, network optimization, and many pathfinding applications. With adjacency lists and binary heaps, it runs in O((V+E) log V). For graphs with negative weights, alternatives like Bellman–Ford are required.
ALTERNATIVE DEFINITIONS
Wikipedia
Dijkstra’s algorithm is an algorithm for finding the shortest paths between nodes in a graph, which may represent, for example, road networks.
Classic definition emphasizing shortest paths in graphs.
Wolfram MathWorld
Dijkstra’s algorithm is an efficient method to compute shortest paths on weighted graphs with nonnegative edge weights.
Highlights efficiency and nonnegative weight requirement.
MIT OpenCourseWare
Dijkstra’s algorithm maintains a set of explored nodes and uses a priority queue to select the next closest node, relaxing edges to update distances.
Describes the operational mechanism using relaxation and priority queues.
RELATED TERMS
Shortest Path Graph Weighted Graph Priority Queue Breadth-First Search Negative Weights Single-Source Shortest Path Adjacency List
COMPETING TERMS
Bellman-Ford Algorithm A-star Search
RELATIONS
- Broader: Algorithm
KNOWLEDGE AREAS
Software Engineering Mathematics Data Engineering AI
TARGET AUDIENCE
Software Developer Data Engineer Data Scientist Software Architect Solution Architect
EXTERNAL SOURCES
- Wikipedia - Dijkstra’s algorithm
- MIT OpenCourseWare - Lecture notes on shortest paths
- NetworkX - Graph shortest path algorithms
- e-maxx.ru (CP-Algorithms) - Competitive programming guide
TOP QUESTIONS
When is Dijkstra’s Algorithm applicable?
For graphs with non-negative edge weights where single-source shortest paths are required.
Category: Clarification
What data structures improve Dijkstra’s performance?
Adjacency lists and a priority queue (binary or Fibonacci heap) provide good asymptotic and practical performance.
Category: Method
How does Dijkstra’s Algorithm compare to Bellman–Ford?
Bellman–Ford handles negative weights but is slower; Dijkstra’s is faster when weights are non-negative.
Category: Comparison
Can Dijkstra’s Algorithm detect negative cycles?
No. Use Bellman–Ford-style algorithms for negative cycle detection.
Category: Clarification
What’s a common mistake implementing Dijkstra?
Revisiting nodes after setting them final without checking for updated distances, or not using a proper priority queue.
Category: Mistakes
Where is Dijkstra’s Algorithm used in practice?
Routing, navigation, network design, and pathfinding in games and logistics.
Category: Examples
What is the time complexity of Dijkstra’s Algorithm?
O((V+E) log V) with a binary heap; O(V^2) with simple arrays.
Category: Fact
How does A* relate to Dijkstra’s Algorithm?
A* adds heuristics to guide search, reducing explored nodes when the heuristic is admissible.
Category: Clarification
What’s a hot topic around shortest path algorithms?
Scaling to large graphs using contraction hierarchies and bidirectional search in real-time routing.
Category: Topic