🎁 今すぐ登録するず、オンラむンAIを最倧30分無料で利甚できたす。クレゞットカヌドは䞍芁です。

フロむド – りォヌシャル アルゎリズム: コヌディング面接ガむド

August 21, 2026
フロむド – りォヌシャル アルゎリズムを孊習し、その反埩を導き出し、行列を远跡し、負のサむクルを怜出し、パスを再構築し、耇雑さを説明したす。
䞭間頂点を介しお曎新されるフロむド – りォヌシャル距離行列
フロむド – りォヌシャル アルゎリズム、りォヌシャル フロむド アルゎリズム、党ペア最短パス、コヌディング面接の準備

TL;DR: フロむド – りォヌシャル アルゎリズムは、動的プログラミングを䜿甚しおすべおのペアの最短経路を蚈算したす。グラフから距離行列を初期化し、すべおの䞭間頂点 k に぀いお、各ペアを dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]) で曎新したす。これは O(V³) 時間ず O(V²) 空間で実行され、負の察角゚ントリを通じお負のサむクルを露呈する可胜性がありたす。

フロむド – りォヌシャル アルゎリズム: コヌディング面接ガむド

再垰、ルヌプ䞍倉匏、行列トレヌス、パス再構成、゚ッゞ ケヌス、および耇雑さの説明を緎習したす。

YesToTheOfferをکŠã™

䞭間頂点を介しお曎新されるフロむド – りォヌシャル距離行列

フロむド・りォヌシャルアルゎリズムずは䜕ですか?

Floyd-Warshall は、すべおの順序付き頂点ペア間の最短パスを求める動的プログラミング アルゎリズムです。これは、有向たたは無向の重み付きグラフで動䜜し、負の゚ッゞを蚱可したす。ただし、関連する負の重みサむクルが存圚する堎合、サむクルを繰り返し通過するこずでパス コストが削枛され続けるため、䞀郚の最短パスには有限の最小倀が存圚したせん。

このアルゎリズムは、グロヌバル パスの問題を 1 ぀の決定に倉えるため、蚘憶に残りたす。぀たり、珟圚の䞭間頂点 k に぀いお、i から j ぞの最もよく知られおいるパスはそのたたの方が良いのか、それずも i から k に進み、次に k から j に進む方が良いのかずいうこずです。

再発をどのように導き出すのでしょうか

D(k, i, j) を、䞭間頂点が最初の k 個の頂点からのみ埗られる i から j たでの最短距離ずしお定矩したす。蚱可された最短パスは、頂点 k を回避しお D(k−1, i, j) を維持するか、k を䜿甚しお i から k たでの最良の蚱可されたパスず k から j たでの最良の蚱可されたパスに分割したす。

これにより、次の繰り返しが埗られたす。

YTOKEN0

ステヌゞ k は互換性のある方法でステヌゞ k-1 の倀のみに䟝存するため、行列を適切な堎所で曎新できたす。この掚論は、重芁なルヌプ順序も説明しおいたす。k は最も倖偎のルヌプでなければなりたせん。 i たたは j を倖偎に眮くず䞍倉匏が倉曎され、郚分的に蚱可されたパスが誀っお䜿甚される可胜性がありたす。

距離行列を初期化するにはどうすればよいでしょうか?

V × V 行列を䜜成したす。 dist[i][i] をれロに蚭定し、ダむレクト ゚ッゞのセルをその重みに蚭定し、ダむレクト ゚ッゞが存圚しない堎合は無限倧を䜿甚したす。平行な゚ッゞが可胜な堎合は、盎接の重みを最小に保ちたす。 2 ぀の距離を远加する前に、無限センチネルがオヌバヌフロヌしたり、誀った候補が䜜成されたりしないように、䞡方が有限であるこずを確認しおください。

マトリックスセル初期倀理由
YTOKEN00頂点から頂点自䜓たでの空のパス
ダむレクト゚ッゞ i → j゚ッゞの重み䞭間頂点のない最適なパス
ダむレクト゚ッゞなし無限倧ペアが到達可胜かどうかはただ䞍明です
平行゚ッゞ最小゚ッゞ重量最良の盎接オプションは基本ケヌスです

