Data Structures26 min read
Dijkstra Algorithm
Find shortest paths in weighted graphs using heaps, and understand why this powers GPS and routing systems.
David Miller
September 24, 2025
5.8k128
When edges have weights, use Dijkstra.
Example graph
graph = {
"A": [("B", 1), ("C", 4)],
"B": [("C", 2), ("D", 5)],
"C": [("D", 1)],
"D": []
}
Dijkstra with heap
import heapq
def dijkstra(g, start):
dist = {start: 0}
pq = [(0, start)]
while pq:
d, u = heapq.heappop(pq)
if d > dist[u]:
continue
for v, w in g[u]:
nd = d + w
if v not in dist or nd < dist[v]:
dist[v] = nd
heapq.heappush(pq, (nd, v))
return dist
print(dijkstra(graph, "A"))
Graph
flowchart LR
A --1--> B
A --4--> C
B --2--> C
C --1--> D
Remember
- use heap for min distance
- works only with non-negative weights
#Python#Advanced#Graph