Departement Informatik Approximations- und Online-Algorithmen Dr. Hans-Joachim Böckenhauer Dr. Dennis Komm http://www.ita.inf.ethz.ch/appron17 Lösungsvorschläge – Blatt 4 Zürich, 22. März 2017 Lösung zu Aufgabe 6 (a) Für jedes i = 1, . . . , n betrachten wir die Menge TRIPLEi , in der FPKP ausgewählte Lösungen für die Teilinstanz Ii := (b, w1 , . . . , wi ) mit den ersten i Gegenständen speichert. Wir zeigen, dass sich zu jeder Lösungen T dieser Teilinstanz eine Lösung T 0 in TRIPLEi findet, deren Gesamtgewicht höchstens iδ kleiner ist, aber sicher nicht grösser: Induktionsbehauptung: ∀T ∈ M(Ii ) ∃(c, w, T 0 ) ∈ TRIPLEi : 0 ≤ cost(T ) − cost(T 0 ) ≤ iδ Die Induktion zeigt für i = n also insbesondere, dass zu jeder optimalen Lösung Topt 0 der vollständigen Instanz In eine Lösung Topt in TRIPLEn gespeichert ist, deren Gewicht um höchstens nδ von der optimalen Lösung abweicht. Und FPKP wählt am Ende unter den in TRIPLEn gespeicherten Lösungen eine bestmögliche, somit ist die Aussage gezeigt. Induktionsverankerung: Die Induktionsverankerung ist trivial: Auf der Teilinstanz (b, w1 ) kommen nur zwei Lösungen in Betracht, die in Schritt 1 beide in TRIPLE1 abgespeichert werden. Induktionsschritt: Wir beweisen jetzt den Induktionsschritt von i − 1 zu i. Wir zeigen zuerst: ∀T ∈ M(Ii ) ∃(c, w, T 0 ) ∈ SETi : 0 ≤ cost(T ) − cost(T 0 ) ≤ (i − 1)δ Wegen SETi ⊇ TRIPLEi folgt aus der Induktionsvoraussetzung direkt: ∀T ∈ M(Ii−1 ) ∃(c, w, T 0 ) ∈ TRIPLEi−1 : 0 ≤ cost(T ) − cost(T 0 ) ≤ (i − 1)δ Wir müssen also nur noch zeigen, dass auch für jede neuen Lösungen T ∈ M(Ii ) \ M(Ii−1 ) eine Lösung T 0 ∈ SETi mit 0 ≤ cost(T ) − cost(T 0 ) ≤ iδ existiert. Diese neuen Lösungen entstehen durch Hinzufügen von i zu einer bisherigen Lösung T . Dies ist genau dann möglich, wenn T ∪ {i} die Kapazität b nicht überschreitet, sei also cost(T ∪ {i}) ≤ b. Zu T ist in TRIPLEi−1 bereits eine Lösung T 0 gespeichert, die 0 ≤ cost(T ) − cost(T 0 ) ≤ (i − 1)δ erfüllt, also kleineres Gewicht hat. Somit überschreitet auch T 0 ∪ {i} die Kapazität nicht cost(T 0 ∪ {i}) ≤ b, und wird somit von FPKP in SETi gespeichert. Dann gilt 0 ≤ cost(T ∪ {i}) − cost(T 0 ∪ {i}) = cost(T ) − cost(T 0 ) ≤ iδ, wir haben also ein T 0 gefunden, dass die Bedingung erfüllt. Damit ist wie gewünscht ∀T ∈ M(Ii ) ∃(c, w, T 0 ) ∈ SETi : 0 ≤ cost(T ) − cost(T 0 ) ≤ (i − 1)δ bewiesen und es folgt ∀T ∈ M(Ii ) ∃(c, w, T 0 ) ∈ TRIPLEi : 0 ≤ cost(T ) − cost(T 0 ) ≤ iδ, weil FPKP zu jeder Lösung in SETi mindestens eine nach TRIPLEi übernimmt, deren Gewicht gleich oder höchstens δ kleiner ist. (b) Aus (a) folgt sofort, dass die Distanz der berechneten von der optimalen Lösung höchstens nδ ist. Weil wi ≤ b für 1 ≤ i ≤ n gilt, können wir zusätzlich die Abschätzung cost(Opt(I)) ≥ v verwenden und erhalten cost(Opt(I)) cost(Opt(I)) nδ nδ ≤ =1+ ≤1+ , cost(FPKP(I)) cost(Opt(I)) − nδ cost(Opt(I)) − nδ v − nδ also muss gelten nδ ≤ ε, v − nδ und daraus folgt schliesslich δ≤ εv . n(1 + ε) (c) Die Laufzeit des Algorithmus hängt im Wesentlichen vonlderm Anzahl Teillösungen ab, die gespeichert werden müssen. Dies sind höchstens nv viele. In jeder der n δ Iterationen der dynamischen Programmierung muss jede der bisher gespeicherten Teillösungen mit den kleineren Teillösungen verglichen werden. Damit ergibt sich insgesamt eine Laufzeit von nv O n· δ 2 ! ! n3 v 2 , =O δ2 und unsere Abschätzung aus (b) liefert n3 v 2 O δ2 ! n3 v 2 n2 (1 + ε)2 ⊆O ε2 v 2 ! ! n5 (1 + ε)2 =O . ε2 (bitte wenden) Lösung zu Aufgabe 7 (a) Sei U ∈ N PO ein Optimierungsproblem, bei dem für alle Probleminstanzen x alle möglichen Lösungswerte nur positive ganze Zahlen sein können und die Kosten cost(Opt(x)) der optimalen Lösung durch ein Polynom p über den beiden Variablen |x| und Max-Int(x) beschränkt sind. Es gelte für die Schwellenwertsprache Lang U , dass sie stark N P-schwer ist. Wir wollen zeigen, dass kein FPTAS für U existieren kann, wenn P 6= N P. Aus der Vorlesung wissen wir, dass es für kein Optimierungsproblem U mit einer stark N P-schweren Schwellenwertsprache Lang U einen Pseudo-Polynomzeit-Algorithmus geben kann. Beweis durch Widerspruch: Wir wollen zeigen, dass, wenn für das Problem U ein FPTAS A existiert, auch ein Pseudo-Polynomzeit-Algorithmus A0 für U existiert. Sei A ein FPTAS für U . Es existiert der folgende Algorithmus A0 . 1 . Gegeben ist die Eingabeinstanz x, sei ε = p(|x|, Max-Int(x)) + 1 Man wendet nun A auf x und ε an, um eine Lösung für x zu bekommen in einer Zeit, die polynomiell in |x| und 1/ε = p(|x|, Max-Int(x)) + 1 ist. Falls U ein Maximierungsproblem ist, gilt für die berechnete Lösung A0 (x): |cost(A0 (x)) − cost(Opt(x))| = cost(Opt(x)) − cost(A0 (x)) ≤ (1 + ε) cost(A0 (x)) − cost(A0 (x)) ≤ ε cost(Opt(x)) cost(Opt(x)) = . p(|x|, Max-Int(x)) + 1 Dabei haben wir verwendet, dass A ein Approximationsschema ist und daher cost(Opt(x)) ≤ (1+ε) cost(A0 (x)) gilt. Da ausserdem cost(Opt(x)) ≤ p(|x|, Max-Int(x)) ist, können wir nun folgern, dass |cost(A0 (x)) − cost(Opt(x))| < 1. Falls U ein Minimierungsproblem ist, können wir analog zeigen, dass |cost(A0 (x)) − cost(Opt(x))| = cost(A0 (x)) − cost(Opt(x)) < 1. Da aber alle möglichen Lösungswerte positive ganze Zahlen sind, muss in beiden Fällen die approximative Lösung optimal sein. Es folgt cost(A0 (x)) = cost(Opt(x)). Damit ist A0 (x) ein Pseudo-Polynomzeit-Algorithmus für U . Das ist ein direkter Widerspruch zur Annahme, dass Lang U stark N P-schwer ist. (b) Betrachten wir das TSP auf einem Graphen mit n Knoten und Kantenkosten 1 und 2 (das N P-schwer ist, wie wir aus der Vorlesung wissen) und addieren n! auf alle Kantenkosten. Daraus resultiert also ein Graph als Eingabe mit Kantenkosten n! + 1 und n! + 2. Das so definierte Problem ist noch immer N P-schwer, da es genauso schwer wie im ursprünglichen Problem ist, eine optimale Lösung zu finden. Die Kosten jeder Lösung (auch der optimalen) sind nun stets zwischen n · n! + n und n · n! + 2n, und die Approximationsgüte RAlg eines beliebigen Algorithmus Alg ist immer beschränkt durch n · n! + 2n 1 1 ≤ RAlg ≤ ≤1+ . n · n! + n n! Für ε ≥ n!1 hat jeder zulässige Algorithmus die geforderte Approximationsgüte, insbesondere auch der Greedy-Algorithmus, der in Polynomzeit bezüglich n arbeitet. Für jedes ε < n!1 können wir wiederum einen Algorithmus Alg mit der geforderten Approximationsgüte konstruieren, der einfach alle Knotenpermutationen ausprobiert, um einen billigsten Hamiltonkreis zu finden; dies kann mit einer Zeitkomplexität in O(n!) getan werden und somit gilt TimeAlg (n, ε−1 ) ≤ p(n, ε−1 ) für ein Polynom p. Es folgt, dass die Approximationsgüte von Alg sogar 1 ist und der Algorithmus ferner eine Laufzeit besitzt, die polynomiell in n und ε−1 ist. Somit ist Alg ein FPTAS für die vorgestellte TSP-Version.