幅優先探索(BFS)

グラフを層ごとに調べます。次の頂点はキューで決まるので、いつも近い頂点から先に訪問します。

  • 時間 O(V + E)
  • メモリ O(V)
  • キューを使う
用語の意味
  • 頂点: グラフの点。ここでは文字の入った円で描いています。
  • 辺: 2つの頂点を結ぶ線。ここではどちら向きにもたどれます。
  • 隣の頂点: ある頂点と辺で結ばれた頂点。アルファベット順に調べます。
  • キュー: 先に入れたものが先に出ます。BFS はいつも一番長く待っている頂点を取り出します。
  • スタック: 最後に入れたものが先に出ます。DFS はいつも最後にたどり着いた頂点から先へ進みます。
  • V と E: 頂点の数と辺の数。O(V + E) は、どの頂点もどの辺も決まった回数だけ処理されるという意味です。
0 / 60 ステップ
  • キューの中
  • 現在
  • 完了
  • 探索木の辺
  • 飛ばした辺

A から始めます。再生を押すか、1ステップずつ進めてください。

スペースキー: 再生・一時停止。左右の矢印キー: ステップ移動。Home キーと End キー: ジャンプ。

試してみましょう: 2つの部分に分かれたグラフを選んでください。始点とつながっていない頂点には、最後までたどり着きません。

仕組み

BFS は始点をキューに入れます。そして、キューの先頭の頂点を取り出し、その新しい隣の頂点を末尾に加える、という作業を繰り返します。キューは来た順に処理するので、辺1本で届く頂点はすべて、辺2本で届く頂点より先に完了します。頂点の横の数字は始点からの距離、つまりそこへ着くのに必要な辺の最少本数です。

向いている場面

ステップ数で最短の道が必要なときに BFS を使います。パズルの最少手数、ネットワークの最少ホップ数、知り合いの知り合いまでの範囲にいる人などです。大きなグラフでは、1つの層をまるごと抱えるのでキューが長くなることがあります。

© 2026 Developer Toolbox. All rights reserved. について