IT用語
(
ひよぺん
)
Home
コラム
用語集
About
検索
Ctrl K
Esc
見つかりませんでした
調べたいIT用語を入力してね
DFS(深さ優先探索)
でぃーえふえす
コンピュータ基礎
用語集
› 📐 コンピュータ基礎 › DFS(深さ優先探索)
【でぃーえふえす】
DFS(深さ優先探索) とは?
最終更新:
2026年4月2日
💡 行けるところまで突き進んで、行き止まりになったら引き返す探索法
📌 このページのポイント
始点から一方向にできるだけ深く進み、行き止まりで戻る探索法
スタック
(後入れ先出し)または
再帰
呼び出しで実装する
全経路の列挙やサイクル検出、
トポロジカルソート
に活用される
BFS
に比べてメモリ消費が少ない傾向がある
DFS(深さ優先探索)の動き
A
B
E
C
D
F
1
2
3
4
5
6
探索順: A → B → C → D → E → F(深い方を優先)
DFS(深さ優先探索)のイメージ
ひよこ
DFS
って
BFS
と何が違うの?
ペンギン先生
BFS
が浅いところを全部見てから深くに行くのに対して、
DFS
は一つの道をとことん深く進んで、行き止まりになったら一つ前に戻って別の道を試す方式だよ。
ひよこ
迷路で壁にぶつかるまで進んで、ダメなら引き返す感じだね!
ペンギン先生
その通り!実はこの方法、
スタック
という
データ構造
を使うか、関数の
再帰
呼び出しで自然に実装できるんだ。
プログラム
の関数呼び出し自体が
スタック
だから、
再帰
と相性抜群なんだよ。
ひよこ
どんなときに
DFS
を使うのがいいのかな?
ペンギン先生
すべてのパターンを列挙したいとき、グラフに
ループ
があるか調べたいとき、あとは
トポロジカルソート
と呼ばれるタスクの
依存関係
を整理する処理に使うね。
ひよこ
BFS
よりメモリが少なくて済むって本当?
ペンギン先生
そうだよ。
BFS
は同じ深さのノードを全部
キュー
に入れるから、幅が広いグラフだとメモリが爆発しがち。
DFS
は今進んでいる経路のノードだけ覚えておけばいいから、深さ分のメモリで済むんだ。
ひよこ
DFS
に弱点はあるの?
ペンギン先生
最短経路を保証しないのが最大の弱点だね。あと、無限に深い経路があると永遠に戻ってこられないこともある。その対策として深さに上限を設ける「反復深化探索」というテクニックもあるよ。
BFS
のメモリ効率と
DFS
の省メモリを両立した賢い方法なんだ。
まとめ:ざっくりこれだけ覚えればOK!
「
DFS
」って出てきたら「一本道をとことん進んでから戻る探索法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Depth-First Search」
= 深さ優先探索
💬 Depth(深さ)を優先して探索するからこの名前なんだよ
🔗 あわせて読みたい
アルゴリズム とは?
BFS(幅優先探索) とは?
スタック とは?
シェアする
X
URLコピー
← 用語集にもどる