Podczas wykonywania DFS, dowolny węzeł znajduje się w jednym z trzech stanów - przed odwiedzeniem, podczas rekurencyjnego odwiedzania swoich potomków i po odwiedzeniu wszystkich potomków (powrót do jego rodzica, tj. Faza podsumowania). Trzy kolory odpowiadają każdemu z trzech stanów. Jednym z powodów wymienienia kolorów oraz czasu wizyty i powrotu jest wyraźne dokonanie tych rozróżnień dla lepszego zrozumienia.
Oczywiście istnieją rzeczywiste zastosowania tych kolorów. Rozważmy skierowaną wykres . Załóżmy, że chcesz sprawdzić G pod kątem istnienia cykli. Na niekierowanym wykresie, jeśli rozważany węzeł ma czarnego lub szarego sąsiada, oznacza to cykl (i DFS nie odwiedza go, jak wspomniałeś). Jednak w przypadku wykresu skierowanego czarny sąsiad nie oznacza cyklu. Na przykład, należy rozważyć wykres z 3 - wierzchołki A , B , i C , z skierowanych krawędziach jak A → B , B → C , A → C . Załóżmy, że DFS zaczyna się od AsolsolA , B ,doA → BB → CA → CZA, Następnie wizyty , następnie C . Po powrocie do A sprawdza, czy C był już odwiedzany i czy jest czarny. Ale na wykresie nie ma cyklu.bdoZAdo
Na wykresie ukierunkowanym cykl występuje tylko wtedy, gdy węzeł jest ponownie widziany przed odwiedzeniem wszystkich jego potomków. Innymi słowy, jeśli węzeł ma sąsiada, który jest szary, wówczas występuje cykl (a nie gdy sąsiad jest czarny). Szary węzeł oznacza, że obecnie badamy jego potomków - a jeśli jeden z takich potomków ma przewagę do tego szarego węzła, wtedy jest cykl. Tak więc, aby wykryć cykl na ukierunkowanych wykresach, musisz mieć 3 kolory. Mogą być też inne przykłady, ale powinieneś o tym pomyśleć.