2. 너비 우선 탐색
- 너비 우선 탐색(BFS: breath-first search)도 그래프를 완전 탐색하는 방법 중 하나이다.
- 시작 노드에서 출발해 시작 노드를 기준으로 가까운 노드를 먼저 방문하면서 탐색하는 알고리즘이다.
| 기능 |
특징 |
시간 복잡도(노드 수: V, 에지 수: E) |
| 그래프 완전 탐색 |
FIFO 탐색 Queue 자료구조 이용 |
O(V + E) |
- 너비 우선 탐색은 선입선출 방식으로 탐색하므로 큐를 이용해 구현한다.
- 너비 우선 탐색은 탐색 시작 노드와 가까운 노드를 우선하여 탐색하므로 목표 노드에 도착하는 경로가 여러 개일 때 최단 경로를 보장한다.
✅ 너비 우선 탐색의 핵심 이론
- BFS를 시작할 노드를 정한 후 사용할 자료구조 초기화하기
- BFS는 방문했던 노드는 다시 방문하지 않으므로 방문한 노드를 체크하기 위한 배열이 필요하다.
- 그래프를 인접 리스트로 표현한다.
- 탐색을 위해 스택이 아닌 큐를 사용한다.

- 큐에서 노드를 꺼낸 후 꺼낸 노드의 인접 노드를 다시 큐에 삽입하기
- 큐에서 노드를 꺼내면서 인접 노드를 큐에 삽입한다. 이떄 방문 배열을 체크하여 이미 방문한 노드는 큐에 삽입하지 않는다.
- 큐에서 꺼낸 노드는 탐색 순서에 기록한다.

- 1을 꺼내며 탐색 순서에 1을 기록하고인접 노드 3, 2를 큐에 삽입하며 방문 배열에 체크한다.
- 큐 자료구조에 값이 없을 때까지 반복하기
- 큐에 노드가 없을 때까지 앞선 과정을 반복한다.

- 2, 3 순서로 노드를 꺼내며 인접 노드를 큐에 삽입한다.
- 2의 경우 5, 6은 아직 방문한 적이 없으므로 방문 배열을 체크하며 모두 삽입한다.
- 3의 경우 4 역시 방문한 적이 없으므로 방문 배열을 체크하며 삽입한다.