广度优先搜索(Breadth-First Search,简称 BFS)是一种用于图和树数据结构中的基本搜索算法。它从根节点开始,首先访问所有相邻节点,然后对每一个相邻节点进行深度遍历,直到所有节点都被访问过。
广度优先搜索的核心思想是使用一个队列来保存当前要处理的节点。每个节点被访问时,将其所有未被标记为已访问过的邻接节点加入队列中。算法通过不断从队列中取出节点并进行处理(如访问或标记),从而逐步扩展搜索范围。
from collections import deque
def breadth_first_search(graph, start):
visited = set()
queue = deque([start])
while queue:
vertex = queue.popleft()
if vertex not in visited:
print(vertex)
visited.add(vertex)
for neighbor in graph[vertex]:
if neighbor not in visited:
queue.append(neighbor)
# 示例图的表示:邻接表形式
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []
}
breadth_first_search(graph, 'A')
广度优先搜索算法在许多领域都有广泛的应用,比如:
通过理解广度优先搜索算法的工作原理及其应用场景,我们可以更好地利用它解决实际问题中的各种挑战。