【问题标题】:Why do I need "VISITING" state for nodes when performing a Breadth First Search?为什么在执行广度优先搜索时节点需要“访问”状态?
【发布时间】:2012-07-19 08:52:32
【问题描述】:

我编写了一个用于在图表中搜索的算法,并使用一个标志来指示是否访问了一个节点,这样我就不会陷入循环,以防我的图表中有一个圆圈。

我后来检查了一本算法书,它使用了 3 个状态而不是 2 个,第 3 个是“访问”状态。我想知道为什么它在那里,因为我可以在没有它的情况下执行搜索?

【问题讨论】:

    标签: algorithm graph breadth-first-search


    【解决方案1】:

    “访问”状态没有多大意义 - 每个节点仅在您处理其邻居并将它们排入队列时才会处于此状态 - 而且您非常清楚当时正在访问哪个节点。

    有意义(但仍然不需要)是“排队”状态,例如此动画中的灰色节点(来自维基百科)

    【讨论】:

      【解决方案2】:

      这不是严格需要的,但是一些使用 BFS 作为基本构建块的算法使用这些信息,因此额外的状态。

      我想从教育的角度来看这也是一个好处,因为插图可以更好地理解正在发生的事情。

      【讨论】:

      • 我知道其他算法使用BFS。所以这种状态没有其他原因。
      • 如果你不使用它,你就不需要它。你读过的算法真的用过吗?
      • 是的,它使用了它,但它声明“事实上[...]即使我们不区分灰色和黑色顶点,我们也会得到相同的结果。”灰色表示“访问”黑色表示“访问”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      相关资源
      最近更新 更多