3

В реализации DFS и BFS авторы CLRS выделяют 3 цвета для каждой вершины - серого, черного и белого. Я понимаю, что черно-белый означает, был ли узел посещен или нет. Зачем нам серый цвет?Какова цель иметь серый цвет в реализации DFS и BFS в CLRS?

Моя догадка заключается в обнаружении циклов, но можем ли мы также обнаружить циклы только с черным & белым (то есть без серых)?

ответ

5

Основная причина заключается в том, чтобы помочь читателю лучше понять концепцию. Но есть некоторые алгоритмы, которые фактически используют серые узлов. Например, для нахождения циклов в ориентированном графе вам нужно серые узлов с черный сосед не указывает цикл и только серый соседи создают циклы.

A->B, B->C, A->C 

A->C не создает цикл, несмотря на C быть черным.