图的广度优先遍历算法
时间: 2023-11-27 11:46:24 浏览: 77
掌握图的两种遍历算法深度优先搜索和广度优先搜索算.docx
以下是图的广度优先遍历算法的Python实现:
```python
from collections import deque
def bfs(graph, start):
visited = set() # 用集合记录已经访问过的节点
queue = deque([start]) # 用双端队列记录待访问的节点
while queue:
vertex = queue.popleft() # 取出队列中最左边的节点
if vertex not in visited:
visited.add(vertex) # 将该节点标记为已访问
queue.extend(graph[vertex] - visited) # 将该节点的未访问过的邻居节点加入队列
return visited
```
其中,`graph`是一个字典,表示图的邻接表,`start`是遍历的起始节点。该算法使用了队列来记录待访问的节点,使用了集合来记录已经访问过的节点,从而避免了重复访问。
阅读全文