DFS(Depth-First Search)의 정의와 특징

ORCASUIT·2023년 10월 23일
0

DFS(Depth-First Search)의 정의와 특징

정의

DFS는 깊이 우선 탐색 알고리즘이며, 그래프의 모든 정점을 방문하는 방법 중 하나입니다. 시작 정점에서 시작하여 가능한 멀리 있는 정점까지 깊게 들어가면서 탐색합니다.

특징

  1. 깊이 우선 탐색: 가능한 한 깊게 탐색하고, 더 이상 탐색할 곳이 없으면 이전 정점으로 돌아가 다음 경로를 탐색합니다.
  2. 스택(Stack) 또는 재귀 사용: 보통 스택이나 재귀를 사용하여 구현됩니다.
  3. 백트래킹: 문제 해결을 위한 경로를 찾을 때 유용하며, 해가 없는 루트는 즉시 포기하고 다시 이전 단계로 돌아갑니다.
  4. 시간 복잡도: 일반적으로 (O(V + E))입니다. 여기서 (V)는 정점의 수, (E)는 간선의 수입니다.

장점

  1. 메모리 효율성: BFS에 비해 상대적으로 적은 메모리를 사용합니다.
  2. 백트래킹 가능: 문제 해결을 위한 경로를 찾을 때 유용하며, 해가 없는 루트는 즉시 포기하고 다시 이전 단계로 돌아갑니다.
  3. 간결한 코드: 재귀를 사용하면 코드가 간결해질 수 있습니다.

단점

  1. 최단 경로 미보장: 최단 경로를 찾을 수 없을 가능성이 있습니다.
  2. 스택 오버플로우 위험: 매우 깊은 그래프에 대해서는 재귀를 사용할 때 스택 오버플로우가 발생할 수 있습니다.

사용 예

  1. 미로 찾기: 출발점에서 도착점까지의 경로를 찾을 때
  2. 최적화 문제: 여러 가능한 해 중에서 최적의 해를 찾을 때
  3. 트리 순회: 파일 시스템, DOM(Document Object Model) 트리 등을 순회할 때

C와 Python에서의 비교

C

// C 코드 (이전에 제공된 예제와 동일)

Python

# Python 코드 (이전에 제공된 예제와 동일)

정리

C는 성능 최적화와 메모리 관리가 가능하지만 구현이 복잡할 수 있습니다. Python은 라이브러리와 기본 제공되는 자료형을 활용하여 빠르고 쉽게 구현할 수 있습니다.


0개의 댓글