그래프 탐색 - BFS, DFSPermalink



BFS, DFSPermalink


  • BFS (너비우선탐색) : 자식 탐색 완료 후 자식의 자식 탐색 …
  • DFS (깊이우선탐색) : 자식과 자식의 자식 … 탐색 후 다른 자식, 자식의 자식 … 순서로 탐색


BFSPermalink


  • 원리 : 시작점에 연결된 Vertex를 찾고 Queue에 저장. Queue의 가장 먼저 것 뽑아서 반복
  • 시간복잡도 : O(V+E)



DFSPermalink


  • 구현 방법 : 재귀함수 (-> 백트래킹), stack
  • 원리 : 시작점에 연결된 Vertex를 찾고, 더 이상 연결된 Vertex가 없을 때까지 연결된 계속 찾음(재귀함수). 더 이상 연결된 Vertex가 없으면 다음 노드 탐색
  • 시간복잡도 : O(V+E)



재귀함수Permalink


  • 자기 자신을 다시 호출하는 함수
  • 주의
    • 재귀함수 종료 시점 명시
    • 재귀함수 깊이 너무 깊어지면 Stack Overflow
      • Stack Overflow : 메모리에 함수를 호출. 호출된 함수는 아래부터 쌓임(stack) 이 스택이 넘치면(메모리 초과) Stack Overflow
  • DFS, 백트래킹




참고 자료


Leave a comment