Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
176 KAPITEL 6. KOMPLEXITÄT VON ALGORITHMEN<br />
Satz 2. Jedes Match<strong>in</strong>g, für das es ke<strong>in</strong>en erweiternden Weg gibt, ist maximal.<br />
Beweis. Mit anderen Worten sollen wir für jedes Match<strong>in</strong>g M zeigen, dass, falls es<br />
e<strong>in</strong> größeres Match<strong>in</strong>g M ∗ gibt, M e<strong>in</strong>en erweiternden Weg hat.<br />
Sei G der Graph, dessen Knoten die Knoten von G s<strong>in</strong>d und dessen Kanten alle<br />
Kanten <strong>in</strong><br />
(M − M ∗ ) ∪ (M ∗ − M)<br />
s<strong>in</strong>d, d.h. alle Kanten, die <strong>in</strong> genau e<strong>in</strong>em der Match<strong>in</strong>gs M und M ∗ liegen. Jeder<br />
Knoten von G liegt auf höchstens zwei Kanten. Das bedeutet, dass G e<strong>in</strong>e disjunkte<br />
Vere<strong>in</strong>igung von Zyklen und (maximalen) Wegen ist. Da sich <strong>in</strong> jedem Zyklus die<br />
Kanten von M und M ∗ abwechseln, gilt: <strong>in</strong> jedem Zyklus ist die Zahl von Kanten<br />
aus M gleich der Zahl der Kanten aus M ∗ . Andererseits hat G mehr Kanten aus M ∗<br />
als aus M, da M ∗ mehr Elemente als M enthält. Es gibt also e<strong>in</strong>en maximalen Weg<br />
W <strong>in</strong> G, auf dem mehr Kanten aus M ∗ als aus M liegen. Das bedeutet, dass beide<br />
Endkanten von W <strong>in</strong> M ∗ liegen. Da der Weg W maximal ist, s<strong>in</strong>d se<strong>in</strong>e Endknoten<br />
frei im Match<strong>in</strong>g M. Also ist W e<strong>in</strong> erweiternder Weg für M.<br />
Algorithmus für MAXIMALES MATCHING<br />
E<strong>in</strong>gabe: Ungerichteter Graph G = (V, E)<br />
Ausgabe: Maximales Match<strong>in</strong>g M ⊆ E<br />
1: Initialisierung M := ∅<br />
2: while e<strong>in</strong> erweiternder Weg W für M existiert do<br />
3: M := M ′ für M ′ aus Satz 1<br />
4: od<br />
Korrektheit: folgt aus Satz 1 und 2. Am Ende des while-Zyklus (der aufgrund von<br />
Satz 1 konvergiert) hat M ke<strong>in</strong>en erweiternden Weg und ist also maximal.<br />
Zeitkomplexität: hängt natürlich von der Zeitkomplexität des Suchen des erweiternden<br />
Weges <strong>in</strong> Zeile 2 ab. Es s<strong>in</strong>d Algorithmen bekannt, die für Graphen mit<br />
n Knoten und k Kanten die Zeitkomplexität O(nk) haben. Dann hat der ganze<br />
Algorithmus oben Zeitkomplexität O(nk).<br />
Beispiel 4 (MAXFLOW). Das Problem MAXIMALES MATCHING ist e<strong>in</strong> Spezialfall<br />
des MAXFLOW Problems: gegeben seien e<strong>in</strong> gerichteter Graph G und zwei<br />
Knoten s (source) und t (target), wir suchen den maximalen Fluß Kanten-disjunkter<br />
Wege von s nach t. (Die Wege dürfen also geme<strong>in</strong>same Knoten haben, aber ke<strong>in</strong>e<br />
geme<strong>in</strong>samen Kanten.) Auch hier wird die Lösung mit Hilfe von erweiternden Wegen<br />
berechnet. Gegeben e<strong>in</strong> Fluß H mit Wegen von s nach t, e<strong>in</strong>e Kante von G<br />
heißt frei, falls sie auf ke<strong>in</strong>em Weg von H liegt. E<strong>in</strong> erweiternder Weg für H ist<br />
e<strong>in</strong>e Liste<br />
s = v0, v1, . . .,vn−1, vn = t<br />
von Knoten von G, so dass für jedes i = 1, . . .,n gilt<br />
• entweder ist (vi−1, vi) e<strong>in</strong>e freie Kante von G, oder<br />
• (vi, vi−1) ist e<strong>in</strong>e unfreie Kante von G.<br />
Wir erweitern H, <strong>in</strong>dem alle freien Kanten (vi−1, vi) unfrei werden und alle unfreien<br />
Kanten (vi, vi−1) frei werden.<br />
Beispiel: Sei G der Graph und H der mit dickeren L<strong>in</strong>ien gekennzeichneter Fluß wie<br />
folgt: