BFS의 정의 : 루트 노드(혹은 다른 임의의 노드)에서 시작해서 인접한 노드를 먼저 탐색하는 방법
BFS의 특징
BFS의 시간복잡도
- 인접 리스트로 표현된 그래프: O(N+E)
- 인접 행렬로 표현된 그래프: O(N^2)
정점 0을 시작 정점으로 BFS (큐에 0 추가)
큐에서 0을 꺼내고 0에 방문 후 0과 인접한 정점들을 큐에 추가
큐에 1 추가
큐에 3 추가
큐에 4 추가
큐에서 1을 꺼내고 1에 방문 후 1과 인접한 정점들을 큐에 추가
0은 이미 방문했고 큐에 2를 추가
큐에서 3을 꺼내고 3에 방문 후 3과 인접한 정점들을 큐에 추가
0은 이미 방문했고 2와 4는 이미 큐에 있으니 추가 안함
큐에서 4를 꺼내고 4에 방문 후 4와 인접한 정점들을 큐에 추가
0과 3은 이미 방문했고 2는 이미 큐에 있으니 추가 안함
큐에서 2를 꺼내고 2에 방문
더이상 추가할 정점이 없고 큐도 비었으니 탐색 종료
DFS의 정의 : 루트 노드(혹은 다른 임의의 노드)에서 시작해서 그래프의 깊은 노드를 우선적으로 탐색하는 방법
DFS의 특징
DFS의 시간복잡도
- 인접 리스트로 표현된 그래프: O(max(V+E))
- 인접 행렬로 표현된 그래프: O(V^2)