BFS 与 DFS 中的无限节点

Infinite nodes in BFS vs DFS

人们总是在谈论如果向下有无限个节点,那么 DFS 将在遍历这个无限长的分支时卡住,永远无法在另一个分支中找到答案。

这不也适用于 BFS 吗?例如,如果根节点有无限多的邻居,程序不会花费无限多的时间尝试将每个邻居添加到队列中吗?

在某些情况下,是的。

但是,为了拥有一个无限图,您基本上需要一个隐式图,https://en.wikipedia.org/wiki/Implicit_graph 并且其中许多具有可避免该问题的有界度。

此外,BFS 相对于 DFS 的另一个优势是,具有较少顶点的路径通常在某些方面“更好”——并且通过使用 Djikstra 等算法制定的顶点成本,[=17] =]一些个案例甚至可以扩展到无限度。

是的,你是对的,在第二种情况下,BFS 不会有任何实际进展。对于这种理论上的无限场景,让我们讨论所有三种可能的情况:

  1. 如果图有无限个向下的节点和有限个邻居,那么 我们应该使用 BFS(你已经解释了原因)
  2. 但是如果图向下有无限个邻居和有限个节点, 那么我们应该在进行 DFS 搜索时像本例一样使用 DFS 每个邻居我们都可以搜索到它是完整的 在有限时间内找到路径,然后移动到下一个邻居。在这里,BFS 在搜索时不会获得任何实际进展。
  3. 如果图有无限个邻居和无限个向下的节点,那么当我们处理无穷时,DFS和BFS将抓住差异在两端。