2.宽度优先搜索(BFS):
-
一般用队列实现:BFS通常使用队列来实现,通过维护一个队列来保存待处理的节点。起始时,将起始节点放入队列中,然后依次处理队列中的节点,将它们的邻居节点加入队列中,直到队列为空。
-
空间复杂度O():在最坏的情况下,BFS需要存储整个图的节点,因此空间复杂度为O(),其中N是图中节点的数量。这是因为在BFS的过程中,每一层都会将更多的节点加入队列中,因此队列的大小会随着层数的增加指数级增长。
-
具有最短性(边权为1时):BFS在图的遍历中具有最短性的特点,特别适用于求解最短路径或者找到最近的节点。当图中的边权都为1时,BFS能够保证最先到达目标节点的路径是最短路径,因为它按层次逐步扩展,首次到达目标节点的路径长度必然最短。
-
BFS通常用于解决以下问题:
- 图的遍历:通过BFS可以访问图中的所有节点,并且可以按照层级顺序进行遍历。
- 最短路径问题:BFS可以用于求解两个节点之间的最短路径,因为在遍历过程中,首次访问到目标节点时,路径长度就是最短的。
- 连通性问题:BFS可以判断图中两个节点之间是否存在路径连通,即是否可以从一个节点到达另一个 简单例子如下: