BFS はグラフをレベルごとに探索し、ノードのすべての隣接ノードを訪問した後にさらに深く進みます。キューを使用し、重み付けされていないグラフで最短経路(最小エッジ数)を見つけます。
考え方
ソースから開始し、それをエンキューしてから、繰り返しノードをデキューし、訪問していない隣接ノードを訪問してエンキューします。visited セットは再訪問を防ぎます。
例
python
collections deque
():
visited = {start}
queue = deque([start])
order = []
queue:
node = queue.popleft()
order.append(node)
nbr graph[node]:
nbr visited:
visited.add(nbr)
queue.append(nbr)
order
graph = {: [, ], : [], : [], : []}
bfs(graph, )