むンタビュヌでフロむドりォヌシャルをどのように远跡したすか

マトリックスの行に゜ヌス、列に宛先ずしおラベルを付けたす。初期行列を衚瀺し、k を 1 ぀遞択しお、代衚的なセルを評䟡したす。各セルに぀いお、珟圚の倀を k を通るルヌトず比范したす。䞡方のセグメントが到達可胜で、新しい合蚈が小さい堎合にのみ曎新したす。

通垞、倧きな䟋ではすべおの行列を描画する必芁はありたせん。 1 ぀の改善ず 1 ぀の倉曎されおいない倀を含む、䞍倉条件を瀺すのに十分なセルをトレヌスしたす。 k を完了した埌、䞭間頂点が凊理されたセットに制限されおいるパスの䞭ですべおの行列゚ントリが最適であるこずを瀺したす。

アルゎリズムの遞択、耇雑さ、゚ッゞケヌスに関するコヌディングむンタビュヌ分析

どのような疑䌌コヌドを曞けばよいでしょうか?

k を倖偎にした 3 ぀のネストされたルヌプを䜿甚したす。

for k from 0 to V - 1:
  for i from 0 to V - 1:
    for j from 0 to V - 1:
      if dist[i][k] is finite and dist[k][j] is finite:
        dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j])

有限怜査ず数倀型に぀いお説明したす。倧きな敎数センチネルを持぀蚀語では、負の倀に無限倧を加算するず、有限であるかオヌバヌフロヌのように芋えるこずがありたす。ガヌドは正確性の䞀郚であり、単なる実装の詳现ではありたせん。

時間ず空間の耇雑さは䜕ですか?

3 ぀のルヌプは k、i、j のすべおの組み合わせを怜査するため、ランタむムは O(V³) になりたす。距離行列は O(V²) スペヌスを占有したす。むンプレヌス曎新により 3 次元テヌブルが回避され、パス再構築のためのネクストホップたたは先行マトリックスにより O(V²) 個のスペヌスが远加されたす。

Floyd-Warshall は、実装がコンパクトで予枬可胜であるため、適床な密床のグラフにずっお魅力的なこずがよくありたす。非負の゚ッゞを持぀倧芏暡な疎グラフの堎合、各゜ヌスからダむクストラを実行する方が効率的になる可胜性がありたす。遞択する前に、必芁な出力、グラフ密床、重み制玄、頂点数を垞に比范しおください。

実際の最短経路をどのように再構築するのでしょうか?

距離だけでは頂点のシヌケンスはわかりたせん。 i から j ぞの盎接゚ッゞが存圚する堎合、j に初期化された next[i][j] 行列を維持したす。 k を介したルヌティングによっお dist[i][j] が改善されるたびに、next[i][j] を next[i][k] に蚭定したす。パスを再構築するには、目的地に到達するたで珟圚の頂点から next[current][destination] ぞの移動を繰り返したす。

再構築前に到達䞍胜なペアをチェックし、負のサむクルのケヌスから保護したす。ペアが負のサむクルに移動しお目的地に到達できる堎合、再構築するための有限の最短経路はありたせん。

フロむド・りォヌシャルはどのようにしお負のサむクルを怜出するのでしょうか?

アルゎリズムが終了したら、察角線を怜査したす。倀 dist[v][v] < 0 は、負の重みサむクルが v から到達可胜であり、v に戻るこずができるこずを蚌明したす。これは、単に負の゚ッゞを芋぀けるよりも匷力です。負の゚ッゞは、完党に有効な最短パスを持぀グラフに存圚する可胜性がありたす。

むンタビュアヌがどのペアが圱響を受けるかを尋ねたら、i がそのような頂点 v に到達でき、v が j に到達できるすべおの i ず j を特定したす。これらのペアは負のサむクルを任意に䜕床でもルヌプできるため、最短パスの倀は有限ではありたせん。

別の最短パス アルゎリズムを遞択する必芁があるのはどのような堎合ですか?

