Approximations- und Online-Algorithmen Departement Informatik Dr. Hans-Joachim Böckenhauer Dr. Dennis Komm http://www.ita.inf.ethz.ch/appron17 Lösungsvorschläge – Blatt 1 Zürich, 01. März 2017 Lösung zu Aufgabe 1 (a) Die gesuchte schwere Eingabeinstanz kann analog zum schweren Beispiel für den Christofides-Algorithmus konstruiert werden, das in der Vorlesung vorgestellt wurde (im Buch in Abbildung 4.15 direkt nach Theorem 4.3.5.5). Ein möglicher Lauf des Greedy-Algorithmus kann in der in Abbildung 4.15 (a) dargestellten Instanz einen Hamiltonpfad von v1 nach v2t erzeugen, was ihn zwingt, mit der Kante {v2t , v1 } den Kreis zu schliessen (siehe Abbildung 4.15 (d)). Dementsprechend ergibt sich auch hier eine Approximationsgüte von (3t − 1)/(2t), was für grosse t gegen 1.5 geht. (b) Wir zeigen, dass der Greedy-Algorithmus auf der Klasse von gewichteten vollständigen Graphen Fi mit i ≥ 1 eine Hamilton-Tour berechnet, die um einen Faktor von ≥ 10 · (i + 1) länger ist als die optimale Tour. Weil der Graph Fi insgesamt 63 ni = 3 · (2i − 1) Knoten hat (was sich durch eine einfache Induktion beweisen lässt), ergibt sich damit die behauptete logarithmische Approximationsgüte. Im Folgenden bezeichne ai den in der Abbildung am weitesten links stehenden Knoten von Fi , bi den mittleren Knoten von Fi und ci den am weitesten rechts stehenden Knoten von Fi . Die Abbildung (a) zeigt den Graphen F1 , die Abbildung (b) zeigt die rekursive Konstruktion von Fi+1 . Alle nicht eingezeichneten Kanten haben den maximalen bzgl. der Dreiecksungleichung zulässigen Wert. F1 11 a1 Fi+1 10 10 · 2i Fi0 Fi 10 b1 (a) 11 c1 ai ai+1 10 · 2i bi ci 10 11 10 a0i bi+1 (b) b0i c0i ci+1 40 20 20 20 10 11 40 10 10 11 10 11 10 11 20 10 10 11 10 a3 11 10 11 10 10 11 10 11 10 11 10 c3 b3 (c) 40 20 40 20 20 10 10 10 10 10 20 10 10 10 a3 10 10 10 10 10 10 c3 b3 (d) Die Abbildung (c) zeigt als Beispiel den Graphen F3 , und in Abbildung (d) ist die Hamilton-Tour gezeigt, die der Greedy-Algorithmus konstruiert, wenn er mit dem Knoten a3 startet. Die Kosten copt einer optimalen Lösung sind kleiner oder gleich den Kosten der Lösung, die von links nach rechts von ai bis zu ci verläuft und dann mit einer zusätzlichen Kante von ci nach ai zurückkehrt. Damit gilt ni − 1 · 21 2 = 21 · (3 · (2i − 1) − 1) copt ≤ 2 · = 21 · (3 · 2i − 4) = 63 · 2i − 84 Wir bestimmen jetzt die Kosten cgreedy der Greedy-Lösung. Die Greedy-Lösung verwendet auf ihrem Weg von ai nach bi alle eingezeichneten Kanten vom Gewicht 6= 11. Jeder Graph Fi enthält genau zwei (eingezeichnete) Kanten vom Gewicht 10 · 2i−1 . Da Fi rekursiv aus 2i−j Graphen Fj zusammengesetzt ist, enthält Fi somit genau 2 · 2i−j (eingezeichnete) Kanten vom Gewicht 10 · 2j−1 für alle 2 ≤ j ≤ i. Damit berechnet sich das Gesamtgewicht aller (eingezeichneten) Kanten mit einem Gewicht ≥ 20 in Fi als 10 · (i − 1) · 2i . Somit bleibt das Gesamtgewicht der Kanten in Fi mit einem Gewicht von 10 zu bestimmen. Eine einfache Induktion zeigt, dass es in Fi genau 2i+1 − 2 Kanten vom Gewicht 10 gibt. Damit benötigt die Greedy-Lösung für ihren Weg von ai nach bi Kosten von 10 · ((i − 1) · 2i + 2i+1 − 2) = 10 · ((i + 1) · 2i − 2). Die Kante von bi zurück nach ai hat ein Gewicht von ni−1 − 1 · 21 + 21 = 21 · (3 · 2i−2 − 1). 2 Somit folgt cgreedy = 10 · ((i + 1) · 2i − 2) + 21 · (3 · 2i−2 − 1) = 10 · (i + 1) · 2i − 20 + 63 · 2i−2 − 21 41 = 10 · (i + 1) · 2i + 63 · (2i−2 − ). 63 Damit ergibt sich für alle i ≥ 1: 10 · (i + 1) · 2i + 63 · (2i−2 − cgreedy ≥ copt 63 · 2i − 84 10 · (i + 1) · 2i ≥ 63 · 2i − 84 10 · (i + 1) · 2i ≥ 63 · 2i 10 · (i + 1) = 63 41 ) 63 Lösung zu Aufgabe 2 Für jedes ungerade n konstruieren wir den folgenden Graphen G = (V, E) mit n Knoten. Zunächst erstellen wir einen Stern mit n − 1 Strahlen, deren Kanten jeweils Kosten von 1 besitzen. Wir bezeichnen den mittleren Knoten mit z und die Blätter mit v0 bis vn−2 , wobei die Nummerierung im Uhrzeigersinn erfolgt. Nun fügen wir alle Kanten {vi , vi+1 mod (n−1) } für 0 ≤ i ≤ n − 2 ein und geben ihnen ebenfalls Kosten 1 (Abbildung (a)). Um G abschliessend zu vervollständigen, fügen wir alle fehlenden Kanten hinzu und setzen ihre Kosten auf 2. Offensichtlich erfüllt ein Graph, in dem alle Kanten entweder Kosten 1 oder 2 haben, die Dreiecksungleichung. v7 v6 v5 v0 v1 z v4 v2 v3 (a) (c) (b) (d) Eine optimale Lösung in G mit Kosten n ist gegeben durch den Hamiltonkreis z, v0 , v1 , . . . , vn−2 , z (Abbildung (b)). Es ist klar, dass keine Lösung mit geringeren Kosten existieren kann, da hier nur Kanten mit Kosten von jeweils 1 verwendet werden und es in G keine Kanten mit einem geringeren Gewicht gibt. Betrachten wir nun eine mögliche Lösung, die der vorgestellte Spannbaum-Algorithmus berechnen kann. Zunächst konstruiert er einen minimalen Spannbaum in G. Wir sehen sofort, dass es keinen eindeutigen gibt und jeder solche Baum Kosten von n − 1 besitzt. Ein billigster Spannbaum T ist beispielsweise durch den Stern gegeben, den wir zu Beginn konstruiert haben, und wir dürfen annehmen, dass dieser berechnet wird. Anschliessend werden die Kanten von T verdoppelt, wodurch eine Eulertour auf T entsteht (Abbildung (c)). Diese wird nun zu einem Hamiltonkreis verkürzt, indem, von einem beliebigen Knoten aus startend, eine Tiefensuche in T durchgeführt wird und bereits besuchte Knoten übersprungen werden. Die wichtige Beobachtung ist nun, dass es einen möglichen Verlauf dieser Tiefensuche gibt, sodass alle verwendeten Kanten bis auf zwei Kosten von 2 besitzen. Nehmen wir an, der Algorithmus für die Tiefensuche startet beim Knoten z (den er als Wurzel interpretiert), und besucht anschliessend den Knoten v0 , der in T ein Blatt ist. Somit geht er zurück zu z und fährt mit seiner Tiefensuche fort. Angenommen, der nächste besuchte Knoten ist v2 . Da v2 ebenfalls ein Blatt ist, geht er wieder zurück zu z. Der Algorithmus fährt mit der Tiefensuche fort, bis er alle Knoten mindestens einmal besucht hat. Nehmen wir an, die restlichen Knoten werden in der Reihenfolge v4 , v6 , v1 , v3 , v5 , v7 gefunden. Die Eulertour auf T , die sich dadurch ergibt, ist also z, v0 , z, v2 , z, v4 , z, . . .. Um den Hamiltonkreis zu berechnen, werden alle schon einmal besuchten Knoten ausgelassen, also ergibt sich: z, v0 , v2 , v4 , v6 , v1 , v3 , v5 , v7 , z (Abbildung (d)). Die Gesamtkosten dieser Lösung belaufen sich also auf 2(n − 2) + 2, und somit finden wir für jede Konstante ε > 0 ein n0 , sodass für alle n > n0 gilt, dass 2(n − 1)/n > 2 − ε. Zuletzt stellen wir noch fest, dass wir für jede konkrete Strategie, die der SpannbaumAlgorithmus (dieser ist deterministisch) verfolgt, die Knoten v0 , . . . vn−2 so permutieren können, dass garantiert eine Lösung mit obiger Approximationsgüte gefunden wird (unter der Voraussetzung, dass der Algorithmus mit dem Stern als Spannbaum startet). Diese Voraussetzung ist wichtig, da der Graph andere minimale Spannbäume besitzt, die zu einer besseren Güte führen. Eigentlich reicht es uns zu wissen, dass unter allen minimalen Spannbäumen, die der Algorithmus wählen könnte, einer existiert, der zu einer Approximationsgüte von 2 − ε führt. Allerdings kann man sogar erzwingen, dass der einzige minimale Spannbaum in G der Stern ist, indem man die Kantengewichte etwas 1 anders wählt als zuvor: Sei ε0 = n−1 . Allen Kanten, die zum Stern gehören, geben wir 0 das Gewicht 1 − ε . Die Kanten {vi , vi+1 mod (n−1) } bekommen das Gewicht 1. Um die Dreiecksungleichung zu erhalten, müssen wir nun allen restlichen Kanten die Kosten 2(1 − ε0 ) geben. Somit ist der minimale Spannbaum eindeutig: Der Stern ist der einzige Spannbaum mit Kosten (1 − ε0 )(n − 1) = n − 2, alle anderen Spannbäume von G haben grössere Kosten. Der Algorithmus kann nun wie oben schon beschrieben den Hamiltonkreis z, v0 , v2 , v4 , v6 , v1 , v3 , v5 , v7 , z berechnen. Mit den neuen Kantengewichten hat dieser Kosten von 2(1 − ε0 ) + (n − 2) · 2(1 − ε0 ) = 2(1 − ε0 )(n − 1), während die optimale Tour Kosten 1 2 · (1 − ε0 ) + n − 2 = n − 2ε0 hat. Wenn wir wie oben gewählt ε0 = n−1 einsetzen, ergibt sich als Approximationsgüte: 2(1 − ε0 )(n − 1) 2(n − 2) 4 > = 2 − . n − 2ε0 n n Wenn wir nun n0 = 4ε setzen, gilt also für jede Konstante ε > 0 und alle n > n0 , dass die 4 Approximationsgüte des Spannbaum-Algorithmus mindestens 2 − n4 > 2 − 4/ε = 2 − ε ist.