在DFS和BFS的实现中,CLRS作者区分了每个顶点的3种颜色--灰色、黑色和白色。我知道黑白表示节点是否被访问。为什么我们需要灰色?
我的猜测是检测周期,但我们也能检测出只有黑白(即w/o灰色)的周期吗?
发布于 2016-09-20 13:04:40
主要原因是为了帮助读者更好地理解这个概念。但是有一些算法实际上利用了灰节点。例如,为了在有向图中查找循环,您需要灰色节点,因为有黑色邻居并不表示循环,而只有灰色邻居创建循环。
A->B, B->C, A->C
A->C
没有创建一个循环,尽管C
是黑色的。
https://stackoverflow.com/questions/39603549
复制