MAXKNAPSACK Das Problem Wir haben die Eingabe (s1 , p1 ), . . . , (sn , pn ), B und betrachten das Problem, dass X pi i∈I zu maximieren ist, wobei X si ≤ B i∈I zu erfüllen ist. dynamisches Programmieren Wir gehen MAXKNAPSACK mittels dynamischer Programmierung an; Wir betrachten S(k, p) mit minimalem Gewicht für Prot p aus (s1 , p1 ), . . . , (sn , pn ). O(n, P ), wo P = n X pi i=1 So einen Algorithmus haben wir pseudopolynomiell genannt und benutzen den Algorithmus um einen FPTAS zu konstruieren. 1. Wir wandeln die Eingabe x = (s1 , p1 ), . . . , (sn , pn ), B in x0 = (s1 , p01 ), . . . , (sn , p0n ), B um, wobei p0i = b 2pti c 2. Wir bestimmen mit dem vorherigen Algorithmus eine exakte Lösung I 0∗ für x0 . 3. Benutzen I 0∗ als Lösung für x. Analyse der Güte I ∗ sei eine optimale Lösung für x: X A(x) = w(I 0∗ ) = pi i∈I 0∗ ≥ 2t X p0i i∈I 0∗ | {z } OP T (x0 ) = 2t X i∈I ∗ pi b tc 2 |{z} p ≥ 2ti −1 ≥ X pi −2t kI ∗ k i∈I∗ | {z } OP T (x) ≥ OP T (x) − 2t n 1 Mult. Appr. Güte OP T (x) A(x) A(x) + 2t n A(x) 2t n = 1+ A(x) 2t n ≤ 1+ OP T (x) − 2t n 1 = 1 + OP T (x) −1 2t n OP T (x) falls >1 2t n ≤ Und es sollte sein, dass OP T (x) 1 −1≥ t 2n 2t n ≤ OP T (x) 1+ OP T (x) ⇒ 2t ≤ 1+ n ⇒ Wobei OP T (x) besser durch etwas anderes abgeschätzt werden sollte. Es reicht also aus, dass Pmax 1+ n wobei pmax = max pi (1) 2t ≤ (2) Dabei wurde o.B.d.A. angeommen, dass OP T (x) ≥ pmax Das ist der Fall, wenn das zugehörige Sj ≤ B . Falls nicht, entfernen wir es bereits am Anfang. Also zum Beispiel pmax t = blog( )c 1+ n erfüllt die beiden Bedingungen. Laufzeitanalyse Wir haben einen Aufwand von O(n ≥ In Schritt 2, also O(n2 p ) 2t |{z} Pn i=1 p0i pmax 2t } | {z ) 1+ n ) max =O(pmax p Woraus sich eine Laufzeit von O(n3 1 ) ergibt. Satz 1. Obiger Algorithmus ist ein FPTAS für MAXKNAPSACK mit Laufzeit 2 O(n3 1 ) Streng NP-vollständig/-schwer Folgendes gelte: • I : sei eine Instanz eines Optimierungs- oder Entscheidungsproblems Π • |I|: Gröÿe der Eingabe, Zahlen binär dargestellt • Anmerkung: Eingabe ist immer Folge von Zahlen • M ax(I): gröÿter Absolutwert dieser Zahlen Wir haben bereits deniert: • polynomielle Laufzeit: polynomiell in |I| • pseudopolynomielle Laufzeit: polynomiell in |I| und M ax(I) Denition 1. auf Eingaben I Für ein Optimierungs- oder Entscheidungsproblem Π, Polynom p sei Πp eingeschränkt mit M ax(I) ≤ p(|I|) Eim Entscheidungsproblem heiÿt streng NP-Vollständig genau dann, wenn es ein Polynom p gibt, so dass Πp NP-vollständig ist. Ein Optimierungsproblem heiÿt streng NP-schwer genau dann, wenn das zugehörige Entscheidungsproblemstreng NP-vollständig ist. Beispiele für streng NP-vollst. Gegenbeispiele • MAXKNAPSACK • SUBSET-SUM • PARTITION Beispiele • TSP • Hamilton-Kreis • Clique • unabhängige Knotenmenge Satz 2. ⇒ 2. 1. Optimierungsproblem falls P 6= N P , Π streng NP-schwer so gibt es keinen pseudopolynomiellen Algorithmus für Π sei ein Optimierungsproblem |I| und M ax(I) ist. so dass für alle Instanzen I OP T (I) Π polynomiell beschränkt in Dann gilt: ∃FPTAS für Π ⇒∃ pseudopolynomieller Alg. für Π Beweis (b) Sei (A )>0 vollst. Approximationsschema für Π. Sei p ein Polynom mit OP T (I) < p(|I|, M ax(I)), dann ist dies ein pseudopolynomieller Algorithmus: 1. := 1 p(|I|,M ax(I)) 2. Wende A an 3 Korrektheit A liefert das Ergebnis: A ≥ (1 − )OP T (I) OP T (I) − A (I) ≤ OP T (I) < 1 p(|I|, M ax(I)) = 1 p(|I|, M ax(I)) ⇒ A (I) = < OP T (I) falls die Lösung ganzzahlig sein sollte. 0.0.1 Komplexitätsklassen Die folgenden Angaben werden bezüglich der Approximierbarkeit gemacht. • ABS: Probleme aus NPO in polynomieller Zeit approximierbar und konstanter additiver Güte • APX: Probleme aus NPO in polynomieller Zeit approximierbar und konstanter multiplikativer Güte • PTAS: Probleme für die ein PTAS existiert • FPTAS: Probleme für die ein FPTAS existiert Legende: 1. TSP 2. MINPLANARB 3. MAXCLIQUE 4. MAXKNAPSACK 5. MINFÄRB 6. MINTSP 7. MINBINPACKING 8. M INm SCHEDULING 4