グラフ理論の問題
頂点の集合を とし、次の 5 本の重みつき有向辺をもつ有向グラフを考える( は から への重み の辺を表す)。
始点 から頂点 への最短距離(経路上の辺の重みの和の最小値)をそれぞれ とする。ベルマン・フォード法を用いて、組 をこの順に求めよ。
この問題で使うもの
- 負の重みを含む最短路(ベルマン・フォード法)(説明と入口の問題)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
ベルマン・フォード法を使う。、ほかの頂点を として始め、すべての辺で緩和をくり返す。
ヒント 2
辺 ごとに と更新する。頂点数は 4 なので、くり返しは 回で十分。
ヒント 3
1 回目に辺を問題文の順に調べると、、 は になったあと辺 で に更新される。続けて を求めよう。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
ベルマン・フォード法では、はじめに 、それ以外の頂点を とおき、すべての辺 について緩和
を行う操作を 回くり返す。ここでは辺を問題文の順に調べる。
初期値:。
1 回目
- : より 。
- : より 。
- : より 。
- : より 。
- : より 。
1 回目の終わりで 。
2 回目
- : は より小さくないので変化なし。
- : で変化なし。
- : で変化なし。
- : で変化なし。
- : で変化なし。
2 回目で値が 1 つも変わらなかったので、3 回目も変化しない。さらにもう 1 回すべての辺を調べても更新が起きないので、このグラフには負の閉路がなく、得られた値が最短距離である。
実際、 は経路 ()、 は経路 ()で実現されている。負の辺 を通ることで、直接の辺 (重み 3)より短くなっている点に注意する。
よって 。
別解
s から各頂点への経路を列挙する。
a への経路は s→a のみで、長さは 5 なので 。
b への経路は s→b(長さ 3)と s→a→b(長さ )の 2 通りで、最小は 1 なので 。
c への経路は s→a→c(長さ 9)、s→b→c(長さ 5)、s→a→b→c(長さ )の 3 通りで、最小は 3 なので 。
ベルマン・フォード法による確認。初期値は 、他は とし、辺を問題文に書かれた順に緩和する。
1 回目: (s,a) で 、(s,b) で 、(a,b) で より 、(a,c) で 、(b,c) で より 。
2 回目: どの辺を緩和しても値は更新されず、収束する。負閉路もない(グラフは非巡回)。
よって 。