Bellman-Ford のよりスマートなバージョンを以下に示します。
//Queue Q; source s; vertices u, v
Q ← s // Q holds vertices whose d(v) values have been updated recently.
While (Q !empty)
{
u ← Dequeue(Q)
for each neighbor v of u
{
Relax(u, v)
if d(v) was updated by Relax and v not in Q
Enqueue(v)
}
}
v = #vertices、E = #edges の場合、このアルゴリズムが (V*E) 時間の複雑さによって下限されるタイプのグラフを考えられる人はいますか?
これの落とし穴がどこにあるのか見てみたい。