如《 CLRS》一书中所述,在执行BFS时,如果节点以前是白色的,则我们将其着色为灰色,现在将其插入队列。但是我们从不检查节点是否为灰色。那为什么我们要给节点涂成灰色呢?
我找到了科尔曼本人的答案:https://www.quora.com/Why-do-we-need-to-color-a-node-Grey-in-breadth-first-search-in-addition-to-other-colors-black-and-white
[第594页底部的脚注说明:“我们区分灰色和黑色顶点,以帮助我们了解广度优先搜索的工作方式。实际上,如习题22.2-3所示,即使我们没有区分灰色和黑色顶点。“
所以BFS实际上可以只用白色和黑色完成。灰色被用作帮助我们可视化算法运行方式的工具。