当广度优先搜索不会终止时,是否存在可能的情况?

时间:2014-08-24 20:44:12

标签: algorithm data-structures breadth-first-search

BFS无法终止时是否存在某种情况? (鉴于分支因子b是有限的)

2 个答案:

答案 0 :(得分:4)

只有无限图的BFS以及搜索没有特定的可达目标。 (你当然可以拥有一个具有有限分支因子的无限图。一个无限高的二叉树就足够了。)

BFS算法按其定义仅查看一个顶点一次,并且每次迭代查看一个顶点。因此,具有任意有限顶点数的图的BFS必须终止。

如果BFS具有可到达的目标T,那么让P成为从源到目标的路径。如果分支因子最多为b,则在P ^ b步骤之后,BFS必须找到T.

修改

我想回想起来,我看到了这个问题的重点。如果BFS用于无限大的定向图上的特定目标节点T,那么即使搜索从T不可访问的节点开始,BFS也将无法终止,即使分支因子是有限。例如,假设您有任何无限大的DAG。然后,作为搜索开始节点的前任的任何节点T都是不可访问的,因此BFS将永远运行而不会找到它。注意,这不会发生在已连接的无向图表上。

答案 1 :(得分:0)

没有。对于有限分支因子和有限步距的目标,BFS将始终终止。

到达那里可能需要指数时间,但它最终会到达那里。

在算法的步骤n,BFS将迭代n跳跃的每个节点。因此,保证在步骤d找到任何有限数d跳跃的节点。

如果步骤d中的每个步骤中存在有限数量的节点,则每个步骤的迭代将终止,并且将找到该节点。

请注意,与DFS不同,BFS在无限图上运行良好。它不适用于无限分支因子或目标无数跳跃。