Al hacer un DFS, cualquier nodo se encuentra en uno de los tres estados: antes de ser visitado, durante la visita recursiva a sus descendientes y después de que todos sus descendientes hayan sido visitados (regresando a su padre, es decir, la fase de cierre). Los tres colores corresponden a cada uno de los tres estados. Una de las razones para mencionar los colores y el momento de la visita y el regreso es hacer explícitamente estas distinciones para una mejor comprensión.
Por supuesto, hay usos reales de estos colores. Considere un grafo dirigido . Suponga que desea verificar G para la existencia de ciclos. En un gráfico no dirigido, si el nodo en consideración tiene un vecino negro o gris, indica un ciclo (y el DFS no lo visita como usted menciona). Sin embargo, en el caso de un gráfico dirigido , un vecino negro no significa un ciclo. Por ejemplo, considere un gráfico con 3 vértices - A , B , y C , con bordes dirigidos como A → B , B → C , A → C . Supongamos que el DFS comienza en AsolsolA , B ,CA → BB → CA → CUN, A continuación, visitas , luego C . Cuando ha regresado a A , verifica que C ya haya sido visitado y que esté negro. Pero no hay ciclo en el gráfico.siCUNC
En un gráfico dirigido, un ciclo está presente si y solo si se vuelve a ver un nodo antes de que todos sus descendientes hayan sido visitados. En otras palabras, si un nodo tiene un vecino que es gris, entonces hay un ciclo (y no cuando el vecino es negro). Un nodo gris significa que actualmente estamos explorando sus descendientes, y si uno de esos descendientes tiene una ventaja sobre este nodo gris, entonces hay un ciclo. Por lo tanto, para la detección de ciclos en gráficos dirigidos, debe tener 3 colores. También podría haber otros ejemplos, pero debes hacerte una idea.