什么是广度优先搜索
时间: 2023-12-08 20:37:40 浏览: 28
广度优先搜索(Breadth-First-Search)是一种图遍历算法,它从图的某个顶点开始遍历,先访问该顶点,然后依次访问该顶点的所有邻接点,再依次访问每个邻接点的邻接点,直到遍历完整个图。在遍历过程中,每个顶点只被访问一次,且按照距离顶点的距离逐层遍历,因此也称为“宽度优先搜索”。
下面是一个简单的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) # 将节点标记为已访问
print(vertex) # 访问节点
queue.extend(graph[vertex] - visited) # 将未访问的邻居节点加入队列
# 示例图
graph = {'A': set(['B', 'C']),
'B': set(['A', 'D', 'E']),
'C': set(['A', 'F']),
'D': set(['B']),
'E': set(['B', 'F']),
'F': set(['C', 'E'])}
bfs(graph, 'A') # 从'A'节点开始遍历
```
输出结果为:
```
A
B
C
D
E
F
```