본문 바로가기
알고리즘

깊이 우선 탐색(depth-first search, DFS)

by 까망 하르방 2021. 2. 27.
반응형

DFS

그래프의 모든  정점을 방문할 때 최대한 깊숙히 정점을 방문하는 방식입니다. - Stack 이용

즉, 연결된 정점을 따라 계속 순회하다가 갈 곳이 없어지며 바로 이전단계로 가는 백트래킹 방식.

(깊이 우선 탐색은 탐색의 각 과정에서 가능한 한 그래프 안으로 '깊이' 들어가려고 시도하며, 

막힌 정점에 도달하지 않는 한 뒤로 돌아가지 않습니다. 더 따라갈 간선이 없을 경우 이전으로 돌아갑니다.)

 

특징

- 찾고자 하는 해가 깊은 곳에 있으면 유용하지만 Stack OverFlow에 유의해야 합니다.

- BFS의 경우에는 탐색과정에서 목표를 찾으면 최단경로에 해당되지만

  DFS는 최단경로가 아닐 수 있습니다.

 

▶ DFS와 BFS 비교  

 

DFS와 BFS 비교

출처: 나무위키 경로 비교 BFS - Queue 이용 - 최소신장트리(Minimum Spanning Trees), 최단경로(Shortest Paths) 장점: 무한히 깊거나 무한에 가까운 트리인 경우에 효과적 단점: 목표 노드로 가는 경로들 모..

zoosso.tistory.com

 

DFS 활용

- 두 정점이 서로 연결 여부

- 연결된 부분집합의 개수

- 그래프에서 Cycle 여부 확인

    그래프의 정점을 순회하며 특정 노드를 재방문 여부로 판단

- 위상정렬 (Topological sort)

※ BFS와 달리 DFS는 그래프의 구조에 관련된 다양한 문제를 푸는 데 사용됨

 

관련 문제

[BOJ] 2668 숫자 고르기 

[BOJ] 2666 벽장문의 이동

[Jungol] 1161 하노이 1(3기둥)

[BOJ] 1914 하노이 탑

[Jungol] 1405 하노이3(4기둥)

[BOJ] 1912 미로탐색

[Jungol] 1824 스도쿠

[BOJ] 2549 루빅의 사각형

[Jungol] 1013 Fivestar

[Jungol] 1681 해밀턴 순환 회로

[Jungol] 1889 N Queen 

[Jungol] 1180 Dessert

[BOJ] 9466 텀 프로젝트

[BOJ] 10451 순열 사이클

[BOJ] 9663 N-Queen

[BOJ] 10026 적록색약

[BOJ] 1260 DFS와 BFS

[BOJ] 2573 빙산

[SWEA] 2814 최장경로

[Jungol] 2217 DNA 조합

[SWEA] 1768 숫자야구게임

[Jungol] 2270 여객선(Cruise)

[Jungol] 3031 인형정리

- [BOJ] 2665 미로만들기 

[BOJ] 2529 부등호 

[SWEA] 1248 공통조상 (Tree 구조에서 DFS)

 

 

반응형

댓글