너비 우선 탐색 - Breadth-First Search
루트 노드(혹은 다른 임의의 노드)에서 시작해서 인접한 노드를 먼저 탐색하는 방법이다.
- 맹목적인 탐색을 하고자 할 때 사용할 수 있다.
- 주로 두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 사용한다.
큐 - Queue자료구조를 이용해 구현한다.
동작 원리
BFS의 동작은 큐를 이용해 지금 위치에서 갈 수 있는 노드를 모두 넣는 방식으로, 큐에 넣는 동시에 방문했다고 체크해야 한다.
준비물
- 그래프 혹은 트리
- Queue
- 방문여부 확인용 배열
트리가 아닌 그래프에 꼭 필요하다.
BFS를 통해 해결할 수 있는 문제의 조건
- 최소 비용 문제이어야 한다.
- 간선의 가중치가 1 이어야 한다.
- 정점과 간선의 개수가 적어야 한다.