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