Approximationsalgorithmen Approximationsschemata 27 Betrachte die relative Abweichung ε als Input-Wert. Definition: Maximierung Ein Algorithmus A ist ein ε–Approximationsschema, wenn A für jedes ε ∈ (0, 1) ein (1 − ε)–Approximationsalgorithmus ist. Minimierung analog. Natürlich wächst die Laufzeit i.A. mit sinkendem ε. Definition: Ein Approximationsschema A ist ein Polynomiales Approximationsschema (PTAS), wenn die Laufzeit von A polynomial in der Länge der Instanz ist. Definition: Ein Approximationsschema A ist ein Voll-Polynomiales Approximationsschema (FPTAS), wenn die Laufzeit von A polynomial in der Länge der Instanz und in 1/ε ist. analog: asymptotisches PTAS und asymptotisches FPTAS. Approximationsalgorithmen Approximationsschemata 28 (PTAS): Konstruktionsprinzip beschränkte Enumeration. Grundidee: Wähle ein geeignetes Unterproblem der Größe k Löse das Unterproblem optimal durch vollständige Enumeration Erweitere die Lösung zu einer Gesamtlösung Multi-Prozessor Scheduling: Approximationsschema (Graham) Algorithmus Scheduling-PTAS: Sortiere die jobs in absteigender Reihenfolge p1 ≥ p2 ≥ . . . ≥ pn (∗) wähle Parameter k bestimme die optimale Anordnung der jobs 1, . . . , k führe (LPT) für die restlichen jobs aus. Approximationsalgorithmen Approximationsschemata 29 Scheduling-PTAS hat eine Gütegarantie von 1 + m−1 k . Für gegebenes ε wähle k := (m − 1)/ε =⇒ ε–Approximationsschema Laufzeit: Optimallösung für k jobs durch Enumeration in O(mk ) Zeit. Gesamtzeit: O(mm/ε + n log n) =⇒ PTAS m wird als konstant betrachtet. Approximationsalgorithmen Approximationsschemata 30 (PTAS) für das Rucksackproblem (KP): Idee: (Sahni ’75) wähle einen Parameter ` “rate” die ` items mit größtem Profit in Optimallösung fülle die Restkapazität mit Greedy. “raten” =⇒ alle Teilmengen mit ` items durchprobieren Gütegarantie: `+1 A≥ Opt `+2 wähle ` := d 1ε e−2 =⇒ (1−ε)–Approximationsalgorithmus. Approximationsalgorithmen Approximationsschemata 31 Laufzeit: n ` Teilmengen mit ` Elementen =⇒ O(n`) viele Greedy Iterationen =⇒ O(n`+1) Verbesserung: (Caprara et al.’00) Systematisches Enumerieren der Teilmengen: n`−1 Iterationen mit jeweils n Teilmengen mit sinkenden Kapazitäten =⇒ Greedy kann in O(n) für jede Iteration alle n Lösungen bestimmen. =⇒ Gesamtzeit O(n`) Zeit O(n) O(n log n) O(n2) O(n3) O(n4) . . . O(n`) Sahni ’75 1/2 1/2 1/2 2/3 3/4 . . . `−1 ` `+1 ∗ verbess. 1/2 2/3 3/4 4/5 5/6 . . . `+2 Approximationsalgorithmen Approximationsschemata 32 (FPTAS): Konstruktionsprinzip Skalierung. Grundidee: 1. Dynamisches Programmieren liefert die Optimallösung in pseudopolynomialer Zeit. 2. Skalieren der Eingabewerte eliminiert die Eingabedaten aus der Laufzeit-Komplexität Beachte: Skalieren entspricht einer Klasseneinteilung in Intervalle Alle Werte eines Intervalls werden gleichgesetzt (FPTAS) für das Rucksackproblem (KP): 1. Dynamisches Programmieren nach Profiten Definiere array y: y(p) enthält das minimale Gewicht einer Teilmenge von items mit Gesamtprofit p. Optimallösung: z ∗ := max {p | y(p) ≤ c} yj (p): Einschränkung auf item Menge {1, . . . , j} Approximationsalgorithmen Approximationsschemata 33 Rekursive Berechnung durch Einfügen von item j + 1: yj+1(p) := min{yj (p), yj (p − pj+1) + wj+1} . Dynamisches Programmieren nach Profiten: Bestimme obere Schranke P ≥ z ∗ for p := 0 to P do y(p) := c + 1 dummy Initialisierung for j := 0 to n − 1 do for p := P down to pj+1 do versuche item j + 1 zu packen if y(p − pj+1) + wj+1 < y(p) then y(p) := y(p − pj+1) + wj+1 z ∗ := max {p | y(p) ≤ c} Approximationsalgorithmen Approximationsschemata 34 Pseudopolynomialer Algorithmus Laufzeit: O(nP ) Speicher: O(nP ) Beachte die notwendige Manipulation der item-Mengen! Adaptieren des Dynamischen Programmieren: Ziel: Ersetzen von P durch n, 1/ε. Wähle eine Konstante K und skaliere den Profit-Bereich: p i p̃i := K Dynamisches Programmieren mit den skalierten ProfitWerten für K = ε pmax/n liefert ein FPTAS. Laufzeit: P̃ ≤ n p̃max pmax n pmax n2 ≤n =n = K ε pmax ε Zeit und Speicher: O(n3/ε) (Ibarra, Kim’75) Approximationsalgorithmen Komplexitätstheorie 35 Vereinfachte Komplexitätstheorie: Definition: Für eine Instanz I eines Problems P ist L(I): Anzahl der Eingabewerte M ax(I): Betrag des größten Eingabewertes Länge der Instanz: O(L(I) · log(M ax(I))) Definition: Ein Algorithmus A für das Problem P ist polynomial, wenn seine Laufzeit für jede Instanz I ein Polynom in L(I) und log(M ax(I)) ist. Ein Algorithmus A für P ist pseudopolynomial, wenn seine Laufzeit für jede Instanz I ein Polynom in L(I) und M ax(I) ist. Korollar: Wenn M ax(I) ein Polynom in L(I) ist, dann ist jeder pseudopolynomiale Algorithmus bereits ein polynomialer Algorithmus. Korollar: Wenn M ax(I) ein Polynom in L(I) ist und P ein N P-schweres Problem ist, dann gibt es keinen pseudopolynomialen Algorithmus für P (unter P6=N P). Approximationsalgorithmen Komplexitätstheorie 36 Betrachte das Unterproblem Ppoly von P , welches nur jene Instanzen I enthält, für die M ax(I) ein Polynom in L(I) ist. Definition: Wenn Ppoly N P-vollständig ist, so nennt man P streng N P-vollständig. Satz: Wenn P streng N P-vollständig ist, dann gibt es keinen pseudopolynomialen Algorithmus für P (unter P6=N P). Satz: Wenn Opt(I) ein Polynom in L(I) und M ax(I) ist, dann gilt: Wenn es ein FPTAS für P gibt, dann gibt es auch einen pseudopolynomialen Algorithmus für P . Korollar: Wenn Opt(I) ein Polynom in L(I) und M ax(I) ist, dann gilt: Wenn P streng N P-vollständig ist, dann gibt es kein FPTAS für P (unter P6=N P). Approximationsalgorithmen Komplexitätstheorie 37 Satz: (für Minimierung) Ist für ein Problem P bereits das Entscheidungsproblem: “Gibt es einen zulässige Lösung mit Wert ≤ k ? ” N P-schwer, dann folgt: Es gibt keinen polynomialen Approximationsalgorithmus mit Gütegarantie < 1 + 1/k. (=⇒ es gibt kein PTAS.) Beachte: Multi-Prozessor Scheduling ist streng N P-vollständig =⇒ kein FPTAS Es gibt ein PTAS, aber kein asymptotisches FPTAS. Bin-Packing ist streng N P-vollständig =⇒ kein FPTAS Es gibt keine Approximation besser als 3/2, also kein PTAS. Trotzdem gibt es ein asymptotisches PTAS !! Fernandez de la Vega, Luecker (1981), und sogar ein asymptotisches FPTAS Karmakar, Karp (1982) Approximationsalgorithmen Komplexitätstheorie 38 Komplexitätshierarchie: in absteigender Reihenfolge der Schwierigkeit: Optimierungsprobleme in N P: Die Zulässigkeit einer möglichen Lösung kann in polynomialer Zeit überprüft werden. APX: Es gibt einen polynomialen Approximationsalgorithmus mit konstanter Gütegarantie k. MAX-SNP: konstante Gütegarantie existiert, aber das Erreichen einer gewissen Güte 1+δ ist N P-schwer. PTAS: Beliebige Gütegarantie 1 + ε ist erreichbar in einer Zeit polynomial in der Länge der Instanz. FPTAS: Beliebige Gütegarantie 1+ε ist erreichbar in einer Zeit polynomial in der Länge der Instanz und in 1/ε. Optimierungsprobleme in P: Optimallösung kann in polynomialer Zeit berechnet werden. Neueres Konzept: Probabilistically Checkable Proofs: PCP-Theorem Approximationsalgorithmen Vertex Cover 39 Vertex Cover Problem Algorithmus Greedy 1: Cover C := ∅ while E 6= ∅ do wähle eine beliebige Kante e = (v, u) ∈ E C := C ∪ {v} E := E \ {e | e ist inzident zu v} end while Greedy 1 hat eine Gütegarantie von Ω(log n). Verbesserung: Algorithmus Greedy 2: Cover C := ∅ while E 6= ∅ do wähle den Knoten v ∈ V mit maximalem Grad im aktuellen Graphen G C := C ∪ {v} E := E \ {e | e ist inzident zu v} end while Greedy 2 hat eine Gütegarantie von O(log n). Approximationsalgorithmen Vertex Cover 40 Verwendung eines Maximalen Matchings (MM): Algorithmus MM-Heuristik: Bestimme ein maximales Matching M ⊆ E for all e = (v, u) ∈ M C := C ∪ {v, u} Satz: MM-Heuristik liefert ein Vertex Cover des Graphen. Satz: MM-Heuristik hat eine scharfe Gütegarantie von 2. Verwendung eines Depth First Search Trees (DFS): (Savage, 1982) Algorithmus DFS-Heuristik: Bestimme depth-first-search Suchbaum T auf G C := {v | dT (v) ≥ 2} d.h. C = alle Nicht-Blätter von T Satz: DFS-Heuristik hat eine scharfe Gütegarantie von 2. Approximationsalgorithmen Vertex Cover 41 Verwendung von Randomisierung (systematische Zufallsentscheidung): Algorithmus Rand-Greedy 1: Cover C := ∅ while E 6= ∅ do wähle eine beliebige Kante e = (v, u) ∈ E mit P = 0.5 (fairer Münzwurf) wähle entweder C := C ∪ {v} oder C := C ∪ {u} E := E \ {e | e ist inzident zu dem gewähltem Knoten} end while Satz: Rand-Greedy 1 hat eine erwartete Gütegarantie von 2. Approximationsalgorithmen Weighted Vertex Cover 42 Weighted Vertex Cover Problem gegeben: Graph (V, E) mit Knotengewichten w(v) ∀v ∈ V . Problem: Finde eine Knotenmenge C ⊆ V mit minimalem Gewicht, sodaß für jede Kante (i, j) entweder i ∈ C oder j ∈ C. Algorithmus W-Greedy 2: Cover C := ∅ while E 6= ∅ do wähle den Knoten v ∈ V mit maximalem Grad(v) w(v) im aktuellen Graphen G C := C ∪ {v} E := E \ {e | e ist inzident zu v} end while W-Greedy 2 hat eine Gütegarantie von O(log n). (Chvatal 1979) Weighted Vertex Cover 43 Approximationsalgorithmen Algorithmus W-Rand-Greedy: Cover C := ∅ while E 6= ∅ do wähle eine beliebige Kante e = (v, u) ∈ E w(v) w(u)+w(v) w(u) w(u)+w(v) wähle mit P = C := C ∪ {u} bzw. mit P = C := C ∪ {v} E := E \ {e | e ist inzident zu dem gewähltem Knoten} end while Satz: (Pitt 1985) W-Rand-Greedy hat eine erwartete Gütegarantie von 2. Weighted Vertex Cover 44 Approximationsalgorithmen Formulierung als lineares ganzzahliges Programm (ILP): (Nemhauser, Trotter 1975) minimiere n X wi xi i=1 unter xi + xj ≥ 1 ∀(i, j) ∈ E xi ∈ {0, 1}, i = 1, . . . , n. xi = 1 ⇐⇒ Knoten i ist in Cover enthalten. Satz: Das lineare Programm (LP) für Vertex Cover mit xi ∈ [0, 1] hat die semi-integral Eigenschaft, d.h. in der Optimallösung sind alle Variablen 0, 1/2 oder 1. Die Lösung des linearen Programms (LP) kann effizient berechnet werden. Das Aufrunden der Lösung des linearen Programms (LP) liefert einen Approximationsalgorithmus mit Gütegarantie 2. Approximationsalgorithmen Weighted Vertex Cover 45 Modifizierte Version von W-Greedy 2: Algorithmus Clarkson: Cover C := ∅ while E 6= ∅ do wähle den Knoten v ∈ V mit maximalem Grad(v) w(v) im aktuellen Graphen G (d.h. mit minimalem C := C ∪ {v} for all edges e = (v, u) w(v) w(u) := w(u) − Grad (v) w(v) ) Grad(v) w(v) cost(e) := Grad (v) (nur für Analyse) lösche e end for w(v) := 0 (nur für Analyse) end while Satz: (Clarkson 1983) Der Algorithmus hat eine Gütegarantie von 2. Approximationsalgorithmen Set Cover 46 Set Cover Problem Darstellung mit Hypergraph H = (V, E), wobei e ∈ E eine Hyperkante mit e ⊆ V ist. Jedes Subset Si entspricht einem Knoten vi ∈ V , jede Hyperkante einem Element der Grundmenge. Die Hyperkante ist inzident zu allen Knoten/Subsets, in denen das entsprechende Element enhalten ist. Verallgemeinerung von Vertex Cover (für jede Hyperkante ist mindestens ein Knoten in Cover enthalten) entspricht einem Set Cover. Notation: Es ist d der maximale Grad eines Knoten in H, d.h. die Anzahl der Elemente im größten Subset. Es ist f die Anzahl der Knoten in der größten Hyperkante, gegeben durch das Element, das in den meisten Subsets enthalten ist. Set Cover 47 Approximationsalgorithmen Formulierung als lineares ganzzahliges Programm (ILP): minimiere n X wi xi i=1 unter X xi ≥ 1 ∀ej ∈ E i∈ej xi ∈ {0, 1}, i = 1, . . . , n. xi = 1 ⇐⇒ Knoten i, also Subset Si, wird ausgewählt. Algorithmus LP-Rundung: Löse des (LP) zu (ILP) mit Lösung x∗ Set Cover S := ∅ for all Si if x∗i ≥ 1/f then S := S ∪ {i} end for LP-Rundung hat eine Gütegarantie von f . Approximationsalgorithmen Set Cover 48 Greedy (für den ungewichteten Fall) Algorithmus Greedy: Cover C := ∅ while E 6= ∅ do wähle den Knoten v ∈ V mit maximalem Grad im aktuellen Hypergraphen H C := C ∪ {v} E := E \ {e | v ∈ e} end while Satz: (Lovasz 1975) Greedy hat eine Gütegarantie von O(log d). Der analoge Algorithmus für den gewichteten Fall hat ebenfalls eine Gütegarantie von O(log d). (Chvatal 1979) Satz: (Feige 1996) Es gibt keinen polynomiale Approximationsalgorithmus mit Gütegarantie (1 − ε) log(d) (unter P6= N P).