在CLRS中实现DFS和BFS实现灰色的目的是什么?

时间:2016-09-20 20:54:28

标签: algorithm graph-algorithm depth-first-search breadth-first-search clrs

在DFS和BFS的实现中,CLRS作者为每个顶点区分3种颜色 - 灰色,黑色和白色。我知道黑色和白色表示节点是否被访问过。为什么我们需要灰色?

我的猜测是检测周期,但我们还能检测出只有黑色和周期的周期。白色(即没有灰色)?

1 个答案:

答案 0 :(得分:5)

主要原因是帮助读者更好地理解这个概念。但是有一些算法实际上使用了灰色节点。例如,为了在有向图中查找周期,您需要灰色节点,因为黑色邻居不指示周期且仅灰色邻居创造周期。

A->B, B->C, A->C
尽管A->C为黑色,

C仍然无法创建周期。