广度优先搜索(Breadth-First Search,简称 BFS)是一种用于遍历或搜索树或图的算法。它从根节点开始,逐层向四周扩散,访问所有相邻节点,然后依次处理每一层中的节点。在无向图中应用该算法可以找到任意两个节点间的最短路径。
BFS 通常使用一个队列来存储待访问的节点,并维护一个集合或数组记录已访问过的节点。遍历过程如下:
以下是使用 Python 实现的广度优先搜索算法:
from collections import deque
def bfs(graph, start):
visited = set()
queue = deque([start])
while queue:
node = queue.popleft()
if node not in visited:
print(f'Visit: {node}')
visited.add(node)
for neighbor in graph[node]:
if neighbor not in visited:
queue.append(neighbor)
# 示例图
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}
# 从节点 A 开始进行广度优先搜索
bfs(graph, 'A')
广度优先搜索算法在许多实际问题中非常有用,如社交网络中的好友推荐、最短路径查找等场景都有其应用价值。
通过上述介绍和示例代码,可以了解如何实现并应用无向图的广度优先搜索算法。