【问题标题】:Infinite nodes in BFS vs DFSBFS 与 DFS 中的无限节点
【发布时间】:2022-01-08 19:22:00
【问题描述】:

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

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

【问题讨论】:

标签: algorithm graph-algorithm


【解决方案1】:

在某些情况下,是的。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      相关资源
      最近更新 更多