宽度优先搜索模板代码
时间: 2024-11-21 19:20:33 浏览: 20
宽度优先搜索(Breadth-First Search,简称BFS),是一种用于图遍历的数据结构算法,通常用于寻找两个节点之间的最短路径。以下是使用Python实现的宽度优先搜索的一个基本模板:
```python
from collections import deque
def bfs(graph, start):
# 使用队列保存待访问的节点
queue = deque([start])
visited = set() # 记录已访问过的节点
while queue:
node = queue.popleft() # 取出队首节点
if node not in visited:
visited.add(node) # 标记为已访问
# 添加当前节点的所有邻居到队列,注意这里需要检查边的存在
for neighbor in graph[node]:
if neighbor not in visited:
queue.append(neighbor)
return visited # 返回所有可达节点集合
# 示例用法
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []
}
print(bfs(graph, 'A')) # 输出:['A', 'B', 'C', 'D', 'E', 'F']
```
在这个模板中,`graph`是一个表示图的字典,其中键是节点名,值是一列表示相邻节点的列表。`bfs`函数从给定的起始节点`start`开始,通过广度优先的方式探索整个图。
阅读全文