我写了一个用于在图表中搜索的算法,我使用了一个标志来指示一个节点是否被访问过,所以如果我的图表中有一个圆圈,我就不会陷入循环。
我后来检查了一个算法书,它使用3个状态而不是2个,第3个是“访问”状态。我想知道为什么它存在,因为我可以在没有它的情况下进行搜索?
答案 0 :(得分:2)
“访问”状态没有多大意义 - 每个节点只有在你处理它的邻居并将它们排队时才会处于这种状态 - 你完全清楚你当时正在访问哪个节点。 / p>
什么才有意义(但仍然不需要)是一个'排队'状态,例如这个动画中的灰色节点(来自维基百科)
答案 1 :(得分:1)
这不是严格需要的,但是一些使用BFS作为基本构建块的算法使用这个信息,因此是额外的状态。
我想从教育的角度来看,这也是一个好处,因为插图可以更好地了解正在发生的事情。