深度優先ナビゲーション
3620 ワード
DFS
ルートノード(または他の任意のノード)から開始し、次のブランチ(ブランチ)の前にブランチを完全にナビゲートして移行する方法.
広く探求する前に,まず深く探求する.
このメソッドは、すべてのノードにアクセスする場合に使用します.DFS
はBFS
より簡単です.
単純探索速度自体はBFSより遅い.
スタックまたは再帰関数で実現でき、再帰関数は容易に実現できるため、ほとんどが再帰関数で実現される.
DFSアルゴリズムの実現方式
void search(Node root) {
if (root == null) return;
// 1. root 노드 방문
visit(root);
root.visited = true; // 1-1. 방문한 노드를 표시
// 2. root 노드와 인접한 정점을 모두 방문
for each (Node n in root.adjacent) {
if (n.visited == false) { // 4. 방문하지 않은 정점을 찾는다.
search(n); // 3. root 노드와 인접한 정점 정점을 시작 정점으로 DFS를 시작
}
}
}
DFSのメリット
DFSの欠点
(任意の深さを予め指定してからナビゲートし、ターゲットノードが見つからない場合は以下のパスにナビゲートする)
(ターゲットに到達するパスが複数ある場合、解は最適ではない可能性がある)
DFSの時間的複雑さ
Reference
この問題について(深度優先ナビゲーション), 我々は、より多くの情報をここで見つけました https://velog.io/@chayezo/깊이-우선-탐색DFS-Depth-First-Searchテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol