Gerichtete Graphen und Darstellung03 DFS

Definition

Reihenfolge, die alle Abhängigkeiten erfüllt. z.B. richtige Reihenfolge beim Anziehen. Ordnet man Knoten nach dieser Reihenfolge an, so zeigen alle Kanten von links nach rechts.

Wenn eine Kante von Knoten u zu Knoten v zeigt, muss u vor v stehen.

Topologische Reihenfolge ist nicht immer möglich, Gegenbeispiel gerichteter Zyklus. Hier hat jeder Knoten einen Nachfolger, kann nicht enden.

Topologisch Sortieren

  • finde Senke v durch den Path-Algorithmus
  • setze v an letzte Stelle
  • entferne v und löse Rest rekursiv (finde neue Senke nachdem v entfernt wurde, etc.)

Path-Algorithmus, Version 1

Vorlesung

  Path(u):
	  markiere Knoten u
	  if ∃ Nachfolger v, unmarkiert
		  Path(v)
  • Path(u) markiert Pfad P mit Start u
  • Endknoten v von P hat alle Nachfolger markiert, v ist Senke, wenn gerichteter Zyklus
  • Von unten nach oben ablesen (immer die gefundene Senken werden ja ganz hinten hingestellt)

Ineffizient, da “wiederholtes Laufen”, besser: Pfad wiederverwenden so weit wie möglich.

Version 2, DFS