問題
深さ優先探索(DFS)を実装する際に最も自然に使うデータ構造はどれか。
選択肢
- 1キュー(FIFO)
- 2スタック(LIFO)または再帰
- 3優先度付きキュー
- 4双方向リスト
正解
2. スタック(LIFO)または再帰
詳しい解説を見る解説を閉じる
解説
DFS は最も最近訪問したノードから先へ進む後入れ先出しの性質を持つため、スタック(LIFO)または関数の再帰呼び出し(コールスタック)で実装するのが自然である。一方、BFS は浅い側から順に展開するためキュー(FIFO)を用いる。優先度付きキューはダイクストラ法や A* で評価関数の小さいノードから取り出す際に用いる。グラフ探索の基本アルゴリズムは計算量 O(V+E) で、トポロジカルソートや連結成分検出に発展する。
一問一答
全400問を繰り返し学習