宽度优先搜索(BFS)是一种按层级遍历图或树的算法,核心步骤包括初始化队列、逐层访问节点并标记已访问状态,确保找到最短路径。 其高效性体现在系统性的层级扩展,适用性覆盖最短路径问题、网络爬虫等场景,关键操作依赖队列的先进先出特性。
-
初始化队列与起始节点
将起始节点放入队列,并标记为已访问。队列确保节点按层级顺序处理,避免重复访问。例如,搜索社交网络中某用户的三度人脉时,队列首元素即目标用户。 -
循环处理队列节点
每次从队列头部取出一个节点,检查是否为目标(如匹配条件或终点)。若匹配则终止;否则遍历其所有未访问邻接节点,加入队列尾部并标记为已访问。例如,迷宫问题中每次扩展当前点的上下左右可通行点。 -
层级扩展与距离记录
通过维护距离数组或哈希表,记录每个节点到起点的边数(层级)。每扩展一层,距离值递增,最终得到最短路径。例如,路由器寻址时记录跳数。 -
终止条件与结果输出
当队列为空或找到目标时终止。若队列空未找到目标,则无解;否则反向追踪父节点指针输出路径。例如,推荐算法中遍历用户关系链至指定深度。
提示:BFS需注意图是否有环,可通过访问标记避免死循环;稀疏图建议使用邻接表存储以节省空间。