18.09.2013 Aufrufe

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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:

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!