1. BFS
- 그래프를 탐색하는 방법 중 하나로, 가장 가까운 노드부터 우선적으로 탐색하는 알고리즘
- 큐 자료구조 혹은 Linked List를 이용한다.
- 그래프의 최단 경로를 구하는 다익스트라 알고리즘 등에 유용하게 쓰인다.
- 대표 유형 : 경로 탐색, 네트워크, 조합 만들기
2. 동작 원리
from collections import deque
queue = deque([1])
visited = [1]
graph = [[],
[2,3,8],
[1,7],
[4,5],
[3,5],
[3,4],
[7],
[6,8],
[1,7]]
while queue:
x = queue.popleft()
for node in graph[x]:
if node not in visited:
queue.append(node)
visited.append(node)
print(visited)
3. 주의할 점
- BFS는 재귀로 동작하지 않는다.
- 시작점에 방문했다는 표시를 남겨야 한다.
- 큐에 넣을 때 방문했다는 표시를 해야지, 큐에서 빼낼 때 방문했다는 표시를 남기면 안된다.
- 이차원 배열인 경우 연결된 원소가 범위에 벗어났는지 체크해야 한다.