Lorsque vous effectuez un DFS, n'importe quel nœud se trouve dans l'un des trois états - avant d'être visité, lors de la visite récursive de ses descendants et après que tous ses descendants ont été visités (retour à son parent, c'est-à-dire phase de récapitulation). Les trois couleurs correspondent à chacun des trois états. L'une des raisons de mentionner les couleurs et l'heure de la visite et du retour est de faire explicitement ces distinctions pour une meilleure compréhension.
Bien sûr, il existe des utilisations réelles de ces couleurs. Considérons un graphe orienté . Supposons que vous vouliez vérifier G pour l'existence de cycles. Dans un graphique non orienté, si le nœud considéré a un voisin noir ou gris, il indique un cycle (et le DFS ne le visite pas comme vous le mentionnez). Toutefois, en cas d'un dirigé graphique, un voisin noir ne signifie pas un cycle. Par exemple, considérons un graphe avec 3 sommets - A , B , et C , avec des bords dirigés comme A → B , B → C , A → C . Supposons que le DFS commence à AggA , B ,CA → BB → CA → CUNE, Puis visites , puis C . Lorsqu'il est revenu à A , il vérifie alors que C a déjà été visité et qu'il est noir. Mais il n'y a pas de cycle dans le graphique.BCUNEC
Dans un graphe orienté, un cycle est présent si et seulement si un nœud est revu avant que tous ses descendants aient été visités. En d'autres termes, si un nœud a un voisin qui est gris, alors il y a un cycle (et pas quand le voisin est noir). Un nœud gris signifie que nous explorons actuellement ses descendants - et si l'un de ces descendants a un bord avec ce nœud gris, alors il y a un cycle. Ainsi, pour la détection de cycle dans les graphiques dirigés, vous devez avoir 3 couleurs. Il pourrait aussi y avoir d'autres exemples, mais vous devriez avoir l'idée.