Algorithm

4-1 탐색(DFS)

이야기prog 2025. 1. 20. 23:44

 깊이 우선 탐색(depth first search)은 그래프 완전 탐색 기법 중 하나이다. 깊이 우선 탐색은 그래프의 시작 노드에서 출발하여 탐색할 한쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 다시 탐색을 수행하는 알고리즘이다.

 

깊이 우선 탐색의 특징으로 보통 재귀 함수나 자료구조중에 스택을 이용하여 구현하는데 DFS는 선출후입의 구조를 가지고 있기 때문이다.

 

시간복잡도는 O(V + E)로 V는 노드의 개수이고, E는 엣지의 개수이다.

 

재귀 함수를 이용하여 구현하면 스택오버플로우를 유의하며 구현하여야 한다.

 

깊이 우선 탐색의 핵심 이론

 

DFS는 한 번 방문한 노드를 다시 방문하면 안 되므로 노드 방문 여부를 체크할 추가적인 배열이 필요하다.

 

이미지 출처:https://gmlwjd9405.github.io/2018/08/14/algorithm-dfs.html

 

 

https://mngprog.tistory.com/34

 

11724번 (silver 2)

https://www.acmicpc.net/problem/11724간단하게 dfs나 bfs를 구현해 탐색하면 해결할 수 있는 문제이다. #include #include using namespace std;void DFS(vector>&, vector&, int);int main() { cin.tie(0)->sync_with_stdio(false); int N, E; cin

mngprog.tistory.com

위의 백준 문제를 DFS를 이용하여 해결하면 이해하기 쉽다.

 

 

 

'Algorithm' 카테고리의 다른 글

4-2. 정렬(BFS)  (0) 2025.01.22
3-3 정렬(RadixSort)  (0) 2025.01.20
3-2 정렬(Merge Sort)  (0) 2025.01.19
3-1 정렬(Quick Sort)  (0) 2025.01.18
2.투 포인터  (0) 2025.01.18