どちらも加重グラフ内のソースからの最短経路を見つけます。Dijkstraはより高速ですが非負の重みが必要です。Bellman-Fordはより遅いですが負の辺を処理でき、負のサイクルを検出します。
Dijkstra (greedy + min-heap)
繰り返し未訪問の最も近いノードを展開し、その隣接ノードをリラックスします。
python
heapq
():
dist = {n: () n graph}
dist[src] =
pq = [(, src)]
pq:
d, u = heapq.heappop(pq)
d > dist[u]:
v, w graph[u]:
d + w < dist[v]:
dist[v] = d + w
heapq.heappush(pq, (dist[v], v))
dist
