BFS

アルゴリズム

迷路解決の賢者:幅優先探索のススメ

子供の頃、誰もが一度は遊んだことがある迷路。紙の上で鉛筆を走らせ、行き止まりにぶつかっては、分かれ道まで戻って別の道を試した経験をお持ちの方も多いのではないでしょうか。実は、コンピュータに迷路を解かせる際にも、私達人間と同じように、あらゆる道を試していくという方法が取られます。しかし、コンピュータは迷路をそのまま理解できるわけではありません。そこで登場するのが「探索木」という考え方です。迷路を、選択肢が枝分かれしていく「木」のような構造で表現するのです。迷路のスタート地点を木の根元と見立てます。そして、道が分岐するたびに、それぞれの道が枝分かれしていくように、木を成長させていきます。行き止まりは、木の枝の先端、つまり行き止まりとして表現されます。このようにして、複雑に入り組んだ迷路を、コンピュータが理解しやすい形に変換します。コンピュータはこの探索木を使って、スタート地点からゴール地点まで、全ての分かれ道を順番に辿っていきます。まるで、先を見通せるかのように、あらゆる可能性を検討していくのです。そして、ゴールにたどり着く道が見つかったとき、コンピュータは迷路を解いたことになるのです。このように、迷路と探索木は、一見すると異なるものに見えますが、実は密接に関係しており、コンピュータが迷路を解くための重要な鍵を握っています。
アルゴリズム

迷路を解くならコレ!幅優先探索で最短経路を探そう

子供の頃、誰もが一度は遊んだことがある迷路。簡単な迷路ならサッと解けるかもしれませんが、行き止まりや分かれ道が多い複雑な迷路になると、解くのはなかなか大変です。頭の中で道筋をシミュレーションして、それでも分からなければ、実際に鉛筆で道を辿ってみたりするのではないでしょうか。では、コンピュータを使って迷路を解く場合、どのようにして正しい経路を見つけ出すのでしょうか?実は、人間が迷路を解く時のように、コンピュータも分かれ道に差し掛かるごとに「こっちかな?それともあっちかな?」と順番に選択肢を試していく方法があります。このような方法を『探索』と呼びます。探索には様々な方法がありますが、その中でも代表的な方法の1つが、『幅優先探索』です。幅優先探索は、迷路のスタート地点から出発し、そこから行ける場所を全て調べていきます。そして、行ける場所からまた行ける場所を調べて…というように、まるで波紋が広がるように探索範囲を広げていく方法です。幅優先探索は、必ずゴールまでの最短経路を見つけ出すことができるという利点があります。しかし、迷路が複雑になると、探索範囲が爆発的に広がり、処理に時間がかかってしまうという欠点もあります。そのため、状況に応じて他の探索方法と使い分けたり、工夫を加えたりする必要があるのです。