ワーシャルフロイド法

中継点 k を 1 つずつ許可しながら、全点対最短経路 D[i][j] = min(D[i][j], D[i][k] + D[k][j]) を距離行列の上で追います。

5
なし
編集モードでは現在 k = なし にリセットして編集します。重みはランダム(1〜9)で付きます。
許可中の中継点 k
このステップの更新数
累計更新数
完了
グラフ(有向・辺の数字=重み)
距離行列 D[i][j](行 i → 列 j・∞ は到達不能)
ワーシャルフロイド法は、すべての頂点ペア (i, j) の最短経路を一度に求めるアルゴリズムです。
アイデアは「中継点 k を 0 個、1 個、2 個… と少しずつ許可していく」こと。中継点 k を新たに許可したとき、 i → k → j の経路が今の i → j より短ければ、距離を更新します(D[i][j] = min(D[i][j], D[i][k] + D[k][j]))。
すべての k を許可し終えると、D は真の全点対最短距離になります。k スライダーや「k を 1 つ進める」ボタンで、行列のどのセルが短縮されたかを 1 ステップずつ追ってみましょう。

いま何が起きている?

ここがポイント