重み付けされおいないグラフには幅優先探玢を䜿甚し、非負の重みを持぀単䞀゜ヌス問題にはダむクストラを䜿甚し、負の重みたたは到達可胜な負のサむクル怜出が重芁な堎合には単䞀゜ヌスにベルマン・フォヌドを䜿甚したす。すべおのペアの距離が必芁であり、立法時間が蚱容できる堎合には、フロむド – りォヌシャルが盎接の遞択肢ずなりたす。

芁件兞型的な遞択
重み付けされおいない単䞀゜ヌス幅優先怜玢
非負の重み付き単䞀゜ヌスディクストラ
負の重み、単䞀゜ヌスベルマン・フォヌド
すべおのペア、控えめたたは密なグラフフロむド・りォヌシャル

避けるべき面接の間違いはどれですか?

k を別のルヌプ内に入れたり、察角のれロを忘れたり、ガヌドなしで無限を远加したり、負の゚ッゞず負のサむクルを混同したり、O(V²) 行列空間にすべおの衚珟で入力が自動的に含たれるず䞻匵したりしないでください。グラフに方向があるかどうか、平行な゚ッゞが存圚するかどうか、面接官が距離、パス、たたはサむクルの圱響を受けるペアを必芁ずしおいるかどうかを明確にしたす。

コヌディング むンタビュヌ アシスタント ワヌクフロヌ を緎習し、ベルマン-フォヌド アルゎリズム を比范し、ビッグ オヌの耇雑さに関するチヌトシヌト を確認しおください。

よくある質問

FAQ

フロむド – りォヌシャル アルゎリズムは䜕に䜿甚されたすか?

Floyd-Warshall は、重み付きグラフ内の頂点のすべおのペア間の最短経路距離を蚈算したす。負の゚ッゞの重みをサポヌトしたすが、到達可胜な負の重みサむクルの圱響を受けるペアの最短パスは明確に定矩されおいたせん。

フロむド・りォヌシャル再発ずは䜕ですか?

各䞭間頂点 k に぀いお、dist[i][j] をその珟圚の倀ず dist[i][k] に dist[k][j] を加えた倀の最小倀に曎新したす。すべおの曎新で蚱可された䞭間頂点のみが䜿甚されるように、最も倖偎のルヌプは k でなければなりたせん。

時間ず空間の耇雑さは䜕ですか?

暙準アルゎリズムは O(V³) 時間で実行され、距離行列に O(V²) 空間を䜿甚したす。パスの再構築では、別の O(V²) 行列が远加されたすが、挞近時間境界は倉曎されたせん。

フロむド・りォヌシャルは負のサむクルを怜出できるでしょうか?

はい。すべおの䞭間頂点を凊理した埌、dist[v][v] の負の倀は、負の重みサむクルが v から到達可胜であるこずを意味したす。そのようなサむクルの圱響を受けるすべおの送信元ず宛先のペアを特定するには、远加の到達可胜性掚論が必芁です。

ディクストラの代わりにフロむド・りォヌシャルを䜿甚する必芁があるのはどのような堎合ですか?

すべおのペアの距離が必芁で、グラフのサむズが控えめで、単玔な密グラフ ゜リュヌションが蚱容される堎合は、Floyd–Warshall を䜿甚したす。通垞、反埩ダむクストラは、重みが負でない倧きな疎グラフの堎合に適しおいたす。

ルヌプだけでなく、䞍倉条件も緎習したしょう

YesToTheOffer は、コヌディングの説明を構造化し、個人的な準備ノヌトに基瀎を眮き、特殊なケヌスを怜蚎し、埌で確認できるようにむンタビュヌの蚘録を保存するのに圹立ちたす。

ルヌプだけでなく、䞍倉条件も緎習したしょう

再発をリハヌサルし、k が最も倖偎である理由を説明し、パスの再構成ず負のサむクルの゚ッゞ ケヌスをテストしたす。

YesToTheOfferをکŠã™
フロむド – りォヌシャル アルゎリズム: 面接ガむド | yestotheoffer