最短路の基本
algorithmgraphundergraduatelecture
1導入
この講義では、辺数または辺重みの総和を最小化する最短路問題を定式化し、BFS、ダイクストラ法、負辺を扱える方法の適用条件を説明する。
グラフの頂点・辺・歩道・道と、BFSの層構造を前提とする。
data/lecture/information/graph/graph-basics.lecture.n.md
data/lecture/information/algorithm/search/dfs-and-bfs-basics.lecture.n.md
2グラフと経路の定義
有限グラフ G=(V,E) を考える。無向グラフでは辺 \{u,v\} に向きがなく、有向グラフでは有向辺 (u,v) は u から v への移動だけを許す。
s から t への歩道とは、v_0=s,v_1,\ldots,v_k=t という頂点列であり、連続する二頂点を結ぶ辺が E に属するものをいう。有向グラフでは辺の向きも一致しなければならない。頂点を反復しない歩道を道と呼ぶ。辺数は k である。
辺重み関数とは、各辺に実数を対応させる関数 w:E\to\mathbb{R} である。歩道 P=(v_0,\ldots,v_k) の費用を
c(P)=\sum_{i=1}^{k}w(v_{i-1},v_i)
と定義する。無向辺では w(v_{i-1},v_i) を、その二頂点を結ぶ無向辺の重みと解釈する。辺数を最小化する問題は、すべての辺に重み 1 を与えた場合に一致する。
3距離と到達不能
s から t への歩道の費用の下限を
\delta(s,t)=\inf\{c(P)\mid P\text{ is an }s\text{-}t\text{ walk}\}
と定義する。s から t へ到達不能である場合は、候補の集合が空であるため \delta(s,t)=+\infty とする。
閉歩道とは、始点と終点が一致する歩道である。閉歩道のうち、始点・終点を除いて頂点を反復せず、辺も反復しないものを閉路と呼ぶ。有向グラフの負の閉歩道は、その分解に負閉路を少なくとも一つ含む。
s から到達可能で、かつ t へ到達可能な負の閉歩道が存在すると、その閉歩道を任意回数だけ反復できる。この場合は \delta(s,t)=-\infty であり、最小費用を達成する歩道は存在しない。無向グラフでは、負辺を往復する閉歩道の費用が負になるため、その負辺を s から t への経路に利用できるなら距離は -\infty である。
関連する負閉路がなく、t が到達可能であるとする。任意の s から t への歩道が頂点を反復するなら、その間の閉歩道の費用は非負であり、これを除去しても費用は増加しない。この操作を反復すると道を得る。有限グラフの s から t への道は有限個なので、その費用の最小値を達成する道が存在する。この道を s から t への最短路と呼ぶ。
4重みによる方法の選択
4.1等しい辺重み
すべての辺重みが同じ正の定数 c>0 である場合、費用は辺数の c 倍なので、費用の最小化は辺数の最小化に一致する。BFSは始点からの辺数が非減少となる順序で頂点を処理するため、各到達可能頂点への最短距離を計算する。無重みグラフは c=1 と解釈する。
4.2非負の辺重み
すべての辺について w(e)\geq 0 である場合、ダイクストラ法を適用できる。この方法は、暫定距離が最小の未確定頂点を選択し、その頂点を経由する候補経路によって隣接頂点の暫定距離を更新する。非負性により、確定済みの距離を後から短縮する経路は存在しない。
4.3負辺
負辺とは w(e)<0 である辺をいう。負辺が一辺でも存在すると、未確定頂点を暫定距離だけで確定するダイクストラ法の論拠は成立しない。ただし、負辺の存在だけでは最短路の不存在を意味しない。負閉路が関連しない場合は、Bellman--Ford法など負辺を許容する方法を使用できる。
data/lecture/information/algorithm/graph/dijkstra-algorithm-basics.lecture.n.md
5最適部分構造
P=(v_0,\ldots,v_k) を v_0 から v_k への最短路とする。0\leq i<j\leq k に対し、部分道 P[i:j]=(v_i,\ldots,v_j) も v_i から v_j への最短路である。これを最短路の最適部分構造と呼ぶ。
実際、P[i:j] より費用の小さい歩道 Q が存在すると仮定する。P の当該部分を Q で置換すれば、v_0 から v_k への費用が P より小さい歩道を構成でき、P の最短性に矛盾する。したがって主張が成立する。この性質は、緩和によって部分問題の最良値を結合する最短路アルゴリズムの基礎となる。
6まとめ
- 無向・有向の別と、歩道・道の別を明示してから最短路問題を定式化する。
- 到達不能なら距離は +\infty であり、関連する負閉路があれば -\infty である。
- 等重みではBFS、非負重みではダイクストラ法を適用できる。負辺がある場合は別の方法が必要である。
- 最短路の任意の部分道も、その両端の間の最短路である。