幅優先探索(Breadth-First Search, BFS)は、グラフや木構造の探索アルゴリズムの一つです。この手法は、出発点となるノードから見て、距離が近いノードから順に探索を進めることが特徴です。
具体的には、まず出発ノードを探索し、次にその直接の隣接ノード群をすべて探索します。その後に、それらの隣接ノードの隣接ノード群を探索するというように、層(レベル)ごとに探索を進めていきます。
このプロセスを実現するために、キュー(queue)というデータ構造が用いられます。探索を開始するノードをキューに追加し、キューが空になるまで以下の操作を繰り返します。
まず、キューの先頭からノードを取り出し、そのノードが目的のノードであるか確認します。もしそうでなければ、取り出したノードに隣接する未訪問のノードをすべてキューの末尾に追加します。これにより、同じレベルのノードが先にキューに入るため、深さ方向ではなく幅方向に探索が進みます。
BFSは、特定のノードまでの最短経路を見つける場合に非常に有効です。なぜなら、最短経路はノードの連結数で定義されるため、層ごとに探索するこのアルゴリズムは、自然と最短の経路を発見するからです。
また、迷路の脱出やソーシャルネットワークにおける友人関係の探索など、幅広い分野で応用されています。ただし、非常に深いグラフでは多くのメモリを消費する可能性があります。
