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
December 21, 2025
0.0k0

When edges have weights, use Dijkstra.

Example graph ```python graph = { "A": [("B", 1), ("C", 4)], "B": [("C", 2), ("D", 5)], "C": [("D", 1)], "D": [] } ```

Dijkstra with heap ```python 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 ```mermaid 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