×
科目A|アルゴリズムとプログラミング
幅優先探索の仕組みを理解する上で重要なのが、「キュー(Queue)」というデータ構造の役割です。キューは、レジの順番待ちの列のように、「先に入れたものから先に取り出す(FIFO:First In, First Out)」性質を持ちます。幅優先探索のプログラムでは、まず現在いる場所から1歩で行ける新しい場所をすべてキューの最後尾に追加します。そして、キューの先頭から順番に場所を取り出し、さらにそこから1歩で行ける場所をまた最後尾に追加していく、という処理を繰り返します。この「古いものから順に処理する」というキューの性質によって、必然的にスタート地点から近い場所から順番に探索が行われるよう制御されています。グラフ全体をくまなく調べることができる確実な方法ですが、未探索の場所をすべてキューに保持しておく必要があるため、巨大なグラフや複雑な木構造を探索する場合には、大量のメモリを消費してしまう(空間計算量が大きくなる)という弱点もあります。

試験でのポイント