在 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
不会创建循环。
在 DFS 和 BFS 的实现中,CLRS 作者为每个顶点区分了 3 种颜色——灰色、黑色和白色。我知道黑色和白色表示是否访问了节点。为什么我们需要灰色?
我的猜测是检测循环,但我们是否也可以检测只有黑白(即 w/o 灰色)的循环?
主要是为了帮助 reader 更好地理解这个概念。但是有一些算法实际上使用了 grey 节点。例如,要在有向图中查找循环,您需要 grey 节点,因为具有 black 邻居并不表示循环,只有 灰色 邻居创造循环。
A->B, B->C, A->C
尽管 C
是黑色,A->C
不会创建循环。