Ersatz für Vorlesungsmitschrift vom 17.12.2013

Werbung
Ersatz für Vorlesungsmitschrift vom 17.12.2013
Sebastian Stiller
1
Tiefensuche und Topologische Sortierung
Definition 1 Eine Kante (u, v) heisst Rückwärtskante in einer Tiefensuche (DFS), wenn gilt f (u) < f (v).
Satz 1 Ein gerichteter Graph G ist genau dann azyklisch, wenn DFS keine
Rückwärtskanten erzeugt.
Beweis. Sei (u, v) eine RKante. Dann ist v zum Zeitpunkt f (u) entweder
weiss oder grau. Weiss kann nicht auftreten, da sonst v von u aus entdeckt
worden wäre. Also ist u ein Kindeskind von v. Also existiert ein gerichteter
Pfad von v nach u. Also gibt es einen gerichteten Kreis in G.
Sei nun G nicht azyklisch, d.h. der Graph enthält einen gerichteten
Kreis C. Sei a der erste Knoten in C, den DFS entdeckt, und (b, a) eine
Kante in C. Dann sind alle Knoten von C weiss zum Zeitpunkt d(a), also
insbesondere b auf einem gerichteten, weissen Pfad von a aus erreichbar.
Also wird b ein Kindeskind von a und damit f (a) > f (b). Also ist (b, a)
RKante.
Satz 2 Die Finished Zeiten f einer DFS über einem azyklischen, gerichteten
Graphen G ergeben eine topologische Sortierung der Knoten.
Beweis. Es genügt zu zeigen, dass für jede Kante (u, v) gilt f (u) > f (v).
DFS besucht jeden Knoten und durchläuft jeweils die gesamte Adjanzenzliste (zumindest in der IF–white–Abfrage), d.h. DFS betrachtet jede Kante.
Betrachten wir den Schritt in dem die Kante (u, v) betrachtet wird. Die
Farbe von u ist grau. Für die Farbe von v gibt es drei Möglichkeiten:
weiß Dann wird v sofort zum Kind von u und damit f (u) > f (v).
1
grau Dann wäre u ein Kind von v und (u, v) eine RKante, im Widerspruch
zur Vorraussetzung.
schwarz Dann ist f (v) < d(u)(< f (u)).
Bemerkung 1 Enthält G einen gerichteten Kreis, kann es keine topologische Ordnung geben. In der DFS erkennt man einen gerichteten Kreis:
In diesem Fall enthält die Adjanzenzliste mindestens eines Knotens v zum
Zeitpunkt d(v) einen grauen Knoten.
Wir haben konstruktiv folgenden Satz bewiesen:
Satz 3 Ein gerichteter Graph G ist genau dann azyklisch, wenn er eine
topologische Sortierung besitzt.
Es gibt einen alternativen, direkten Weg um dies zu zeigen. Man beweist
dazu zunächst die allgemeinere Aussage des Lemmas von Minty.
Lemma 1 (Minty) Sei G ein gerichteter Graph und e ∈ E(G) eine Kante
darin. Man färbe e schwarz und die übrigen Kanten beliebig in schwarz, rot
und grün. Dann ist genau eine der beiden folgenden Aussagen war.
1. Die Kante e liegt auf einem ungerichteten Kreis ohne grüne Kanten,
in dem alle schwarzen Kanten die gleiche Orientierung haben wie e.
2. Die Kante e liegt auf einem ungerichteten Schnitt ohne rote Kanten,
in dem alle schwarzen Kanten die gleiche Orientierung haben wie e.
Beweis. Sei e = (a, b). Man markiere den Knoten b und danach jeden
Knoten v der von einem markierten Knoten u über eine schwarze Kante
(u, v) oder eine rote Kante (u, v) oder eine rote Kante (v, u) erreichbar ist.
Lässt sich kein Knoten mehr markieren so ist entweder a markiert oder nicht.
1. Wenn a markiert ist, geschah dies entlang eines Kreises mit nur beliebigen roten Kanten und schwarzen Kanten in Richtung von e.
2. Wenn a nicht markiert ist, so bilden die markierten Kanten einen
Schnitt S. Aus diesem Schnitt führen nur grüne Kanten, in den Schnitt
nur grüne und schwarze Kanten. Damit ist das Komplement von S
der Schnitt aus der Behauptung.
2
Es bleibt zu zeigen, dass nicht beides gelten kann. Angenommen es gäbe
einen Kreis C (als Kantenmenge) und einen Schnitt S mit Kantenmenge
δ(S) wie in der Aussage. Deren Schnitt ist nicht leer, da e zu beiden gehört.
Alle Kanten in diesem Schnitt sind schwarz. Daher zeigen sie alle aus S
heraus (oder alle hinein). Damit C ein Kreis ist, muss mindestens eine
seiner Kanten in S hinein (und mindestens eine hinaus) zeigen. Diese kann
nicht rot sein, da der Schnitt keine roten Kanten hat, und kann nicht grün
sein, da der Kreis keine grünen Kanten hat und nicht schwarz sein, da die
schwarzen Kanten auf dem Schnitt alle in die andere Richtung zeigen. 2
Tiefensuche und Starke Zusammenhangskomponenten
Definition 2 Sei G = (V, E) ein gerichteter Graph, dann heisst GT =
(V, E T = {(v, u) : (u, v) ∈ E(G)} der transponierte Graph von G.
Der transponierte Graph ist der gleiche Graph, nur dass alle Kanten
umgedreht sind. Er heisst so, weil seine Adjanzenmatrix die transponierte
zu der von G ist.
Der folgende Algorithmus findet die starken Zusammenhangskomponenten (SKs) eines gerichteten Graphen G.
Algorithmus FINDSC:
1. Führe DFS in G durch.
2. Sortiere die Knoten in G absteigend gemäß der Finished Zeiten f aus
DFS und bilde GT .
3. Führe auf dem so sortierten Graphen GT DFS durch, d.h. führe für
jeden Knoten u absteigend nach f folgendes aus: falls u noch weiss,
rufe VISIT(u) auf.
4. Gib die Bäume der zweiten DFS als die starken Zusammenhangskomponenten aus.
Um die Korrektheit des Algorithmus zu beweisen, zeigen wir zunächst
eine Reihe von Lemmata.
Lemma 2 Seien C 6= C 0 SKs von G mit u, v ∈ C und u0 , v 0 ∈ C 0 . Wenn ein
gerichteter Pfad von u nach u0 existiert, so existiert kein gerichteter Pfad
von v nach v 0 .
3
Beweis. Anderenfalls wären C und C 0 eine gemeinsame SK.
Wir verwenden folgende Notation für nicht leere Teilmengen ∅ =
6 S⊆V
der Knotenmenge: d(S) := minv∈S d(v), f (S) := maxv∈S d(v).
Lemma 3 Seien C 6= C 0 SKs von G mit v ∈ C und v 0 ∈ C 0 . Sei weiter
(v, v 0 ) eine Kante in G. Dann gilt f (C) > f (C 0 ).
Beweis. Wir unterscheiden zwei Fälle:
d(C) < d(C 0 ) Wenn der erste Knoten a in C gefunden wird, sind alle anderen Knoten
b in C und C 0 weiss. Daher gilt f (a) > f (b) für alle b ∈ C ∪ C 0 , d.h.
f (C) > f (C 0 ).
d(C) > d(C 0 ) Sei a ∈ C 0 , so dass f (a) = f (C 0 ). Da C und C 0 getrennte SKs
sind, aber die Kante (v, v 0 ) existiert, kann es keinen Pfad von a zu
irgendeinem Knoten b ∈ C geben. Daher ist d(C) > f (a) und somit
f (C 0 ) < d(C) < f (C).
Selbstverständlich gilt genau das gleiche für die DFS im transponierten
Graphen.
Korollar 1 Seien C 6= C 0 SKs von G mit u ∈ C und v ∈ C 0 . Sei weiter
(u, v) eine Kante in GT . Dann gilt f (C) > f (C 0 ), wobei f die Finished Zeit
in der DFS über GT bezeichnet.
Satz 4 Der Algorithmus FINDSC über einem gerichteten Graphen G gibt
genau dessen SKs zurück.
Beweis.
Die DFS-Bäume sind eine disjunkte Zerlegung der gesamten
Knotenmenge. Also ist zu zeigen, dass jeder von ihnen genau eine SK ist.
Wir beweisen induktiv über die einzelnen Bäume in der Reihenfolge, in der
DFS (in GT mit Ordnung nach f aus DFS für G absteigend) sie findet.
Induktionsannahme.
von G.
Die bisher gefunden Bäume sind je genau eine SK
Induktionsanfang. Die leere Menge. (D.h. wir können nicht benutzen,
dass bereits eine SK gefunden wurde, aber dass alle Bäume die bisher gefunden wurden SKs sind.)
4
Induktionsschluss. Sei a der erste Knoten eines neuen Baumes und C
die SK von a. Zum Zeitpunkt d(a) (von DFS in GT ) sind alle anderen
Knoten in C weiss, da die bisher gefundenen Knoten in anderen SKs liegen
(Induktionsannahme) müssen. Also sind alle b ∈ C Kindeskinder von a. Es
bleibt zu zeigen, dass der von u durch DFS gebildete Baum nicht größer als
C ist.
Sei (u, v) eine Kante in GT mit u ∈ C. Sei C 0 die Komponente von v.
Dann gilt nach dem Korollar 1: f (C) > f (C 0 ). Da also jede ausgehende
Kante von C auf einen Knoten zeigt der bereits schwarz ist, ist der Baum,
den DFS von a aus bildet, genau gleich der SK C.
5
Herunterladen