Quando si esegue un DFS, qualsiasi nodo si trova in uno dei tre stati - prima di essere visitato, durante la visita ricorsiva dei suoi discendenti, e dopo che tutti i suoi discendenti sono stati visitati (tornando al suo genitore, cioè alla fase di conclusione). I tre colori corrispondono a ciascuno dei tre stati. Uno dei motivi per menzionare i colori e il tempo di visita e di ritorno è quello di fare esplicitamente queste distinzioni per una migliore comprensione.
Naturalmente, ci sono usi reali di questi colori. Si consideri un grafo orientato . Supponiamo di voler controllare G per l'esistenza di cicli. In un grafico non indirizzato, se il nodo in esame ha un vicino nero o grigio, indica un ciclo (e il DFS non lo visita come menzionato). Tuttavia, nel caso di un grafico diretto , un vicino nero non significa un ciclo. Ad esempio, si consideri un grafico con 3 vertici - A , B , e C , con archi orientati come A → B , B → C , A → C . Supponiamo che il DFS inizi da AGGA,B,CA→BB→CA→CA, Poi le visite , poi C . Quando è tornato ad A , controlla che C sia già stato visitato ed è nero. Ma non c'è ciclo nel grafico.BCAC
In un grafico diretto, è presente un ciclo se e solo se un nodo viene visto di nuovo prima che tutti i suoi discendenti siano stati visitati. In altre parole, se un nodo ha un vicino che è grigio, allora c'è un ciclo (e non quando il vicino è nero). Un nodo grigio significa che attualmente stiamo esplorando i suoi discendenti - e se uno di questi discendenti ha un vantaggio su questo nodo grigio, allora c'è un ciclo. Pertanto, per il rilevamento del ciclo nei grafici diretti, è necessario disporre di 3 colori. Potrebbero esserci anche altri esempi, ma dovresti avere l'idea.