最短経路問題

提供: testwiki
2025年2月22日 (土) 09:34時点におけるimported>Oyyo37による版 (+Template)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

グラフ理論における最短経路問題(さいたんけいろもんだい、テンプレート:Lang-en-short)とは、重み付きグラフの与えられた2つのノード間を結ぶ経路の中で、重みが最小の経路を求める最適化問題である。

種類

2頂点対最短経路問題
特定の2つのノード間の最短経路問題。一般的に単一始点最短経路問題のアルゴリズムを使用する。
単一始点最短経路問題 (SSSP:Single Source Shortest Path)
特定の1つのノードから他の全ノードとの間の最短経路問題。この問題を解くアルゴリズムとしては、ダイクストラ法ベルマン-フォード法がよく知られている。
全点対最短経路問題 (APSP : All Pair Shortest Path)
グラフ内のあらゆる2ノードの組み合わせについての最短経路問題。この問題を解くアルゴリズムとしては、ワーシャル-フロイド法が知られている。

このような分類がされているのは、後者の問題が単に前者の問題を初期条件(ノード)を変えて繰り返し解くのではなく、アルゴリズムの過程で得た情報を利用して計算量を減らすことが可能となるからでもある。

単一始点最短経路問題

辺の重みなし有向グラフ

アルゴリズム 計算量 作者
幅優先探索 O(E)

辺の重みが非負値の有向グラフ

アルゴリズム 計算量 作者
O(V2EL) テンプレート:Harvnb
ベルマン-フォード法 O(VE) テンプレート:Harvnb, テンプレート:Harvnb
O(V2logV) テンプレート:Harvnb, テンプレート:Harvnb, Minty (cf. テンプレート:Harvnb), テンプレート:Harvnb
ダイクストラ法(リスト) O(V2) テンプレート:Harvnb, テンプレート:Harvnb
ダイクストラ法(修正二分ヒープ O((E+V)logV)
. . . . . . . . .
ダイクストラ法(フィボナッチヒープ O(E+VlogV) テンプレート:Harvnb, テンプレート:Harvnb
O(EloglogL) テンプレート:Harvnb, テンプレート:Harvnb
Gabow 法 O(ElogEVL) テンプレート:Harvnb, テンプレート:Harvnb
O(E+VlogL) テンプレート:Harvnb

辺の重みが任意の実数の有向グラフ

アルゴリズム 計算量 作者
ベルマン-フォード法 O(VE) テンプレート:Harvnb, テンプレート:Harvnb

漸化式

最短経路の距離は部分構造最適性が成立しており、下記漸化式が成立する。証明は『アルゴリズムイントロダクション』(ISBN 978-4764904088)などを参照。

V が頂点、E が辺、c(s,v) が辺の重み、dist(s,v) が最短経路の距離。s,v,wVws
dist(s,s)=0 とおく。
dist(s,w)=min{dist(s,v)+c(v,w)(v,w)E} が成立する。

単一始点の場合 c(s,v)=1 なら幅優先探索が、c(s,v)0 ならダイクストラ法が、そうでないならベルマン-フォード法が使える。

ヒューリスティックスの併用

辺の重みが非負値の2頂点対最短経路問題で、最短経路の距離の下限値が分かっている場合はA*を使うと、ダイクストラ法よりも速く求まる。

応用

最短経路問題の身近な応用例には、鉄道の経路案内(駅すぱあと駅探NAVITIMEなど)がある。駅をノードとし、駅と駅の所要時間を重みとしたエッジとして、鉄道線路をグラフ化して最短経路を求めている。

類似問題

最長単純道

最短経路とは逆の問題で、最長単純道問題もある。最短経路の場合は、最短経路の部分問題もやはり最短経路であるが、最長単純道の場合、部分構造最適性が成立しておらず、貪欲法などで解くことが出来ない。辺の重みなしであっても、NP完全問題である。

最短閉路

参考文献

テンプレート:Refbegin

テンプレート:Refend

テンプレート:アルゴリズム テンプレート:最適化アルゴリズム

テンプレート:Normdaten