🎉 广度优先搜索(BFS)详解
广度优先搜索(Breadth-First Search,简称 BFS)是一种经典的图遍历算法,常用于寻找最短路径或树的层级结构。以下是核心内容:
📘 基本概念
BFS 从起点出发,逐层扩展,先访问所有相邻节点,再访问它们的相邻节点,以此类推。
- 特点:确保找到最短路径(无权图中)
- 适用场景:社交网络好友推荐、网站爬虫、迷宫求解等
🧠 算法步骤
- 初始化一个队列,将起始节点入队
- 标记起始节点为已访问
- 循环处理队列:
- 出队一个节点,检查其邻接节点
- 未访问的邻接节点入队并标记
- 重复直到队列为空
💡 应用案例
- 网页爬虫:按层级抓取网页内容
- 游戏地图:探索最短移动步骤
- 网络路由:计算数据包传输路径
📁 代码示例(Python)
from collections import deque
def bfs(graph, start):
visited = set()
queue = deque([start])
visited.add(start)
while queue:
node = queue.popleft()
print(node)
for neighbor in graph[node]:
if neighbor not in visited:
visited.add(neighbor)
queue.append(neighbor)
graph = {
'A': ['B', 'C'],
'B': ['A', 'D'],
'C': ['A', 'E'],
'D': ['B', 'F'],
'E': ['C', 'G'],
'F': ['D'],
'G': ['E']
}
bfs(graph, 'A')
📌 扩展阅读
想了解更多?可查看 深度优先搜索教程