BFS(广度优先搜索)是一种图遍历方法,在简单算法和高级算法中都非常常用。广度优先搜索的工作原理是逐步遍历图形的各个级别,从源节点开始并逐渐远离它。动画中清楚地显示了这一点。
要编写一个简单的 BFS,您需要能够使用队列,这是一种数据结构,可以让您从头到尾获取数据,还能够以以下形式存储图形邻接表。
算法的正式描述
1) 将开始搜索的顶点编号放入最初为空的队列中。
2) 从队列的开头提取顶点 U 并将其标记为在单独的数组中使用。
3) 在队列的末尾,添加我们可以使用从顶点 U 开始的边到达但尚未标记的所有顶点。
4) 如果队列为空,则连通图的所有节点都扫描完毕,否则返回步骤2。
工作难度
由于在最坏的情况下,算法会访问图的所有节点,当以邻接表的形式存储图时,算法的时间复杂度为 O(|V| + |E|),其中 V 是集合图的顶点的集合,E 是边的集合。 ;
换句话说,该算法在边数 + 顶点数的最坏情况下有效。