技能一覧 › 大学数学 オペレーションズ・リサーチ

最短路の本数の数え上げ

始点から各頂点への最短距離 の表を作り、 を満たす辺だけを残して、 を始点から順に足し合わせ、最短路の本数を数えられる

前提

この技能までの道筋(4 技能)
算数中学高校大学大学院

読み込み中…

右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。

一覧で見る(前提が先)
  1. 樹形図で数え上げる (算数 場合の数)
  2. 積の法則と和の法則 (算数 場合の数)
  3. 和の法則・積の法則と樹形図 (数学A 場合の数と確率)
  4. 負の重みを含む最短路(ベルマン・フォード法) (大学数学 グラフ理論)

説明

重み(長さ)付きの有向グラフで、始点 から終点 への最短路が何本あるかを数える方法です。経路をすべて書き出す必要はありません。手順は三つに分かれます。まず各頂点への最短距離 の表を作り、次に最短路に使われうる辺だけを残し、最後に始点から順に本数を足し合わせます。道路網で最短ルートが何通りあるかを調べるときや、最短路がただ 1 本に決まるかを確かめるときに使います。

なぜそうしてよいのか

このページでは、経路を歩道として扱います。歩道とは、同じ頂点や辺を何度通ってもよい辺の並びのことです。辺の長さの合計が最小の歩道を最短路と呼び、その長さを 、本数を と書きます。始点から到達できる負の閉路はないものとします(ベルマン・フォード法で確かめます)。 の頂点は到達できないので無視します。

への最短路の最後の辺を (長さ )とします。この辺を除いた前半は への歩道で、長さは です。仮にこれが より長いとすると、前半を への最短路に取り替えたとき、 への歩道が より短くなってしまいます。これは矛盾なので、前半は への最短路で、 が成り立ちます。逆に、この等式を満たす辺があれば、 への任意の最短路の後ろにこの辺をつなぐと、長さちょうど の歩道、つまり最短路になります。この等式を満たす辺を「最短路の辺」と呼びます。すると への最短路は、最後に使う最短路の辺で重なりなく分けられます。最後の辺 を 1 本決めると、その最短路は への最短路と 1 対 1 に対応し、ちょうど 本あります。したがって和の法則から です。和は に入る最短路の辺すべてにわたってとります。出発点は で、これは長さ 0 の、何も進まない歩道 1 本にあたります。

残る問題は計算の順番です。最短路の辺だけでできた閉路があれば、その上で等式 を一周分足し合わせることができます。左右の が打ち消し合うので、閉路の長さの合計は 0 になります。そのため、辺の長さがすべて正なら、そのような閉路はありません。最短路の辺 では なので、 の小さい順に計算すれば、必要な はいつも計算済みです。長さ 0 や負の辺があるときは、最短路の辺の中に長さ 0 の閉路ができることがあります。その閉路上の頂点 から最短路の辺をたどって に行けるなら、 の最短路、閉路を 周、 の最短路の辺をつないだ歩道は、どれも長さ です()。よって は無限になります。一方、 に至れない閉路は への最短路には現れません。 への最短路に現れる頂点は、そこから最短路の辺で に至れるものだけだからです。そこで、最短路の辺で に至れる頂点だけを残します。その部分に閉路がなければ、各辺 で が より先に来る並べ方(位相順)がとれます。この順に計算すれば は有限の値として求まります。

手順

  1. 最短距離の表を作る:ベルマン・フォード法で始点 から各頂点への を求め、負の閉路がないことを確かめる(辺の長さがすべて正の場合も同じ方法でよい)。 の頂点は捨てる。

  2. 最短路の辺を選ぶ:すべての辺 について が成り立つか調べ、成り立つ辺だけを残す。

  3. 閉路を調べて計算順を決める:残した辺をたどって に至れる頂点だけを残す。その中に閉路があれば、最短路は無限に多いので終了する。閉路がなければ、残した各辺 で が より先に来る順(位相順)に頂点を並べる。辺の長さがすべて正なら、 の小さい順がそのような順になる。

  4. 初期値を置いて順に足す: とし、決めた順に を計算する。和は、残した辺 すべてにわたってとる。同じ から への残った辺が複数あれば、その本数だけ を足す。

  5. 答えを読む: が から への最短路の本数である。

例題

頂点 をもつ有向グラフがあり、辺とその長さは次のとおりである:, , , , , , , 。 から への最短路の本数を求めよ。

例題の解答

手順1(最短距離の表):ベルマン・フォード法を使います。初期値は 、他の頂点はすべて です。問題文の辺の順に緩和します。
1 周目:
- で 、 で
- : で変化なし
- で 。: で変化なし
- で 。: なので
- : で変化なし

2 周目はどの値も変わりません。1 周で変化がなければ、それ以降も変わりません。よって です。負の閉路はありません(さらに 1 周しても値が変わらないため)。

手順2(最短路の辺):
- ()、()、()は成立
- ()、()、()も成立
- ()と ()は捨てる

手順3(閉路と計算順):残した辺で、どの頂点からも に至れます。辺の長さはすべて正なので閉路はありません。 の小さい順 で計算します。

手順4(順に足す): から始めます。
-
-
-
-

手順5:最短路は 3 本です。実際、、、 はどれも長さ 5 です。

答え:

よくある誤り

この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。

入口の問題

この技能を使う問題