🎉 广度优先搜索(BFS)详解

广度优先搜索(Breadth-First Search,简称 BFS)是一种经典的图遍历算法,常用于寻找最短路径或树的层级结构。以下是核心内容:

📘 基本概念

BFS 从起点出发,逐层扩展,先访问所有相邻节点,再访问它们的相邻节点,以此类推。

  • 特点:确保找到最短路径(无权图中)
  • 适用场景:社交网络好友推荐、网站爬虫、迷宫求解等

🧠 算法步骤

  1. 初始化一个队列,将起始节点入队
  2. 标记起始节点为已访问
  3. 循环处理队列:
    • 出队一个节点,检查其邻接节点
    • 未访问的邻接节点入队并标记
  4. 重复直到队列为空

💡 应用案例

  • 网页爬虫:按层级抓取网页内容
  • 游戏地图:探索最短移动步骤
  • 网络路由:计算数据包传输路径

📁 代码示例(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')  

📌 扩展阅读

想了解更多?可查看 深度优先搜索教程

广度优先搜索流程图
BFS代码示例