너비 우선 탐색
은 그래프 탐색 알고리즘으로, 같은 깊이에 해당하는 정점부터 탐색하는 알고리즘이다.
큐
를 이용하여 구현할 수 있다.시작 지점
에서 가까운 정점
부터 탐색한다.V
, 간선의 수 E
일때 BFS의 시간복잡도는 O(V + E)
이다.최단 경로
를 찾아줌다음과 같은 그래프에서 너비 우선 탐색이 어떻게 실행되는지 알아보자.
큐: ['A']방문: ['A']
큐: ['B', 'C']방문: ['A', 'B', 'C']
큐: ['C', 'D', 'E']방문: ['A', 'B', 'C', 'D', 'E']
큐: ['D', 'E', 'F', 'G']방문: ['A', 'B', 'C', 'D', 'E', 'F', 'G']
깊이 우선 탐색
은 그래프 탐색 알고리즘으로, 최대한 깊은 정점부터 탐색하는 알고리즘이다.
스택
을 이용하여 구현할 수 있다.시작 정점
에서 깊은 것 부터 찾는다.V
, 간선의 수 E
일때 DFS의 시간복잡도는 O(V + E)
이다.다음과 같은 그래프에서 깊이 우선 탐색이 어떻게 실행 되는지 알아봅시다.
스택: ['A']방문: ['A']
스택: ['A', 'B']방문: ['A', 'B']
스택: ['A', 'B', 'D']방문: ['A', 'B', 'D']
스택: ['A', 'B', 'D', 'E']방문: ['A', 'B', 'D', 'E']
스택: ['A']방문: ['A', 'B', 'D', 'E']
스택: ['A', 'C']방문: ['A', 'B', 'D', 'E', 'C']
스택: ['A', 'C', 'F']방문: ['A', 'B', 'D', 'E', 'C', 'F']
스택: ['A', 'C', 'F', 'G']방문: ['A', 'B', 'D', 'E', 'C', 'F', 'G']
스택: []방문: ['A', 'B', 'D', 'E', 'C', 'F', 'G']