Post

[Algorithm] DFS & BFS

[Algorithm] 깊이 우선 탐색과 넓이 우선 탐색 (DFS and BFS)

그래프 알고리즘으로, 각 상황에 맞춰 잘 사용하자. 경로 찾는 문제에서 자주 쓰인다.

  • 깊이 우선 탐색.
  • 루트 노드 혹은 임의의 노드에서 다음 브랜치로 넘어가기 전 해당 브랜치를 모두 탐색하는 방법.
  • 스택 or 재귀 함수로 구현.
  • 모든 경로를 방문해야 할 경우 적합.

시간 복잡도

V는 접점, E는 간선

  • 인접 행렬 : O(V^2)
  • 인접 리스트 : O(V+E)
  • 넓이 우선 탐색.
  • 루트 노드 혹은 임의의 노드에서 인접한 노드부터 먼저 탐색하는 방법.
  • 큐(queue)를 통해 구현한다. (해당 노드 주변부터 탐색해야 하므로)
  • 최소 비용 우선일 때 적합

시간 복잡도

V는 접점, E는 간선

  • 인접 행렬 : O(V^2)
  • 인접 리스트 : O(V+E)
This post is licensed under CC BY 4.0 by the author.