9. 探索 この文章では、探索問題を通じて、なぜ List に Monad があるのかを説明します。 1. 探索のおさらい ここで、探索 (search) とは 有向グラフのある点(始点)からある点(終点)までの経路を(もしあれば)求めること を指します。 探索のアルゴリズムには大きく分けて、深さ優先探索 (depth first search) と 幅優先探索 (breadth first search) の2つがあります。 深さ優先探索とは、終点にたどり着くか、行き止まりになるまで1つの経路を探索してから、 次の経路を探索する方法です。プログラムが簡単なのと、メモリー量、計算時間が比較的短くて済むという 特徴があります。ただし、最初に見つかった経路が最短経路だという保障はありません。 行き止まりになったら元の地点に戻って他の可能性を探すことをバックトラックといいます。 それに対し、幅優