からへのウォークが与えられたとする。このウォークが閉路を含んでいて閉路の平均長がウォークの平均長より小さいなら、何回も回ればウォークの平均長を閉路の平均長まで下げられるし、そうでないなら閉路を除いて損しない。また、閉路を含まないウォークは高々本の辺しか含まない。従って、以下のようなアルゴリズムが考えられる:
- に到達できる頂点の集合を求めて、以降はによる誘導部分グラフ上で考える。
- この時点でとがつながっていなければ終わり。
- Bellman-Ford法のようなDPをして、高々辺を通るという条件の下でのからまでの最短平均長ウォークの長さを求める。
- から到達できる最短平均長閉路の長さを求める。
- 2と3の小さいほうを取る。
実装上は3のアルゴリズムが2のDPを含んでいる。2は回、3は回回す必要があるので、最初から回回せばよい。
3については、ちょうど本の辺を使う場合のからへの最短経路、として
が求める長さである。ただし、から到達できない頂点がある時にそのまま扱うとという計算が起きてしまうので、の場合は除いて計算する。全部そう(=回目で到達できる頂点がない)なら閉路がないグラフなのでになるべきで、つじつまがあっている。
解説は「平均長が以下のウォークが存在するか?」という判定問題を解いて二分探索する方針だった。判定問題は、すべての辺の重みからを引いた時にからへの長さ以下のウォークが存在するかどうかで判定できて、これはやはりBellman-Fordで調べられる。