【びーえふえす】

BFS(幅優先探索) とは?

💡 まずは隣人全員に挨拶してから、その先へ進む探索法
📌 このページのポイント
BFS(幅優先探索)の動き A ← 開始 B C D E F G H 探索順: A → B → C → D → E → F → G → H(近い順) 深さ0 深さ1 深さ2
BFS(幅優先探索)のイメージ
ひよこ ひよこ

BFSってどういう探索なの?

ペンギン先生 ペンギン先生

スタート地点から1歩で行ける場所を全部訪問して、次に2歩で行ける場所を全部訪問して……という風に、近い順に広がっていく探索法だよ。

ひよこ ひよこ

水面に石を投げたときの波紋みたいな感じかな?

ペンギン先生 ペンギン先生

まさにその通り!波紋が同心円状に広がるように探索するんだ。だから最初にゴールに到達したルートが最短経路だと保証されるよ。

ひよこ ひよこ

どうやって「次に訪問する場所」を覚えておくの?

ペンギン先生 ペンギン先生

キューというデータ構造を使うんだ。先に入れたものから順に取り出す仕組みで、行列の先頭から処理するイメージだね。

ひよこ ひよこ

DFSとはどう違うのかな?

ペンギン先生 ペンギン先生

DFSは一本道をどこまでも深く進んでから戻るタイプ。BFSは浅いところを全部見てから深くに進む。迷路の最短ルートを見つけたいならBFS、全ルートをとにかく列挙したいならDFSが向いているよ。

ひよこ ひよこ

実際にはどんなところで使われてるの?

ペンギン先生 ペンギン先生

カーナビの最短ルート検索、SNSの「知り合いかも」機能、ネットワークブロードキャスト、パズルの最小手数解法など、かなり幅広いよ。計算量はO(V+E)で、ノード数Vとエッジ数Eに比例するから大規模グラフではメモリ消費に注意が必要だね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「BFS」って出てきたら「近い順に全部見て回る探索法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Breadth-First Search」 = 幅優先探索
💬 Breadth(幅)を先に広げてから深くに進む探索だから、この名前が付いたんだよ
← 用語集にもどる