グラフ / Dijkstra(ダイクストラ法)

最短距離が確定した頂点を
1 つずつ増やす。

重みが非負のグラフで単一始点最短経路を求めます。いま最も距離が短い候補を優先度付きキューで選びます。

グラフノードとエッジ可視化向き

目次

このページの目次

このページでわかること

先に知っておくポイント

1. どの頂点が注目か
2. 候補集合がどう変わるか
3. なぜ次の頂点や辺を選ぶか

概要

概要

重みが非負のグラフで単一始点最短経路を求めます。いま最も距離が短い候補を優先度付きキューで選びます。

考え方

擬似コード

dist[start] = 0
while pq not empty
  take node with min dist
  relax outgoing edges

要点

要点まとめ

時間計算量

O((V+E) log V)

前提

非負重み

構造

Priority Queue

用途

最短経路

補足

向いている場面と注意点

本質

一番近い未確定頂点から順に確定することです。

BFS との違い

辺の重みを考慮します。

注意

負辺がある場合は Bellman-Ford などを使います。

動きで確認

動きを見てたしかめる

ここでは「どの頂点が注目か」を見ながら、上で読んだ内容を動きと結びつけます。

注目候補確定

次に見る

次に見るページ

比較すると違いがわかりやすいページを先に置いています。