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