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

What's the purpose of having Grey color in DFS and BFS implementation in CLRS?

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

我的猜测是检测循环,但我们是否也可以检测只有黑白(即 w/o 灰色)的循环?

主要是为了帮助 reader 更好地理解这个概念。但是有一些算法实际上使用了 grey 节点。例如,要在有向图中查找循环,您需要 grey 节点,因为具有 black 邻居并不表示循环,只有 灰色 邻居创造循环。

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

A->C 不会创建循环。