너비 우선 탐색 BFS
(Breath First Search)
: 탐색 노드로부터 제일 가까운 노드부터 탐색하는 알고리즘이다. 또한, 가까운 노드부터 우선 순위를 가져야 하기 때문에, 후입 선출 방식인 Queue를 사용하여 구현 할 수 있다.
두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 이 방법을 선택한다.
ex) 지구상에 존재하는 모든 친구 관계를 그래프로 표현한 후 Ash와 Vanessa 사이에 존재하는 경로를 찾는 경우
깊이 우선 탐색의 경우 모든 친구 관계를 다 살펴봐야 할지도 모르지만, 너비 우선 탐색의 경우 Ash와 가까운 관계부터 탐색
def bfs(graph, start_node):
visit = list()
queue = list()
queue.append(start_node)
while queue:
node = queue.pop(0)
if node not in visit:
visit.append(node)
queue.extend(graph[node])
return visit