Dijkstra's algorithm is an algorithm for finding a graph geodesic, i.e., the shortest path between two graph vertices in a graph. It functions by constructing a shortest-path tree from the initial vertex to every other vertex in the graph.
The algorithm is implemented in the Wolfram Language as FindShortestPath[g, Method -> "Dijkstra"].
The worst-case running time for the Dijkstra algorithm on a graph with nodes and
edges is
because it allows for directed cycles. It even finds
the shortest paths from a source node
to all other nodes in the graph. This is basically
for node selection and
for distance updates. While
is the best possible complexity for dense graphs, the
complexity can be improved significantly for sparse graphs.
The bottleneck in Dijkstra's algorithm is node selection. For graphs with nonnegative integer edge lengths bounded by , Dial's bucket-queue implementation replaces repeated minimum
selection by bucket lookup and gives a running time of
, which is especially useful for sparse graphs when
is small (Dial 1969).
Haeupler et al. (2024) proved that Dijkstra's algorithm is universally optimal both in its running time and number of comparisons when combined with a sufficiently efficient heap data structure. Informally speaking, this universal optimality result says that Dijkstra's algorithm is optimal for each fixed graph topology under worst-case edge weights (Haeupler et al. 2024). This result provides a powerful beyond-worst-case performance guarantee for graph algorithms.
In the standard worst-case setting, Duan et al. (2025) gave a deterministic -time
algorithm for the single-source shortest path problem on directed graphs with nonnegative
real edge weights in the comparison-addition model. This breaks the
time bound of Dijkstra's algorithm on sparse graphs,
showing that Dijkstra's algorithm is not worst-case optimal for sparse directed single-source
shortest paths in this model.
With slight modifications, Dijkstra's algorithm can be used as a reverse algorithm that maintains minimum spanning trees for the sink node. With further modifications, it can be extended to become bidirectional.
Because road networks can be modeled by weighted graphs, Dijkstra's algorithm and its variants are foundational in route planning and pathfinding systems such as digital maps (Whiting and Hillier 1960, Veritasium 2026).
In the Season 3 episode "Money For Nothing" (2007) of the television crime drama NUMB3RS, mathematics professor Charlie Eppes uses Dijkstra's algorithm to find the most likely escape routes out of Los Angeles for a hijacked truck that is carrying millions of dollars in cash and medical supplies and also two kidnapping victims.