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-