VU Algorithmen auf Graphen Wintersemester 2003/2004

Werbung
VU Algorithmen auf Graphen
Wintersemester 2003/2004
Übungsblatt 3, Aufgabe 1
Gruppe D∗
21. Januar 2004
Zeigen Sie an einem Beispiel, dass die Laufzeit des cycle canceling-Algorithmus aus der Vorlesung nur pseudopolynomiell in der Eingabelänge ist.
Definition Pseudopolynomiell
Man nehme einen Algorithmus, der als Eingabe ein Array verlangt (Beispielsweise Bubblesort). Wenn das Feld n Elemente enthält, dann beträgt die Laufzeit
O(n2 ), sie steigt also proportional zur Eingabelänge — der Algorithmus hat
polynomielle Laufzeit.
Ein anderer Algorithmus erwartet als Eingabe eine Zahl n, legt ein Array mit
m Elementen an und führt Bubblesort auf diese Feld aus. Die Laufzeit beträgt
O(n2 ). Die Eingabelänge der Zahl beträgt jedoch nicht O(n), sondern O(log n).
Sei m = log n, die Eingabelänge ist also O(m) und die Laufzeit O((2m )2 ). Der
Algorithmus hat somit nicht polynomielle sondert exponentielle Laufzeit.
Diese Eigenschaft nennt man pseudopolynomiell und tritt auf, wenn die Laufzeit polynomiell abhängig von einer als Parameter übergebenen Zahl ist und
somit tatsächlich exponentielle Laufzeit im Verhältnis zur Eingabelänge hat.
Die Laufzeit des Cycle Canceling Algorithmus ist abhängig vom Wert von
f , der als Parameter übergeben wird. Übersteigt nun das f die anderen Werte,
so ist die Laufzeit pseudopolynomiell.
Vergleich mit Ford-Fulkerson
Wie bereits aus der Vorlesung bekannt, hat der Ford-Fulkerson-Algorithmus eine
pseudopolynomielle Laufzeit, nämlich O(|A| · |f |). Die Inputlänge ist
X
|V | + |A| +
log u(a),
a∈A
wobei
|f | = O
X
u(a) .
a∈A
∗ Andreas
Chwatal, Stefan Farfeleder, Karl Gmeiner
1
Algorithmen auf Graphen Übungsblatt 3 Aufgabe 1
Für den cycle-cancelling-Algorithmus gilt ebenfalls, daß die Laufzeit pseudopolynomiell ist. Das wird durch einen Vergleich der entsprechenden Schleife der
beiden Algorithmen klar.
·
·
·
·
·
Hautpschleife von Ford-Fulkerson
Bestimme s-t-Weg P in Gf {
δ = min{ū(x̄)|ā ∈ P }
x(a) = x(a) + δ
}
Diese Schleife wird maximal |f | mal durchlaufen, ebenso die entsprechende
Schleife im cycle-cancelling-Algorithmus:
·
·
·
·
·
·
·
Hautpschleife von cycle-cancelling
Bestimme s-t-Weg P mit minimalen Kosten in Nx {
= min{min{ū(x̄)|ā ∈ P }, f − |x|}
x(a) = x(a) + , wenn Kante in positiver Richtung
x(a) = x(a) − , wenn Kante in entgegengesetzter Richtung
x(a), sonst.
}
Daraus erkennt man, daß der cycle-cancelling-Algorithmus ebenfalls eine pseudopolynomielle Laufzeit hat.
Da der in der Vorlesung angegebene Algorithmus in den Zeilen (1), (2), (4),
(5), (7), (8) eine Laufzeit von O(|A|) hat, (3) bis (6) O(|V |3 ), die Schleife (2)-(4)
höchstens |A| mal durchlaufen wird und die Schleife (5)-(8) höchstens f mal,
ergibt sich für den cycle-cancelling-Algorithmus eine Gesamtlaufzeit von
O (|A| + f ) · |V |3 .
Beispiel
Hier ein Beispiel, das veranschaulicht, dass der Cycle-Cancelling-Algorithmus
nur pseudopolynomiell ist. In Abbildung 1 sieht man den Originalgraphen und
den dazugehörigen Residualgraphen N0 . Da es im keine Kreise mit negativen
Kosten gibt, passiert im ersten Teil des Algorithmus’ nichts.
Abbildung 1: Originalgraph und N0
Es gibt drei verschiedene s-t-Wege mit Kosten 2, der genommene ist rot
markiert. Wegen der oberen Schranke der mittleren Kante kann der Fluss nur um
1 augmentiert werden. Die nächsten beiden Schritte sieht man in Abbildung 2.
-2-
Algorithmen auf Graphen Übungsblatt 3 Aufgabe 1
Abbildung 2: N1 und N2
Wie man leicht sieht, wird der Fluss pro Iteration nur um 1 erhöht, obwohl
der Weg über die mittlere Kante ein kürzestester s-t-Weg ist. Die zweite Schleife
des Algorithmus’ wird bis zu 2u mal ausgeführt (da 2u der Maximalfluss ist),
liegt also in pseudopolynomieller Zeit in Bezug auf die Problemgröße.
-3-
Herunterladen