[Algorithm] DFS

Jay·2021년 2월 16일
0

Algorithm

목록 보기
26/44
post-thumbnail

깊이 우선 탐색 (DFS)

  • Depth First Search
  • 깊이 우선 탐색
  • 스택이 사용됨
  • 재귀적인 구현이 사용될 때가 많다.
  • 선수 자료 구조로 그래프를 공부해야 한다.

DFS를 사용할 때는 재귀호출(recursion)을 쓰는 게 효율적이고 효과적이다.

시작점부터 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐새갛고 넘어가는 방법.

✋ 구현 시 주의 할 점은 반드시 방문한 노드에 대한 표시를 해야 한다는 것.

장점

  • 현재 경로상의 노드들만 기억하면 되므로, 저장 공간의 수요가 비교적 적다.
  • 목표 노드가 깊은 단계에 있는 경우 해를 빨리 구할 수 있다.
  • 구현이 너비 우선 탐색(BFS) 보다 간단하다.

단점

  • 단순 검색 속도는 너비 우선 탐색보다 느리다.
  • 해가 없는 경우에 빠질 가능성이 있다.
    (사전에 임의의 깊이를 지정한 후 탐색하고, 목표 노드를 발견하지 못할 경우 다음 경로를 탐색하도록 해야한다.)
  • 깊이 우선 탐색은 해를 구하면 탐색이 종료되므로, 구한 해가 최단 경로가 된다는 보장이 없다.
    (목표에 이르는 경로가 다수인 경우, 구한 해가 최적이 아닐 수 있다.)

DFS를 활용한 좋은 문제가 있기에 관련 문제들을 연습해보면 좋을 것 같다.

profile
developer

0개의 댓글