Bei der Ausführung einer DFS befindet sich ein Knoten in einem von drei Zuständen - vor dem Besuch, während des rekursiven Besuchs seiner Nachkommen und nachdem alle Nachkommen besucht wurden (Rückkehr zu seinem übergeordneten Knoten, dh Nachbearbeitungsphase). Die drei Farben entsprechen jedem der drei Zustände. Einer der Gründe für die Erwähnung von Farben und Zeitpunkt des Besuchs und der Rückkehr besteht darin, diese Unterscheidungen zum besseren Verständnis ausdrücklich vorzunehmen.
Natürlich gibt es tatsächliche Verwendungen dieser Farben. Betrachten wir einen gerichteten Graphen . Angenommen, Sie möchten G auf das Vorhandensein von Zyklen prüfen . Wenn der betreffende Knoten in einem ungerichteten Diagramm einen schwarzen oder grauen Nachbarn hat, zeigt er einen Zyklus an (und das DFS besucht ihn nicht, wie Sie bereits erwähnt haben). Bei einem gerichteten Graphen bedeutet ein schwarzer Nachbar jedoch keinen Zyklus. Betrachten wir zum Beispiel ein Diagramm mit 3 Vertices - A , B , und C , mit gerichteten Kanten als A → B , B → C , A → C . Angenommen, die DFS beginnt bei AGGA,B,CA→BB→CA→CA, Dann Besuche , dann C . Wenn es zu A zurückgekehrt ist , prüft es, ob C bereits besucht wurde und schwarz ist. In der Grafik gibt es jedoch keinen Zyklus.BCAC
In einem gerichteten Graphen ist ein Zyklus nur dann vorhanden, wenn ein Knoten erneut gesehen wird, bevor alle seine Nachkommen besucht wurden. Mit anderen Worten, wenn ein Knoten einen Nachbarn hat, der grau ist, gibt es einen Zyklus (und nicht, wenn der Nachbar schwarz ist). Ein grauer Knoten bedeutet, dass wir derzeit seine Nachkommen untersuchen. Wenn ein solcher Nachkomme eine Kante zu diesem grauen Knoten hat, gibt es einen Zyklus. Für die Zykluserkennung in gerichteten Diagrammen sind 3 Farben erforderlich. Es könnte auch andere Beispiele geben, aber Sie sollten auf die Idee kommen.