Approximationsalgorithmen von Martin aumüller TU-Ilmenau Vorwort Dieses Dokument enstand in der Vorlesung „Approximationsalgorithmen“ die von Prof. M. Kunde gehalten wurde. Für Fragen, Kritik und Anregungen steht der Autor unter mailto:[email protected] zur Verfügung. 3 Inhaltsverzeichnis Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Inhaltsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1 Einleitung .. .. .. .. .. .. .. ... .. .. .. .. .. .. .. ... .. .. .. .. .. .. ... . 7 1.1 Beispiel „BINPACKING“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Beispiel „MAX3SAT“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3 Beispiel „TSP“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 . .. .. .. ... .. .. .. .. .. .. ... 2 Grundlegende Definitionen und Methoden 2.1 Optimierungsproblem . . . . . . . . . . . . . . . . . . . . 2.2 Absolute Approximation . . . . . . . . . . . . . . . . . . 2.2.1 Graphfärbbarkeit . . . . . . . . . . . . . . . . . . . . 2.2.1.1 Knotenfärbung . . . . . . . . . . . . . . . . . . GREEDYCOL . . . . . . . . . . . . . . . . . . . Planare Graphen . . . . . . . . . . . . . . . . . Algorithmus COLPLAN . . . . . . . . . . . . 2.2.1.2 Kantenfärbung beliebiger Graphen . . . . . Algorithmus Faerbekanten(G) . . . . . . . . . 2.2.2 MAX-2BIN . . . . . . . . . . . . . . . . . . . . . . . Algorithmus PACK(a1, , an , c) . . . . . . . . 2.2.3 „Unmöglichkeit“ einer absoluten Approximations 2.3 Relative Approximation . . . . . . . . . . . . . . . . . . . 2.3.1 Scheduling . . . . . . . . . . . . . . . . . . . . . . . . M-Scheduling . . . . . . . . . . . . . . . . . . . Listenscheduling(Graham) . . . . . . . . . Algorithmus LIST . . . . . . . . . . . . . . . . . Algorithmus LPT (Largest Processing Time) 2.3.2 Das metrische TSP . . . . . . . . . . . . . . . . . . Algorithmus DTREE . . . . . . . . . . . . . . . . Algorithmus CA . . . . . . . . . . . . . . . . . . 2.3.3 „Unmöglichkeit“ der relativen Approximation . . 2.4 Approximationsschemata . . . . . . . . . . . . . . . . . . 2.4.1 Multiprozessorscheduling . . . . . . . . . . . . . . . Algorithmus LPTk . . . . . . . . . . . . . . . . . 2.4.2 Bemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 12 12 13 13 13 13 14 15 15 16 17 18 18 18 18 18 19 20 21 21 22 23 23 23 24 3 Techniken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.1 Die Greedy-Methode . . . . . . . . . . . . . . . . . 3.1.1 Greedy für das Rucksackproblem . . . . . MAXIMUM RUCKSACK . . . . . . . . . . . . Algorithmus GREEDY KNAPSACK(GK) 3.1.2 Independent Set . . . . . . . . . . . . . . . . (MAX) INDEPENDET SET (IS) . . . . . Algorithmus GREEDY-IS (GIS) . . . 3.1.3 Weiteres zum Greedy . . . . . . . . . . . . . 27 27 27 27 29 29 29 31 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 . . . . . . . . . . . . . . . . 6 NEAREST NEIGHBOUR (NN) . . . . . . . . . . . . . . . . . . 3.2 Sequenzierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Partitionierungsprobleme . . . . . . . . . . . . . . . . . . . . . First Fit Decreasing (FFD) . . . . . . . . . . . . . . . 3.2.2 Bemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Lokale Suche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Maximaler Schnitt . . . . . . . . . . . . . . . . . . . . . . . . . . Algorithmus LS-CUT(G) . . . . . . . . . . . . . . . . . . . . 3.3.2 Bemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Lineare Optimierung als Basis . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Runden von Lösungen eines linearen Programmes . . . . . . (MINIMUM) WEIGHTED VERTEXCOVER(WVC) . . . . . . . . Algorithmus ROUNDING WVC . . . . . . . . . . . . . . . . . 3.4.2 Primal-duale Algorithmen . . . . . . . . . . . . . . . . . . . . . Algorithmus Primal-Dual Weighted Vertex Cover . 3.5 Randomisierte Approximationsalgorithmen . . . . . . . . . . . . . Algortihmus Random Weighted Vertex Cover (RVC) 3.6 Dynamische Programmierung . . . . . . . . . . . . . . . . . . . . . . 3.6.1 Ein pseudo-polynomieller Algorithmus für KNAPSACK . . . . Algorithmus RUCKSACK-DP (dynamic programming) . . 3.6.2 Ein FPAS für MAX-KNAPSACK . . . . . . . . . . . . . . . . . . . Algorithmus Approxmations-Schema Knapsack (ASK) Inhaltsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 31 32 33 34 34 35 35 36 36 36 36 37 38 39 39 40 41 41 43 43 Kapitel 1 Einleitung Es gibt in der theoretischen Informatik sehr schwierige Probleme, z.B.: • TSP • CLIQUE • KNAPSACK bzw. die dazugehörigen Optimimierungsvarianten (min TSP, max CLIQUE, BINPACKING). Der Inhalt dieser Probleme sollte bekannt sein und kann, wenn benötigt, in der Literatur nachgelesen werden. Wir wissen, dass unter der Annahme P NP, keines der genannten Probleme einen Lösungsalgorithmus mit polynomieller Laufzeit besitzt! Wir behandeln hier die Möglichkeit, Algorithmen zu finden, die in polynomieller Zeit arbeiten und das Problem wenigstens näherungsweise lösen. Dazu werden Konzepte zur Klassifizierung von Optimierungsproblemen und Approximationsverhalten, Entwurfs- und Analyseprinzipien von Approximationsalgorithmen und Grenzen der (polynomiellen) Approximierbarkeit vorgestellt. 1.1 Beispiel „BINPACKING“ Problem: Packe n Stücke mit Größen a1, , an, 0 6 ai 6 C, in „ziemlich“ wenige Behälter (Bins) der Kapazität C. D.h. der Input ist X = (a1, , an , C). Beispiel 1.1. X = (7, 3, 2, 5, 8, 6, 5, 4, 10) B1 7 3 2 5 ! B2 8 ! B3 ⇒ Unser Algorithmus benötigt 5 Behälter für das Problem - 3 sind nicht gefüllt. 6 4 B4 5 ! B5 Uns interessiert OPT(x), die minimal mögliche Behälteranzahl . Wop (X) = OPT(x) = 4 Unsere Algorithmus ist also nicht optimal, aber sehr nah an der optimalen Lösung. Wir bezeichnen diesen Algorithmus mit SHF (somehow fit) ALGORITHMUS SHF for i=1 to n do begin 1. Packe Stück i in irgendeinen nichtleeren Behälter, falls dies möglich ist. 2. falls ai > Restvolumen in allen begonnen Kisten ⇒ packe i in neuen Behälter end Satz 1.2. Der Algorithmus SHF benutzt weniger als 2 · OPT(X) Behälter. 7 8 Einleitung Beweis. Seien WSHF (X) = k Behälter von SHF benutzt. Seien die Beladungen der Behälter b1, b2, , bk > 0. Es gilt: 1. i j ⇒ bi + b j > C (k > 2), denn sei B j nach Bi gepackt werden und bi + b j 6 C ⇒ Widerspruch zur Beladungsregel. Sonderfall: k = 1 ⇒ OPT(X) = 1 = k ist optimal. Wegen (1.1) gilt: b1 + b2 > C b2 + b3 > C (1.1) bk + b1 > C k X 2 bi > k · C und damit i=1 k X S ,S = bi und damit C i=1 C · OPT(X) = 2 · OPT(X) WSH F (X) = k < 2 · C k < 2· Man sagt dann: „Der Algorithmus SHF hat die Güte 2“. 1.2 Beispiel „MAX3SAT“ Die Eingabe von MAX3SAT ist die 3-KNF-Formel Φ = C1 ∧ ∧ Cr über die Variablenmenge {X1, X2, , Xm }. In Klauseln Ci alle Variablen verschieden. Die Aufgabe besteht nun darin eine Belegung T zu finden für X1, , Xm, so dass möglichst viele C j erfüllt sind, also T (C j ) = 1. Optimaler Algorithmus für 3SAT: OPT(Y ) = r ⇔ Φ ist erfüllbar. Wieder gilt: Falls P NP gibt es keinen Algorithmus mit polynomieller Laufzeit, der die optimale Lösung bestimmt. Ein möglicher Approximationsalgorithmus ist ein randomisierter Algorithmus. 1 Wähle T (Xi) ∈ {0, 1} zufällig (mit PROB(T (Xi) = 1) = 2 ). C j = l j1 ∨ lj2 ∨ lj3, l ji ∈ {X1, X1, , Xm , Xm } 1 PROB(T (C j ) = 0) = PROB(T (l j1) = T (l j2) = T (lj3) = 0) = 8 ⇒ PROB(T (C j ) 1 1) = 8 7 7 ⇒ E(|{j |T (C j ) = 1}|) = 8 r 1.3 Beispiel „TSP“ Wir wandeln das eigentliche Minimierungsproblem in die Problemstellung: „Finde Tour mit nicht zu großer Länge“. Satz 1.3. Falls P NP, dann gibt es für das Problem onsalgorithmus mit endlicher relativen Güte. TSP keinen polynomiellen Approximati- 9 1.3 Beispiel „TSP“ Beweis. Annahme: Es gibt einen polynomiellen Approximationsalgorithmus A für TSP mit endlicher Güte k. O.B.d.A k ∈ N, d.h. es gilt: WA(X) = k · Wop (X) (1.2) Sei G = (V , E) beliebiger ungerichteter Graph. Diesen Graph betrachten wir als Eingabe für das Problem HAMCYCLE(HC). Aus G konstruiere nun folgenden Fall Y für TSP. Dabei V = {1, , n} = C 1 (i, j) ∈ E dij = (k + 1)n sonst Falls WA(Y ) > n, dann muss bei Rundreise mindestens ein dij = (k + 1)n vorgekommen sein. Wegen (1.2) folgt dann: (k + 1)n 6 WA(Y ) 6 k · Wop (Y ) ⇒ Wop > n Falls WA(Y ) 6 n ⇒ WA(Y ) = n = Wop (Y ) G hat Hamiltonischen Kreis ⇔ Wop (Y ) = n ⇔ WA(Y ) = n Wenn ein Wert n ist, dann gibt es keinen Hamiltonischen Offenbar gilt: Kreis. Man kann also in polynomieller Zeit bestimmen, ob es einen Hamiltonischen Kreis gibt. ⇒ P = NP ⇒ Widerspruch. Kapitel 2 Grundlegende Methoden Definitionen und 2.1 Optimierungsproblem Ein kombinatorisches Optimierungsproblem Π ist charakterisiert durch 4 Komponenten: 1. Definitionsbereich D: die Menge der Problemfälle. 2. Lösungen S(I) für I ∈ D: die Menge der zulässigen Lösungen. 3. Bewertungs- oder Maßfunktion W : S(I) → N − {0} 4. Zielfunktion: Minimum oder Maximum finden. Gesucht ist allgemein zu einer Eingabe I ∈ D eine zulässige Lösung σopt ∈ S(I),so dass W (σopt ) = min /max {W (σ)|σ ∈ S(I)} Für eine optimale Lösung schreibt man OPT(I) = Wop (I) = W (σopt ) Π = (D, S , W , ziel) Beispiel 2.1. 1. TSP a. • • • • D = { < Kn , c > |Kn vollständiger Graph über n Knoten, c: E → N Kantenkosten} S( < Kn , c > ) = {C |C = (vi1, , vin , vi1), C ist Hamiltonkreis} P W (C) = c(vin , vi1) + n−1 j=1 c(vi j , vi j +1) min b. • • • • D = { < n, d > |d: {1, , n}2 → N, dij = d(i, j) Entfernung zwischen Städten i und j } S( < n, d > ) = {Π|Π Permutation über {1, , n}} P W (Π) = d(Π(n), Π(1)) + n−1 j =1 d(Π(j), Π(j + 1)) min 2. Rucksack (Knapsack) • • • D = { < a1, , an , c1, , cn , b > |alle Zahlen in N, ai 6 b} P S = { < a1, , an , c1, , cn , b > ) = {J |J ⊆ {1, , n}, i∈J ai 6 b} P W (J) = i∈J ci , J ∈ S(I) 11 12 Grundlegende Definitionen und Methoden • max Dabei ist zu bemerken, dass sich Beschreibungen (verschiedene D) höchstens polynomiell unterscheiden in der Länge. Wir schränken die Bewertungsfunktion durch W (I) > 0 ein. Definition 2.2. Sei Π ein Optimierungsproblem. Ein t(n)-zeitbeschränkter Approximationsalgorithmus ALG berechnet zu jeder Eingabe I ∈ D in Zeit höchstens t(|I |) eine (zulässige) Ausgabe σIALG ∈ S(I) mit Wert W (σIALG ). Dabei ist |I | Länge der Eingabe. Anmerkung 2.3. • ALG(I) = WA LG (I) = W (σIALG ) • optimaler Algorithmus ALG = OPT • t(n) Polynom: ALG heißt ein polynomieller Algorithmus. Warnung 2.4. Oft wird auch ALG(I) = σIALG benutzt. 2.2 Absolute Approximation Definition 2.5. Π sei ein Optimierungsproblem und A ein Approximationsalgorithmus für Π. 1. A hat bei einer Eingabe I eine absolute Güte αA(I) = |A(I) − OPT(I)| 2. Die absolute Güte im schlechtesten Fall (worst-case) von A ist Kwc A (n) = max {αA(I)|I ∈ D, |I | 6 n} 3. KA: N → N. A garantiert eine absolute Güte von KA(n) ⇔ Kwc A (n) 6 KA(n), ∀n. 4. A ist eine absolute Approximation ⇔ ∃k > 0: KA(n) 6 k, ∀n. 2.2.1 Graphfärbbarkeit Sei G = (V , E) ungerichteter Graph, u ∈ V : NG(u) = {v |{u, v} ∈ E } Menge der Nachbarn. Mit degG(u) = |NG(u)| bezeichnen wir den Grad von u und mit ∆(G) = max degG(u) den Grad von G. Definition 2.6. G = (V , E) Knotenfärbung von G ⇔ ∀{u, v} ∈ E: cV (u) cV (v). cE : E → N heißt Kantenfärbung ⇔ für alle an einem Knoten u aufeinandertreffende 1. Eine Abbildung cV : V → N heißt 2. Kanten {u, v }, {u, w} ∈ E: cE ({u, v }) cE ({u, w}), v w. Das Färbungsproblem: • D = { < G > |G ungerichteter Graph, |E | > 1} • S( < G > ) = {cV |cV Kantenfärbung von G} bzw. S ′( < G > ) = {cE |cE Kantenfärbung von G} • W (cV ) = |cV (V )| bzw. W (cE ) = |cE (E)| • min Die Anzahl der minimal benötigten Farben bezeichnet man auch als Chromatische Zahl χ(G). Bemerkung 2.7. Es gibt Graphen mit 1. G, die mindestens ∆(G) + 1 Farben zur Knotenfärbung benötigen (z.B. Kn). 13 2.2 Absolute Approximation 2. G, die mindestens ∆(G) + 1 Farben zur Kantenfärbung benötigen. (z.B. K3) 2.2.1.1 Knotenfärbung GREEDYCOL 1. for i 4 1 to n do cV (ui) = ∞ (alle ungefärbt) 2. for i 4 1 to n do cV (ui) 4 min (N − cV (N (ui))) (d.h., ui bekommt die kleinste freie Farbe 3. • cV (v) = ∞ bedeutet, dass v noch ungefärbt ist • Knoten werden in der Reihenfolge u1, , un eingefärbt. • ui bekommt die kleinste Farbe, die keiner seiner schon gefärbten Nachbarn (aus {u1, , , ui−1}) hat Satz 2.8. GREEDYCOL berechnet in Zeit O(|V | + |E |) eine Knotenfärbung mit 6 ∆(G) + 1 Farben, d.h. GREEDYCOL(G) 6 ∆(G) + 1. Beweis. Laufzeit ist bei entsprechender Implementation leicht erreichbar. Wenn GREEDYCOL beim Knoten ui angekommen ist, dann können nicht alle Farben {1, , deg(ui) + 1} vergeben worden sein, da ui nur deg(ui) Nachbarn hat. Also gibt es eine kleinste freie Farbe für diesen Knoten ui, die ui zugewiesen werden kann. Wegen |E | > 1 gilt OPT(G) > 2. Satz 2.9. GREEDYCOL garantiert eine absolute Güte von αG REEDYC OL (G) 6 ∆(G) − 1. Diese Schranke ist scharf. Planare Graphen G = (V , E) ist planar gdw. man ihn kreuzungsfrei in der Ebene einbetten kann (Beispiel K4). noch das Wikibild einfügen Algorithmus COLPLAN 1. Teste, ob G knoten-2-färbbar ist. 2. Falls nicht: Färbe die Knoten mit maximal sechs Farben Satz 2.10. Für planare Graphen gilt: |COLPLAN(G) − OPT(G)| 6 3 Beweis. OPT(G) = 2 ist leicht feststellbar. Falls nicht, gilt OPT(G) > 3. Satz 2.11. (Sätze über planare Graphen) 1. Jeder planare Graph enthält minddestens einen Knoten v mit deg(v) 6 5. 2. Falls G planar ist, dann ist G ′ = G − {v} planar für beliebige v ∈ V. Konstruktion einer Knotenfolge u1, , un für planare Graphen G = (V , E) mit |V | = n. 1. Sei un ∈ V ein Knoten mit deg(un) 6 5 und Gn = G. 2. Sei für i = n, , 2 Gi−1 = Gi − {ui } und ui−1 ein Knoten in Gi−1 mit degGi−1(ui−1) 6 5. Wende Greedycol auf Knotenfolge u1, , un an. Es muss nun noch gezeigt werden, dass Greedycol höchstens max dGi(ui) + 1 6 5 + 1 Farben (1 6 i 6 n). Dies kann als Übung bewiesen werden. 14 Grundlegende Definitionen und Methoden 2.2.1.2 Kantenfärbung beliebiger Graphen Satz 2.12. (Vizing, 1964) Jeder Graph G benötigt mindestens ∆(G) und höchstens ∆(G) + 1 Farben für eine Kantenfärbung. Der Beweis erfolgt mittels Konstruktion einer Umfärbetechnik. Lemma 2.13. Sei G = (V , E) kantengefärbt mit den Farben {1, , ∆(G) + 1}. u und v seien Knoten mit {u, v} E und deg(u), deg(v) < ∆(G). Dann kann G so umgefärbt werden, dass an u und v dieselbe Farbe fehlt. Eine Farbe c fehlt an Knoten u, wenn keine inzidente Kante zu u mit c gefärbt ist. Beweis. Wir nehmen an deg(u), deg(v) < ∆G. An u möge Farbe s fehlen und an v die Farbe c1 fehlen, die nicht an u fehlt. D.h. es gibt eine Kante {u, v1} mit Farbe c1 (Sei v1 Knoten, der das erfüllt). Wir konstruieren eine Knotenfolge v1, , vn , vi ∈ N (u) und eine Farbenfolge c1, , ch+1 für die gilt: • Kante {u, vi } ist mit ci gefärbt und ci+1 fehlt an vi. Der Algorithmus arbeitet nun wie folgt: 1. i 4 1 2. while es gibt eine mit ci gefärbte Kante {u, x} ∈ E mit x {v1, , vi−1} do a. vi 4 x b. ci+1 4 an ,vi fehlende Farbe c. i 4 i + 1 3. Sei h Anzahl der Schleifendurchläufe, d.h. die Kante {u, vh } wurde als letzte betrachtet. Es ist klar, dass h 6 deg(u) < ∆(G) gilt. (Nachbarn müssen nicht unbedingt alle besucht sein) Der Abbruch der while-Schleife erfolgt bei: 1. Es gibt keine zu u inzidente Kante, die mit ch+1 gefärbt ist. 2. Es gibt eine Kante {u, v j }, j < h, mit c j = cn+1. Im 1. Fall: • Verschiebung der Farben: ◦ Färbe Kante {u, vi } mit ci+1 ◦ Kantefärbungen verschieben sich dadurch (z.B. {u, v3} wird mit c4 gefärbt) ◦ c1 wird dadurch fehlende Farbe an u ◦ (Beachte: höchstens h + 1 + 1 6 ∆(G) − 1 + 1 + 1 = ∆(G) + 1 Farben sind verbraucht) Im 2. Fall ergibt sich: • für Kanten {u, v j −1}, , {u, v1} führen wir eine Verschiebung wie in Fall 1 durch • Kante {u, v j } verliert dabei ihre Farbe c j . • c1 wird fehlende Farbe von u, aber Kante {u, v j } muss noch gefärbt werden. Dazu betrachten wir einen Teilgraphen H(s, ch+1) von G ′ mit E ′ = E − {{u, v j }}, der nur aus Kanten mit den Farben s oder ch+1 besteht. Jeder Knoten in H(s, ch+1) hat höchstens 2 inzidente Kanten. D.h. die Zusammenhangskomponenten von H(s, ch+1) sind höchstens Pfade oder Kreise. Die Knoten u, v j und vh sind höchstens an einer Kante beteiligt, weil an u s fehlt, an vh fehlt per Definition die Farbe ch+1 und an v j fehlt auch ch+1 = c j . D.h. alle 3 Knoten sind Endknoten von Pfaden und können nicht alle in einer Zusammenhangskomponente liegen. 15 2.2 Absolute Approximation Dazu müssen die Kanten, die von v j und vh in H(s, ch+1) wegführen mit s gefärbt sein (falls vorhanden). 1. u und v j liegen in verschiedenen Pfaden 2. u und vh liegen in verschiedenen Pfaden Im Fall 1 vertausche in den Komponenten von v j die Farben s und ch+1. Färbe {u, v j } mit s. Im Fall 2: • Verschiebe wie in Fall 1 auch noch die Farben ch , , cj +1 auf die Kanten {u, vh−1}, , {u, v j }. Damit wird {u, vh } entfärbt. • Verfahre analog zum Fall 1 mit der Komponente vh, d.h. vertausche die Farben s und ch+1 in diesem Pfad • Färbe Kante {u, vh } mit s. Mit ∆(G) + 1 Farben fehlt an jedem Knoten mindestens eine Farbe. Algorithmus Faerbekanten(G) 1. if E = ∅ then return 2. else a. wähle beliebige Kante {u, v} ∈ E b. G ′ 4 G − {{u, v }} (E ′ = E − {{u, v}} c. Faerbekannten(G ′) d. if ∆(G ′) < ∆(G) i. then färbe Kanten {u, v } mit der kleinstmöglichen an u und v fehlenden Farbe aus {1, , ∆(G) + 1} e. else • färbe G ′ gemäß Lemma so um, dass an u und v dieselbe Farbe c fehlt; färbe {u, v} mit c Für den Fall G ′ mit ∆(G ′) = ∆(G) ist durch Wegnahme von {u, v } degG ′(u) = degG(u) − 1 < ∆(G) = ∆(G ′). Entsprechendes gilt für w. Es gilt: ∆(G) 6 #Kantenfarben 6 ∆(G) + 1 Der Maximalwert wird mit einem vollständigen Graphen mit n Knoten erreicht. Satz 2.14. Der Algorithmus FÄRBEKANTEN kann in Zeit O(|V | · |E |) ausgeführt werden und garantiert eine absolute Güte von 1. Das Entscheidungsproblem, ob beliebiger Graph mit ∆(G) Farben Kantengefärbt werden kann, ist NP-vollständig. 2.2.2 MAX-2BIN Das Problem MAX-2BIN ist charakterisiert durch • D = { < a1, , an , c > |0 6 ai 6 c} • S( < a1, , an , c > ) = {I , J |I , J ⊆ {1, , n}, I ∩ J = ∅, • W (I , J) = |I | + |J | • max P i∈I ai 6 c, P j ∈J a j 6 c} 16 Grundlegende Definitionen und Methoden Verbal könnte man das Problem beschreiben mit „Packe in 2 Behälter mit Kapazität c möglichst viele Stücke i (mit Größe ai)“. Algorithmus PACK(a1, , an , c) 1. Sortiere {a1, , an } aufsteigend: a1 6 a2 6 6 an 2. an+1 = c + 1, i = 1 3. for j 4 1 to 2 do a. begin S[j] 4 0 b. while s[j] + ai 6 c do i. begin S[j] 4 S[j] + ai ii. i 4 i + 1 iii. end c. end d. end 4. p 4 i − 1 WPACK (a1, , an , c) = p Satz 2.15. Für das Problem elle) Approximation mit MAX-2BIN ist der Algorithmus PACK eine absolute (polynomi- |WPAC K (F ) − WOPT (F )| 6 1 für alle Fälle F ∈ D Beweis. a1 6 a2 6 6 an sortiert und sei q gegeben durch q X ai 6 2 C und i=1 falls Pn i=1 q+1 X ai > 2 C oder ai 6 2 C, dann q = n. Es gilt: (2.2) q > WOPT (F ) denn angenommen WO PT (F ) > q + 1, dann gilt q < n, also (2.1). Sei j gegeben durch j jX +1 X ai 6 c und ai > c i=1 und falls (2.1) i=1 Pn i=1 Pq+1 i=1 ai 6 2 c, also Widerspruch zu (2.3) i=1 ai 6 c, dann j = n. Falls j = q ⇒ WO PT (F ) 6 q 6 WPACK (F ) ⇒ optimal Falls j = q − 1 ist ⇒ WPACK (F ) > j + 1 = q > WO PT (F ). Falls j 6 q − 2, dann gilt: q X i= j+2 ai 6 2 c − jX +1 ai 6 2 c − c = c (2.4) i=1 P q −1 Pq Wegen ai−1 6 ai gilt i= j +1 ai 6 i= j +2 ai 6 c Unser Algorithmus PACK ordnet Stücke 1, , j dem ersten Behälter zu, und Stücke j + 1, , q − 1 dem zweiten Behälter zu. Daher WPAC K (F ) > q − 1 und mit (2.2) gilt: WOPT (F ) − WPAC K (F ) 6 q − (q − 1) = 1 17 2.2 Absolute Approximation Eine Erweiterung PACK für das entsprechende MAX − k − BIN, k > 3 ist leicht zu entwerfen. Die absolute Güte ist dann k − 1. Satz 2.16. Falls P NP, dann gibt es keinen optimalen Algorithmus mit polynomieller Laufzeit für MAX − 2 − BIN. Beweis. Betrachte F = {a1, , an } ⊆ N, einen beliebigen Fall für Entscheidungsproblem PARTITION. 1P Sei C = 2 ni=1 ai. Falls C N, dann ist Antwort „nein“. Sei C ∈ N, dann betrachte F ′ = < a1, , an , c > als Fall für MAX − 2 − BIN. Sofort sieht man: WOPT (F ′) = n ⇔ F = {a1, , an } hat eine Partitionsmenge, d.h., dass das NP-vollständige Problem PARTITION könnte in polynomieller Zeit gelöst werden, falls es einen polynomiellen optimalen Algorithmus OPT für MAX − 2 − BIN gäbe. Das hätte aber P = NP zur Folge. Widerspruch! 2.2.3 „Unmöglichkeit“ einer absoluten Approximations Problem: 2 − SCHEDULING • • • • D = { < a1, , an > |ai ∈ N} S( < a1, , an > ) = {J |J ⊆ {1, , n}} P P W (J) = max { i∈J ai , i J ai } min Die verbale Interpretation wäre: ai ist die Bearbeitungszeit einer Aufgabe Ti und wir haben 2 Prozessoren. Satz 2.17. Falls P NP, dann gibt es zu keinem k ∈ N einen polynomiellen Algorithmus, der für 2 − SCHEDULING eine absolute Güte von k garantiert. Beweis. Angenommen es existiere ein polynomieller Algorithmus ALG und ein k mit ?? |WOPT (F ) − WALG (F )| 6 k , ∀F ∈ D Sei F = A = {a1, an } ⊆ N ein beliebiger Fall. Konstruiere Ak+1 = {a1(k + 1), , an(k + 1)} Offenbar gilt für ALG mit Eingabe Ak+1 |WALG (Ak+1) − WOPT (Ak+1)| 6 k, c, d ∈ N c(k+1) d(k+1) ⇒ |c − d | · (k + 1) 6 k ⇒ c = d, d.h. WALG (Ak+1) = WOPT (Ak+1) = (k + 1) WOPT (A) ⇒ WOPT (A) kann in polynomieller Zeit bestimmt werden. Offenbar gilt: A ⊂ {a1, , an } P 1P a ), gdw. WOPT (A) = 2 ni=1 ai, d.h. PARTITION hat Partitionsmenge J (mit j ∈J ai = c J i ist in polynomieller Zeit entscheidbar, also P = NP, also Widerspruch zur Annahme, dass P NP. P 18 Grundlegende Definitionen und Methoden 2.3 Relative Approximation Wir haben ein Optimierungsproblem Π gegeben und einen Approximationsalgorithmus A für Π. 1. A hat bei Eingabe von I die relative Güte (Gütequotient) A(I) OPT(I) rA(I) = max , OPT(I) A(I) 2. Die relative Worst-case-Güte von A (Gütequotient im schlechtesten Fall) WC rA (n) = max {rA(I)|I ∈ D, |I | 6 n} 3. RA: N → N A garantiert eine relative Güte von RA(n) gdw. für alle n gilt WC RA (n) = RA(n) 4. A macht bei Eingabe I einen relativen Fehler von |A(I) − OPT(I)| A(I) = − 1 OPT(I) OPT(I) ′ εA (I) = A garantiert einen relativen Fehler von höcshtens εA(n) gdw. für alle I ∈ D mit |I | 6 n gilt: ′ εA (I) 6 εA(n) 5. Für ein reelles S > 1 heißt A eine S-Approximation gdw für alle I ∈ D gilt rA(I) 6 S. 6. f : N → R>0 A ist dann eine f (n)-Approximation gdw WC RA (n) 6 f (n), ∀n Es gilt für ein Minimierungsproblem Π: 1 + εA(n) = RA(n) Für ein Maximierungsproblem Π gilt analog: 1 − εA(n) = Für beide Fälle gilt: 1 RA(n) εA(n) 6 RA(n) − 1 Für das Maximierungsproblem sieht man leicht RA(n) − εA(n) · RA(n) = 1 und mit RA(n) > 1 bedeutet dies: εA(n) 6 RA(n) · εA(n) 6 RA(n) − 1 2.3.1 Scheduling M-Scheduling Gegeben m > 2 Maschinen (identisch) und n > 1 Aufgaben (tasks, jobs) mit Ausführzeiten p1, p2, , pn. Die Aufgabe besteht nun darin, die n Aufgaben so zu verteilen, dass die Gesamtausführzeit möglichst klein wird. Listenscheduling(Graham) Wir haben eine Liste (T1, , Tn). Algorithmus LIST • Zu jedem Zeitpunkt, an dem eine Maschine frei ist oder wird, ordne die nächste Aufgabe aus der Liste dieser Maschine zu 19 2.3 Relative Approximation Satz 2.18. Für den Algorithmus LIST gilt für alle Eingabe I WLIST (I) 6 (2 − 1 ) WOPT (I) m und diese Schranke ist die beste. Beweis. O.B.d.A sei M1 eine Maschine mit größter Ladung nach Zuteilung aller Jobs. C sei die Gesamtlaufzeit aller Aufgaben auf M1 (Gesamtbearbeitungszeit). Sei Tk die letzte M1 zugewiesene Aufgabe. Dann gilt für alle anderen j , 2 6 j 6 m. 1. Die Ladung dieser Maschinen M j > C − pk Daher Pn − pk ) + pk 2. C i=1 pi > m( ? alle M aschinen voll 1 3. Aus WOPT (I) > m Pn i=1 pi und WLIST (I) = C folgt p 4. WOPT (I) > C − pk + mk Wegen WOPT (I) > pk folgt 1 WO PT (I) > WLIST (I) − 1 − m Dies entspricht aber genau · WO PT (I) 1 · WOPT (I) WLIST (I) 6 2 − m Diese Schranke kann nicht verbessert werden. Wähle Liste (T1, , Tn) mit n = m(m − 1) + 1 und Ausführzeiten p1 = p2 = = pn−1 = 1 und pn = m. WLIST (I) = m − 1 + m = 2 m − 1 und der optimale Wert ist WOPT (I) = m Algorithmus LPT (Largest Processing Time) 1. Wir sortieren die Jobs nach Ausführungszeiten absteigend (d.h. p1 > p2 > > pn) 2. Wende Listenscheduling auf sortiere Liste an. Satz 2.19. Für alle Instanzen I gilt 1 4 ) WOPT (I) WLPT (I) 6 ( − 3 3m und diese Schranke ist die beste. Beweis. Annahme: Die Schranke ist falsch. Dann gibt es ein kleinstes n (Anzahl der Aufgaben), für das die Schranke nicht gilt. Betrachte solche Instanz I. Sei Tk Aufgabe, die in LPT-Schedule als letzte beendet wird. Ik = {T1, , Tk } WLPT (I) = WLPT (Ik) und WOPT (Ik) 6 WOPT (I) D.h. Ik ist eine kleinste Instanz und wir können k = n annehmen. Es gibt nun 2 Fälle: 1 1. pk 6 3 WOPT (I) 20 Grundlegende Definitionen und Methoden Mit (4) aus dem vorherigen Beweis folgt WOPT 1 1 > WOPT (I) − 1 − pk m 1 1 · WOPT (I) > WOPT (I) − 1 − 3 m 4 1 − WOPT > WLPT (I) 3 3m 2. pk > 3 WOPT (I) 1 Für alle i: pi > pk > 3 WOPT (I)(1 6 i 6 k), d.h. in einem optimalen Schedule sind 6 2 Aufgaben pro Maschinen ⇒ k = n 6 2 m. Falls Tk alleine auf Maschine in LPT, dann gilt WLPT (I) = pk 6 WOPT (I) (ist optimal). Also Tk zusammen mit anderen in LPT und n > m + 1. a. Angenommen, Tk wäre in LPT mit 2 weiteren Aufgaben zusammen. Dann gilt: WLPT (I) > p j1 + pj2 + pk In LPT-Schedule gibt es dann mindestens 1 Maschine mehr mit nur 1 Aufgabe. Für alle Aufgaben Ti, die in LPT alleinestehen gilt pi > C − pk > p j1 + p j2 > 2 WOPT (I) 3 D.h. alle solche Aufgaben wären auch allein im optimalen Scheduling ⇒ gleiche viele wie in LPT ⇒ Widerspruch. D.h. in LPT Tk mit einer Aufgabe zusammen. Im optimalen Schedule seien h Maschinen mit 2 Aufgaben zusammen. F+r die gilt: pi + p j 6 WOPT (I) ⇒ pi 6 WOPT (I) − p j < Daraus folgt nun pl < 2 WO PT (I) 3 2 WOPT (I) 3 für die 2 h kleinsten Aufgaben. In LPT wird Tk mit einer dieser kleinsten Aufgaben zusammengetan (Tl). 2 1 WLPT (I) = pl + pk < WOPT (I) + WO PT (I) 3 2 7 1 4 und dies ist nun 6 6 WO PT (I) 6 3 − 3 m WOPT (I), m > 2. Der Worst case ist n = 2 m + 1, pi = 2 m − ⌊ Aufgabenlänge wäre 5, 5, 4, 4, 3, 3, 3. (i + 1) ⌋, 2 i = 1, , 2 m, p2m+1 = m. Eine Beispiel- 2.3.2 Das metrische TSP ∆TSP wie TSP, aber mit D anders D = { < Kn , c > |Kn = (V , E) vollst. Graph mit n Knoten, c: E → N, ∀u, v, w ∈ V gilt c(u, v) 6 c(u, w) + c(w, v)} Wir benötigen für die weiteren Betrachtungen Spannbäume. G = (V , E) ist Teilgraph T von G mit: T ist Baum mit ET ⊆ E und VT = V . Für e ∈ E sind c(e) Kosten eines Teilgraphen G ′ von G mit X c(G ′) = c(e) Minimaler Spannbaum T ist e∈E ′ C(T ) = min {c(T ′)|T ′ ist Spannbaum von G} 21 2.3 Relative Approximation Dies ist in O(|V | log |V | + |E |) möglich, z.b. durch PRIM. R∗ sei eine optimale Rundreise mit n 1 Kanten. Dann gibt es eine Kante e ′ in R∗ mit c(e ′) > n c(R∗). Entfernt man e ′ aus R∗ dann 1 erhält man einen Spannbaum für den gilt c(T ) 6 c(R∗) − c(e ′) 6 1 − n c(R∗). Wir nehmen uns MST Graph T und verdoppeln die Kanten. Dies ergibt den Multigraphen DT (Beispiel t.dot und dt.dot noch einfügen) In einem Multigraphen, in dem jeder Knoten geraden Grad hat, gibt es immer eine Eulertour (Satz von Euler). Euler-Tour eines zusammenhängenden Multigraphen G = (V , E) ist Kreis (u1, , u |E |+1) mit u1 = u |E |+1 und jede Kante wird dabei genau einmal durchlaufen. Man erhält eine Euler-Tourr in O(|V | + |E |). Wenn wir auf DT eine Euler-Tour durchlaufen und schon besuchte Knoten jeweils streichen, erhalten wir einen Hamilton’schen Kreis in Kn (vollständiger Graph). Algorithmus DTREE 1. Berechne den minimalen Spannbaum T von < Kn , c > 2. Bilde Doppelbaum DT aus T 3. Berechne für DT eine Euler-Tour EU = {u1, u2, } 4. Entferne aus EU Wiederholungen von Knoten, so dass man einen Hamilton’schen Kreis EU ′ in Kn erhält. Gib EU ′ aus. Satz 2.20. Bei n Knoten garantiert DTREE eine relative Güte von RD TR EE (n) 6 2 − in Laufzeit O(n2). 2 n Beweis. Wegen (1) und Vorbetrachtungen gilt ′ WDTR EE (I) = c(EU ) 6c(EU) = 2 c(T ) 1 c(R∗) 6 2 1− n 2 = 2− WOPT (I) n Die Laufzeit Kn hat O(n2) Kanten. Ein Matching M eines Kantengewichteten Graphen ist ein Teilgraph von G, in dem jeder Knoten maximal Grad 1 hat. Das Gewicht von M ist c(M ). In Kn mit n gerade gibt es perfekte n Matchings, d.h. Matchings mit allen Knoten genau Grad 1. Genau 2 Kanten. Perfektes Matching mit kleinstmöglchen Gewicht heißt ein leichtestes Matching. Dies kann in O(n2.5 (log n)4) implementiert werden. Sei in einem beliebigen Graph G = (V , E) S = {v |v ∈ V , deg(v) ungerade}. Die Behauptung ist nun, dass |S | gerade ist. P Beweis. Nun sei S̄ = V − S und a = v ∈V deg(v) = 2 |E | ist gerade. Es gilt nun: X X deg(v) + a= deg(v) ?? v ∈S v ∈S̄ gerade d.h. |S | muss gerade sein. Algorithmus CA (Christofides) 1. Berechne MST T von < Kn , c > 2. S = {v |v ∈ VT , deg(v) ungerade} (|S | ist gerade) gerade 22 Grundlegende Definitionen und Methoden 3. Berechne auf dem durch S induzierten vollständigen Teilgraphen von Kn ein leichtestes Matching MC H . 4. Berechne auf Multigraphen (V , ET ∪ EM C ) = MG eine Eulertour EU = (u1, ). In diesem Multigraphen MG haben alle Knoten geraden Grad! 5. Erzeuge Hamilton’schen Kreis EU ′ durch Streichung von wiederholten Knoten. Gib EU ′ aus. Satz 2.21. Auf n Knoten garantiert CH eine relative Güte von RCH (n) 6 Die Laufzeit ist dabei O(n2.5 (log n)4). 3 1 − 2 n Beweis. R∗ optimale Tour für < Kn , c > . c(R∗) = WOPT (I). Es gilt nun: 1 c(T ) 6 1 − c(R∗) n Durch Umbenennung der Indizes sei R∗ = (u1, u2, , un , u1) und S = {ui1, ui2, , ui |S |} mit i1 < i2 < < i |S | Für den Kreis H = (ui1, ui2, , ui |S |, u1). Wegen der Dreiecksungleichung gilt c(H) 6 c(R∗) Zerlege H nun in 2 Matchings (perfekt) M1 und M2. O.B.d.A. sei nun c(M1) 6 c(M2). Dann gilt: c(MC H ) 6 c(M1) 1 6 (c(M1) + c(M2)) 2 1 = · c(H) 2 1 6 · c(R∗) 2 Nun wird die Euler-Tour durchlaufen. c(EU) = c(T ) + c(M CH) 1 1 · c(R∗) + c(R∗) 6 1− 2 n 3 1 WOPT (I) − = 2 n 2.3.3 „Unmöglichkeit“ der relativen Approximation 3 Satz 2.22. Für BINPACKING gibt es keine polynomielle δ-Approximation mit δ < 2 , außer P = NP. Beweis. 3 Angenommen, es gibt eine δ-Approximation A mit δ < 2 . Dann kann man (siehe Übung) PARTITION so auf BINPACKING reduziert werden, dass PARTITION in polynomieller Zeit entschieden werden kann ⇒ P = NP. Satz 2.23. Die Knotenfärbung eines planaren Graphen hat keine polynomielle δ-Approximation 4 mit δ < 3 . 23 2.4 Approximationsschemata 2.4 Approximationsschemata Definition 2.24. Sei Π ein Optimierungsproblem und A ein Approximationsalgorithmus, der als Eingabe eine Probleminstanz I und ein ε, 0 < ε < 1, bekommt. 1. Dann heißt A ein polynomielles Approximationsschema (PAS, polynomial approximation scheme) für Π wenn für jede Probleminstanz I und zu jedem ε, 0 < ε < 1, eine zulässige Lösung berechnet wird mit relativen Fehler εA(I , ε) 6 ε und in Zeit O(p(|I |)) für ein Polynom p. 2. A ist streng polynomielles Approximationsschema (FPAS), wenn A ein PAS und die 1 Laufzeit O(q(|I |), ε ) für ein Polynom q ist. Die Approximationsschema {Aε } bildet eine Familie von Algorithmen die eien uniforme Darstellung hat. 1 1 |I | (exponentiell. Für PAS ist eine Laufzeit O |I | ε erlaubt, nicht erlaubt ist O e 1 10 Für FPAS wäre beides nicht erlaubt. Erlaubt wäre z.B. O |I |4 . ε 2.4.1 Multiprozessorscheduling Sei m die Anzahl der Prozessoren und p1, , pn die Ausführzeiten mit n > m (sonst trivial). Algorithmus LPTk 1. Sortiere die Jobs nach Ausführzeiten fallend: p1 > p2 > > pn. 2. Erstelle einen optimalen Schedule für die ersten k Aufgaben. 3. Starte mit bisher erstellten optimalen Schedule. Verteile restliche Aufgaben Tk+1, mit Listenschedule. , Tn Satz 2.25. Für alle Fälle I gilt WLPT k(I) = 1 + 1 1− m k 1 + ⌊m⌋ WOPT (I) Beweis. Sei C die Gesamtlaufzeit des in 2. erstellten optimalen Teilschedule für die ersten k Aufgaben. Falls WLPT k(I) = C, dann ist ein optimaler Schedule entstanden. Sei also WLPT k(I) > C. Dann gibt es einen Aufgabe T j , j > k, die zur Zeit WLPT k(I) beendet wird. D.h., dass alle Maschinen im Zeitintervall [0, WLPT k(I) − p j ] vollständig mit Aufgaben belegt sind. p X pi > m(WLPT k(I) − pj ) + p j i=1 = m WLPT k(I) − (m − 1) p j > m WLPT k(I) − (m − 1)pk+1 (wegen pk+1 > p j ) ⇒ n m−1 1 X pi ) WOPT (I) > WLPT k(I) − pk+1 (wegen WOPT (I) > m m i=1 k ⌊m⌋ viele von den ersten k + 1 AufIn jedem Schedule gilt, dass mindestens ein Prozessor 1 + k gaben enthält (denn sonst wären nur m · ⌊ m ⌋ 6 k Aufgaben zugewiesen). Alle Aufgaben haben Ausführzeit > pk+1. Für optimalen Schedule gilt k WOPT (I) > 1 + ⌊ ⌋ · pk+1 m 24 Grundlegende Definitionen und Methoden oder pk+1 6 1 k 1 + ⌊m⌋ · WOPT (I) Dies können wir oben einsetzen und es ergibt: m−1 · pk+1 m 1 1− m 6 WO PT (I) 1 + k 1 + ⌊m⌋ WLPT k(I) 6 WO PT (I) + Wir wollen dies nun auf die angesprochenen Approximationsschemata bringen. Sei ε m l oben m k 1 k k 1 m beliebig mit 0 < ε < 1 und k = ε ⇒ k > ε also m > ε und 1 + ⌊ m ⌋ > m > ε , d.h. 1 1 k 1 + ⌊m⌋ 6 e und damit 1− m k 1 + ⌊m⌋ 6ε m Sei Aε obiger Algorithmus LPTk mit k = ε . Die Laufzeit des Algorithmus ist nun noch zu betrachten. Das Sortieren am Anfang funktioniert in O(n log n). Den für den Beginn nötigen optimalen Teilschedule mit k Aufgaben kann in O(mk) bestimmt werden. Das weitere Zuteilen der letzten Aufgaben ist in O(n · m) möglich. Die Laufzeit ist also m O(mk + m n + n log n) ⊆ O(m ε +1 + m n + n log n) Wir haben also ein PAS und kein FPAS. Satz 2.26. Für festes m > 2 gibt es ein Approximationsschema für das m-ProzessorScheduling -Problem. 2.4.2 Bemerkungen • Minimierungsproblem: 1 + εA = RA • Maximierungsproblem:1 − εA = R • Angabe eines (F)PAS A für Optimierungsproblem kann immer auch konstanter Gütequo1 1 5 tient δ erreicht werden. Z.B. δ = 4 , dann wählt man ε∗ = 4 (Minimierung) bzw. ε∗ = 5 (Maximierung). 1 A Satz 2.27. Sei Π ein Optimierungsproblem und A ein (F)PAS für Π. Zur Eingabe I sei Z(I) 1 eine obere Schranke für OPT(I), d.h. OPT(I) 6 Z(I). Sei ε∗ = Z(I) + 1 . Dann gilt A(I , ε) = OPT(I) Ist A FPAS ist, dann ist die Laufzeit O(poly(|I |, Z(I)). Beweis. A findet zulässige Lösung bei Eingabe von I und ε∗ mit εA(I , ε∗) = D.h. | OPT(I) − A(I , ε∗)| 6 ε∗ OPT(I) |OPT(I) − A(I , ε∗)| 6 ε∗ OPT(I) OPT(I) = Z(I) + 1 < 1 25 2.4 Approximationsschemata Wir lassen jedoch in den meisten Fällen nur ganzzahlige Lösungen zu und daraus folgt |OPT(I) − A(I , ε∗)| = 0 Also WOPT (I) = A(I , ε∗) (Die Approximation wäre also optimal.) Kapitel 3 Techniken Hier werden einige essentielle Techniken von Approximationsalgorithmen vorgestellt. 3.1 Die Greedy-Methode greedy: gierig, habgierig, gefräßig Ein Merkmal ist, dass Teillösungen erstellt werden, die nicht mehr geändert werden können (was man schon hat, dass muss man auch behalten). Schon bekannte Algorithmen die diese Prinzip verfolgen sind z.B. GREEDYCOL (im Gegensatz zu FÄRBEKANTEN). 3.1.1 Greedy für das Rucksackproblem MAXIMUM RUCKSACK • • • • D = { < a1, , an , p1, , pn , b > | alle Zahlen in N, ai 6 b} P S( < a1, , an , c1, , cn > ) = {J |J ⊆ {1, , n}, i∈J ai 6 b} P W (J) = i∈J pi , J ⊆ {1, , n} max Die Greedy-Idee besteht nun darin, dass wir die Stücke mit größtem Profit pro Größeneinheit: pi möglichst groß ai Algorithmus GREEDY KNAPSACK(GK) 1. a. Sortiere Stücke {1, , n} fallend bezüglich b. J 4 ∅ pi ai (Danach sei Indizierung a1, , an) 2. for i 1 1 to n do a. if b > ai then J 4 J ∪ {i}; b 4 b − ai Analyse: Für n > 2 und pi = ai = 1 für i = 1, , n − 1 und an = b = k n (k große Zahl mit k > n), pn = b − 1. Es gilt nun: p p b−1 p1 p2 = = = n−1 = 1 > n = an−1 an b a1 a2 GK packt Stücke 1, mehr. , n − 1 ein. Für das n-te Stück (das genau reinpasst) ist nun kein Platz WGK (I) = n − 1, WOPT (I) = b − 1 RGK (I) = WOPT (I) b − 1 k n − 1 k(n − 1) = = > =k WG K (I) n−1 n−1 n−1 GK ist also „beliebig“ schlecht. 27 28 Techniken Satz 3.1. Sei I = < a1, , an , p1, , pn , b > beliebige Insatz für MAX KNAPSACK . Sei pm ax = max {p1, , pn } und WGK +(I) = max (pm ax , WG K (I)). Dann gilt RG K +(I) = Beweis. WOPT (I) 62 WG K +(I) > a2 > > an . 2 n Pk 1. Behauptung: Falls i=1 ai = b für ein k, 1 6 k 6 n, dann packt GK optimal (D.h. Pk p ist maximaler Profit. i=1 i P P Pk Angenommen, es gibt J ⊆ {1, , n} mit j ∈J a j 6 b und j ∈J p j > i=1 pi. Dann sei D = J ∩ {1, , k}, die Menge der Stücke in beiden Lösungen. ′ J′=J −D Pund K = {1, , k} P− D. Sei nun a = x, d.h. ′ i i∈K i∈D ai = b − x. X X X aj = aj − ai 6 b − (b − x) = x Gelte schon p1 a1 p p j ∈J ′ Es gilt weiterhin, j ∈J X i∈D pj > j ∈J ′ A= X pi = i∈K ′ X ai i∈K ′ Dies ist aber nun genau X pi (3.1) i∈K ′ p p p pi X > ai · k (wegen i > k , i 6 k) a a a ai i k k ′ i∈K A > x· pk ak Für B gilt nun: B = X pj j ∈J ′ pj a j j ∈J ′ X p p pk 6 (wegen j > k + 1: j 6 k ) aj · a j ak ak j ∈J ′ pk 6 x· ak = X aj · D.h. nun aber, dass A > B ist und dies ist ein Widerspruch zu (3.1). Pk Pk ′ ′ 2. Sei k so, dass i=1 ai < b und b = i=1 ai + ak+1 > b. Für Rucksack der Kapazität b liefert der Greedy-Algorithmus eine optimale Lösung (wegen 1.), und zwar k X pi + pk+1 i=1 Der optimale Profit p∗ für eine kleinere Kapazität b ist sicherlich kleiner oder höchstens gleichgroß. WOPT (I) = p∗ 6 k X i=1 pi + pk+1 6 WGK (I) + pm ax 6 2 max (WG K (I), pmax ) = 2 WGK + 29 3.1 Die Greedy-Methode 3.1.2 Independent Set (MAX) INDEPENDET SET (IS) • D = {G|G = (V , E)} • S(G) = {V ′|V ′ ⊆ V , ∀{u, v } ∈ E , |{u, v} ∈ E | 6 1} • W (V ′) = |V ′|, V ′ ∈ S(G) • max Greedy-Idee: Wähle jeweils Knoten mit minimalen Grad. Algorithmus GREEDY-IS (GIS) 1. V ′ 4 ∅, U 4 V 2. while U ∅ do a. x 4 Knoten mit minimalen Grad in dem durch U induzierten Teilgraphen von G b. V ′ 4 V ′ ∪ {x}; c. Entferne x und alle Nachbarn von x aus U Man kann nun wieder, um zu zeigen wie schlecht der Algorithmus arbeitet, ein Gegenbeispiel konstruieren (das war mir aber jetzt zu aufwändig ;)). Durch dieses Gegenbeispiel schaffen wir es WGIS (I) = 2 und WOPT (I) = k zu erreichen ⇒ GIS liefert wieder „beliebig“ schlechte Lösungen. Satz 3.2. Sei G = (V , E) mit n = |V | und m = |E | und δ = m n die Dichte von G. Dann gilt: n 2δ+1 WG IS (G) > Beweis. Sei xi der in der i-ten Iteration gewählte Knoten (while-Schleife). Sei di dabei der aktuelle Grad von xi. GIS entfernt xi und alle seine Nachbarn, d.h. di + 1 Knoten. Da di minimal war, war der Grad jedes Nachbarknotens > di. Es werden dabei mindestens an Kanten entfernt: ? ? di + di · xi di − 1 2 = di(di + 1) 2 N achbarn von xi Sei g = WG IS (G) die Anzahl der Iterationen. Dann gilt: 1. g X di(di + 1) 6m=δm 2 i=1 Der Algorithmus stoppt nun erst, wenn alle Knoten entfernt sind. g X (di + 1) = n Daraus folgt nun i=1 g X i=1 di(di + 1) + g X g X (di + 1) 6 2 δn + n i=0 (di + 1)2 6 n(2δ + 1) i=1 n Man kann nun zeigen, dass die linke Seite minimal ist, wenn di + 1 = g . Dann ist nun n(2δ + 1) > g X n2 n2 = g g2 i=1 Daraus können wir jetz umstellen nach g: g> und damit das gewünschte Ergebnis n 2δ + 1 WG IS (I) > n 2δ+1 (3.2) 30 Techniken Bemerkung 3.3. Wir nutzen die Ungleichung von Cauchy-Schwarz für die Abschätzung von (3.2): !2 ! ! g g g X X X 2 2 ai b i = ai · bi i=1 i=1 Satz 3.4. Sei G = (V , E) mit Dichte δ = m . n i=1 Dann gilt: Wopt (G) 6δ+1 WG IS (G) Beweis. Sei V ∗ irgendeine maximale unabhängige Menge. Sei ki die Anzahl der Knoten in V ∗, die unter den di + 1 Knoten sind, die in diesem Algorithmus GIS entfernt werden in der i-ten Iteration. Es gilt: g X ki = |V ∗| = WOPT (G) (3.3) i=1 Dann werden von GIS in der i-ten Iteration ≥ (di(di + 1) + ki(ki − 1)) 2 Kanten entfernt. Warum ist dies so? Sei Vi Menge der in der i-ten Iteration weggenommenen Knoten mit |Vi | = di + 1. Jeder dieser Knoten aus Vi hat Grad deg(v) > di. D.h. es gibt mindestens (di + 1)di Knotenpaare (v, u), v ∈ Vi die Kanten bilden. Es gibt ki Knoten in Vi ∩ V ∗ mit u, v ∈ Vi ∩ V ∗ und (u, v) ist keine Kante. Daraus folgt nun, dass höchstens (di + 1)di − ki(ki − 1) = a Knotenpaare können aus Vi × Vi a sein. Das heißt nun aber, dass höchstens 2 Knotenpaare (als Kante gesehen) kommen doppel vor. Dann gilt nun: g X di(di + 1) + ki(ki − 1) ≤m=δn 2 i=1 Und dies ergibt nun: g g X X (di + 1)2 + ki2 − ki 6 2 δ n + n ? i=1 i=1 WO P T (G) Minmum ist bei di + 1 = Weiterhin wissen wir nun: n W (G) und ki = OPT g g n(2 δ + 1) + WOPT (G) ≥ g X (di + 1)2 + ki2 i=1 2 W (G)2 n + OPT g g n2 + WOPT (G)2 g ≥ n(2 δ + 1) + WOPT (G) ≥ = n WO P T (G) 2δ+1+ 1 x WO P T (G) n WOPT (G) WO P T (G) n + +x , b > 0 und 0 < x 6 1 b+x 1 +1 ≥ x b+1 = 31 3.2 Sequenzierung 1 Wann wird nun f (x) = x + x minimal? 1 1 +1=0⇔ 2 =1⇔x=1 x2 x 1 1 f ′′(x) = ≥ > 0 ⇒ Minumum 2x3 2 Nun können wir diese Erkenntnis einsetzen: 1+1 WOPT (G) WG IS (G) = g ≥ 2δ+1+1 1 = WOPT (G) δ+1 f ′(x) = − 3.1.3 Weiteres zum Greedy Bereits gesehene Greedy-Algorithmen • Greedycol • SHF • PACK • LIST NEAREST NEIGHBOUR (NN) 1. Wähle bei Start Stadt v1 2. Pfad P 4 (v1) 3. for j = 2 to n do • 4 (v1, , vj −1) P = (v1, , vn , v1) • 4. v j 4 am nächsten zu v j −1 liegender Knoten P Satz 3.5. Für jede Instanz von ∆TSP gilt wenn I n Städte hat, dann ist WNN (I) 1 6 (⌈log n⌉ + 1) WOPT (I) 2 3.2 Sequenzierung 3.2.1 Partitionierungsprobleme Sequentielles Schema für Partitionen • Input: Menge I von Stücken • Ausgabe: P Partition von I (bzw. zugehörige Bewertung W (P )) 1. Sortiere I (nach einem Kriterium). Wir erhalten dadurch eine Sequenz bzw. Liste sei 2. P 4 {{x1}} (x1, , xn) 3. for i = 2 to n do a. if xi kann einer Menge p in P zugefügt werden kann then füge xi zu p, d.h. p 4 p ∪ {xi } b. else P 4 P ∪ {{xi }} 32 Techniken Wir wollen nun nochmal auf SHF zurückkommen. Es gibt mehrere Varianten die wir dort benutzen können: 1. NEXTFIT(NF) Wann immer ein Stück xi in den zuletzt betrachteten Behälter passt, füge xi hinzu; ansonsten wähle neuen (freien) Behälter 2. FIRSTFIT(FF) Füge xi in den ersten schon benutzten Behälter, der noch genug Platz hat. Falls es solchen nicht gibt, wähle neuen Behälter. (Dabei sind die Behälter nummeriert Bin1, Bin2, ). Satz 3.6. 1. WNF (I) ≤ 2 WOPT (I) 2. WFF (I) ≤ 1.7 WO PT (I) + 2 First Fit Decreasing (FFD) • Input: Menge I von n Stücken i mit Größe ai • Ausgabe: Partition P von I, bestehend aus Teilmengen mit Summe der Stückgrößen kleiner als Kapazität bzw. WFFD (I) = |P |. 1. Sortiere I nach nicht-aufsteigender Stückgröße, danach a1 ≥ a2 ≥ ≥ an 2. for i = 1 to n do a. if es gibt Behälter, in die Stück i passt then füge i in ersten solchen Behälter ein b. else füge i in neuen Behälter hinzu Normierung C = 1 ⇒ a1, , an , C ∈ N wird zu ai′ = ai C ∈ Q. Satz 3.7. Für jede Instanz I von BINPACKING gilt: WFFD (I) 6 1.5 · WOPT (I) + 1 Beweis. 2 2 1 a1 ≥ a2 ≥ ≥ an sei sortiert gegeben. Die Menge A = {ai |ai > 3 }, B = {ai | 3 ≥ ai > 2 }. C = 1 1 1 {ai | 2 ≥ ai > 3 }, D = {ai | 3 ≥ ai }. Betrachte nun die Lösung, die durch FFD gegeben ist. 1. Es gibt mindestens einen Behälter, der nur Stücke aus D enthält. Dann gibt es höchstens 2 einen Bin, dessen Ladung < 3 ist, d.h. WFFD (I) − 1 Behälter haben Ladung ≥ und damit gilt nun: 2 3 (vielleicht auch alle.). Dann gilt: & n ' X 2 WOPT (I) ≥ ai > (WFFD (I) − 1) 3 i=1 WOPT (I) > WFFD (I) − 1 2. Es gibt keinen Behälter, der nur Stücke aus D enthält. Hier findet FFD sogar eine optimale Lösung. Sei I ′ die Instanz, die aus I entsteht, wenn man alle Stücke aus D entfernt. Offensichtlich ist WFFD (I) = WFFD (I). Es reicht also, eine optimale Lösung für I ′ zu betrachten, denn WOPT (I ′) ≤ WOPT (I), d.h. I ′ besteht nur noch aus A, B , C. In jeder zulässigen Lösung sind die Stücke aus A allein zugeordnet. In jedem Behälter sind höchstens 2 Stücke. Davon höchstens eines aus B. FFD packt nach den Stücken aus B, das jeweils größtmögliche Stück aus C Münzen. Falls es Behälter gibt, die nur Stücke aus C enthalten, dann gibt es unter Umständen Stücke B ′ ⊆ B, die alleine gepackt wurden. Dann enthalten in einer optimalen Lösung auch |B ′| Behälter nur ein Stück aus B, d.h. 1 WOPT (I) = |A| + |B ′| + (|B | − |B ′| + |C | ) = WFFD (I) 2 33 3.2 Sequenzierung Falls es keinen Behälter gibt, der nur Stücke aus C enhält, dann gilt: WFFD (I) = |A| + |B | = WOPT (I) Es gilt sogar: WFFD (I) ≤ 11 · WO PT (I) + 4 9 Wir wollen nun die letzte Abschätzung noch zeigen. Beweis. 1 Sei ε > 0 mit ε < 32 . I enthalte 5 n Stücke, n sei durch 6 teilbar davon 1 • n Stücke mit Größe a = 2 + ε • n Stücke mit Größe b = 4 + 2 ε • n Stücke mit Größe c = 4 + ε • und 2n Stücke mit Größe d = 4 − 2 ε 1 1 1 FFD erzeugt daraus nun folgende Belegung: • n Bins mit jeweils einem a und einem b (Füllung: • n 3 n 2 • • Bins mit 3 Stücken der Größe c (Füllung: 3 4 3 4 + 3 ε) + 3 ε) Bins mit 4 Stücken der Größe d (Füllung: 1 − 8ε) WFFD (I) = n + n 3 + n 2 = 11 n 6 Die optimale Lösung sieht etwas anders aus. • n Bins mit jeweils einem a, c, d (Füllung: • n 2 • WOPT (I) = 2 n Bins mit jeweils 2 b und 2 d (Füllung: 1 2 1 2 1 1 + ε + 4 + ε + 4 − 2ε = 1) 1 + 4 ε + 2 − 4 ε = 1) 3 Daraus folgt nun: 11 3 · n 9 2 11 = · WOPT (I) 9 WFFD (I) = ∞ Die relative asymptotische Güte von FFD RFFD = 11 9 Definition 3.8. Sei Π ein Optimierungsproblem und A ein Approximationsalgorithmus. Die relative asymptotische Güte (der asymptotische Gütequotient) von A ist ∞ RA (n) = inf {T (n)|∃ Grenze g(n) mit: ∀I: OPT(I) ≥ g(n) ⇒ RA(I) ≤ r(n)} Fall FFD mit OPT(I) ≥ 4 n: RFFD (I) = WFFD (I) 11 4 11 1 ≤ + ≤ + WOPT (I) 9 WOPT (I) 9 n mit 11 1 + inf r(n) = n 9 = 11 9 3.2.2 Bemerkungen Klassifizierung der Methoden ist unscharf, z.B. GREEDY KNAPSACK könnte auch als sequentieller Algorithmus bezeichnet werden. 34 Techniken 3.3 Lokale Suche • Start mit zulässiger Lösung (die unter Umständen schon von einem anderen Algorithmus gefunden wurde) • Versuch die bisherige Lösung iterativ zu verbessern durch benachbarte Lösungen Schema für lokale Suche: • Eingabe: Fall I • Ausgabe: lokal optimale Lösung x bzw. Wx(I) 1. begin 2. y 4 vorgebene zulässige Lösung 3. while es gibt eine Nachbarlösung z von y die besser ist als y a. do y 4 z 4. return y bzw. W y(I) (Stop in lokalem Optimum bezüglich gewählter Nachbarschaft 5. end 3.3.1 Maximaler Schnitt MAXIMUM CUT • D = {G|G = (V , E)} • S(G) = {(V1, V2)|V = V1 ∪ V2, V1 ∩ V2 = ∅} • W (V1, V2) = |{(u, v)|(u, v) ∈ E , u ∈ V1, v ∈ V2}| (Anzahl der Knoten zwischen V1 und V2 • max Nachbarschaftsstruktur N : 1. (V1, V2) zulässige Lösung V = {v1, , vn } 2. Nachbarschaft von (V1, V2): alle Partitionen (V1k , V2k) mit a. falls vk ∈ V1, dann V1k = V1 − {vk }, V2k = V2 ∪ {vk } b. falls vk ∈ V2, dann V1k = V1 ∪ {vk }, V2k = V2 − {vk } Satz 3.9. Sei G = (V , E). Sei (V1, V2) ein lokales Optimum bezüglich der Nachbarschaftsstruktur N und sei WN (V1, V2) der zugehörige maximale Wert. Dann gilt: WOPT (G) ≤2 WN (V1, V2) Beweis. Sei Gi = (Vi , Ei) der durch Vi induzierte Graph Ei = E ∩ Vi × Vi, mi = |Ei |, m = |E |, mN = WN (V1, V2) m = m1 + m2 + mN (3.4) Für gegebene Knoten vi ∈ V sei M1i = {v |v ∈ V1 und (v, vi) ∈ E } M2i = {v |v ∈ V2 und (v, vi) ∈ E } m1i = |M1i |, m2i = |M2i | Jede Lösung aus der Nachbarschaft von (V1, V2) hat höchstens den Wert mN = WN (V1, V2) (weil V1, V2 lokal optimal). Dann gilt für jedes vi ∈ V1: m1i − m2i = 0 35 3.3 Lokale Suche Denn es gilt: WN (V1, V2) − m2i + m1i = WN (V1i , V2i) ≤ WN (V1, V2) Entsprechendes gilt natürlich auch für v j ∈ V2 mit m2 j − m1j ≤ 0. Daraus folgt nun aber X (m1i − m2i) = 2 m1 − mN ≤ 0 vi ∈V1 X X = m1i − m2i vi ∈V1 (3.5) vi ∈V1 mit und daraus folgt nun X (m2 j − m1 j ) = 2 m2 − mN ≤ 0 v j ∈V2 2(m1 + m2 − mN ) ≤ 0 Also − m1 − m2 + m N ≥ 0 und mit (3.4) wissen wir: Es gilt nun immer: 1 2 m N ≥ m ⇒ mN ≥ m 2 WOPT (G) ≤ m. Algorithmus LS-CUT(G) 1. V1 = ∅, V2 = ∅ 2. while es gibt einen Knoten vk ∈ V mit W (V1k , V2k) > W (V1, V2) do a. if vk ∈ V1 then V1 = V1 − {vk }, V2 = V2 ∪ {vk } b. else V2 = V2 − {vk }, V1 = V1 ∪ {vk } 3. Ausgabe: V1, V2 oder W (V1, V2) Satz 3.10. Sei G eine beliebige Instanz von MAXIMUM CUT . Dann ist LS-CUT eine 2-Approximation mit Laufzeit O(|E | · |V |). Beweis. Der Algorithmus produziert offensichtlich eine lokale optimale Lösung bezüglich der Nachbarschaftsstruktur N . Nach Satz gilt mit WLS −C UT (G) = WN (V1, V2) RLS −C UT (G) = WOPT (G) ≤ 2. WLS −C UT (G) Das Nachprüfen der Schleifenbedingung dauert bei entsprechender Impelementierung O(|V |) für jeweilge Nachbarschaft. Da bei jeder erfolgreichen Verbesserung des Wertes um mindestens 1 die Knotenanzahl wächst, ist man nach höchstens |E | Abfragen fertig. Die Laufzeit ist also insgesamt O(|V | · |E |). 3.3.2 Bemerkungen Für Optimierungsprobleme sind viele Definitionen von Nachbarschaften möglich. Wichtige Punkte dabei sind: • die Qualität der Lösung (Nähe zur optimalen Lösung) • Ordnung mit der die Nachbarschaft durchsucht wird 36 Techniken • Komplexität der Verifikation, dass es eine bessere Lösung in der Nachbarschaft gibt. • Anzahl der Lösungen, die erzeugt wurde, bis das lokale Optimum erreich wurde. Beispiel 3.11. Nachbarschaftsstruktur TSP - 2-opt Struktur. Zu gegebenem Hamiltonkreis H = (v1, , vn , v1) ersetze jeweils zwei Kanten (x, y) und (v, z) durch Kanten (x, y) und (y, z). Dies kostet O(n2). Verbesserungen können leicht beim Euklidischen TSP erreicht werden. Bei zufälliger verteilten Punkten in der Ebene ergibt die Approximation Werte, die nur um 5.5% vom Optimum abweichen. 3.4 Lineare Optimierung als Basis Seien A ∈ Rm×n , b ∈ Rm , c ∈ Rn. Wir minimieren cT x auf M mit M = {x ∈ Rn |x ≥ 0, A x ≥ b} min n X cjx j unter Nebenbedingung j =1 n X aij x j ≥ bi , i = 1, , m, x j ≥ 0 j = 1, , n j =1 Die lineare Optimierungsaufgabe heißt auch lineares Programm. Wenn nur rationale Zahlen zugelassen sind, und der Lösungsvektor aus Z sein muss, dann heißt das Problem Integer (Linear) Programming. Viele kombinatorische Probleme können als ILP formuliert werden. 3.4.1 Runden von Lösungen eines linearen Programmes Aus einem ILP wird durch Relaxierung ein LP (durch Wegfallen der Forderung nach ganzzahligen Lösungen.) Lösungswerte für LP: xi ∈ Q. (MINIMUM) WEIGHTED VERTEXCOVER(WVC) • D = {G = (V , E , c)|(V , E) ist Graph, c: V → R ≥0, Gewicht von Knoten vi} • S(V , E , c) = {V ′|V ′ Knotenüberdeckung, d.h. ∀(u, v) ∈ E gilt u ∈ V ′, v ∈ V ′} P W (V ′) = vi ∈V ′ ci • • min Mit ci = 1 ist dies genau VERTEX COVER (und dies ist natürlich NP-vollständig.) X ILPVC (G): min ci xi vi ∈V x j + xi = 1, ∀(vi , v j ) ∈ E , xi ∈ {0, 1}, ∀vi ∈ V Die gewonnene Überdeckung ist V ′ = {vi |xi = 1}. Die Relaxierung davon ist xi ≥ 0. Algorithmus ROUNDING WVC Input: G = (V , E , c) mit ci = c(vi) ≥ 0 Ausgabe: Knotenüberdeckung von G. 1. Sei ILPVC das ganzzahlige lineare Programm und sei LPVC durch Relaxierung aus ILPVC entstanden. Sei x∗(G) die optimale Lösung von LPVC . 2. V ′ 4 {vi |x∗i (G) ≥ 0.5} Satz 3.12. Der Algorithmus ROUNDING WVC ist eine polynomielle 2-Approximation. Beweis. 1. Optimale Lösung x∗(G) = (x∗1(G), , x∗n(G)), n = |V | von LPVC kann in polynomieller Zeit berechnet werden. 2. V ′ ist Knotenüberdeckung von G, denn angenommen es gäbe (vi , v j ) ∈ E mit vi V ′ und v j V ′. Daraus folgt nun aber, dass x∗i (G) < 0.5 und x∗j (G) < 0.5. und daraus folgt dann x∗i (G9 + x∗j (G) < 1. Dies ist ein Widerspruch zur Zulässigkeit von x∗(G) mit x∗i (G) + x∗j (G) ≥ 1. 37 3.4 Lineare Optimierung als Basis 3. Sei WOPT (G) die optimale Lösung, d.h. von ILPVC . X ∗ WLP (G) = ci x∗i (G) vi ∈V ist der für LPVC errechnete optimale Wert, d.h. es gilt ∗ WO PT (G) ≥ WLP (G) Außerdem gilt natürlich: WRVC (V ′) = X ci ′ vX i ∈V ci 2 xi∗(G)//x∗i (G) ≥ 0.5 ′ vi ∈V X ci x∗i (G) ≤ 2· ≤ vi ∈V ∗ = 2 WLP (G) ≤ 2 WOPT (G) 3.4.2 Primal-duale Algorithmen Bisherige Resultate mit Khahiyan: O((m + n)8 · (|A| + |b| + |c|)2). Die primal-dual Methode versucht diese Laufzeit zu senken. Zu jedem linearen Minimierungsproblem gibt es ein duales lineares Maximierungsproblem (DLP). Maximiere unter den Nebenbedingungen: m X i=1 m X biyi aij yi ≤ c j , j = 1, , n i=1 yi ≥ 0, i = 1, , m Ein bekanntes Ergebnis daraus ist der Dualitätssatz. ∗ Satz 3.13. Der optimale minimale Wert WLP für das lineare Programm ist gleich dem optimalen maximalen Wert für das duale lineare Programm. Für alle zulässigen Lösungen y = (y1, , ym) von DLP gilt ∗ ∗ ∗ WDLP (y) ≤ WDLP (y∗) = WLP (x∗) ≤ WILP ( ? z∗ ) ganzzahlig Bei der primal-dualen Methode werden gleichzeit berechnet: • (möglicherweise nicht zulässige) ganzzahlige Lösung x für ILP • (nicht notwendigerweise optimale) zulässige Lösungen y für DLP • Bei jedem Schritt werden x und y untersucht und modifiziert, um neue x ′ und y ′ zu erzeugen mit: ◦ x ′ „zulässiger“ ◦ y ′ „optimaler“ Ein kleines Beispiel dazu. Kanten e1, , em mit m = |E |. Die Nebenbedingungen für ILPVC lauten: xi + x j ≥ bh = 1, h = 1, , m, eh = (vi , v j ) xi ∈ {0, 1} für i = 1, , n.n = |V | y(i,j) = yh , eh = (vi , v j ) 38 Techniken Für DLPVC ist yij = 0 , ∀(vi , v j ) ∈ E eine zulässige Lösung und V ′ = ∅. Dies ist jedoch keine zulässige Lösung für ILPVC . Algorithmus Primal-Dual Weighted Vertex Cover Eingabe: G = (V , E , c) Ausgabe: Knotenüberdeckung V ′ ⊆ V 1. ILPVC zugehöriges ganzzahliges lineares Programm, DLPVC das duale der lineare Relaxierung LPVC 2. for all (vi , v j ) ∈ E do yij = yji = 0 3. V ′ 4 ∅ 4. while V ′ ist keine Knotenüberdeckung do a. Sei (vi , v j ) ∈ E von V ′ nicht bedeckt; P P b. ∆yij = min (ci − k,(vi ,vk)∈E yik , c j − k,(vj ,vk)∈E yjk) c. yij = y ji = yij + ∆yij P y = ci then V ′ 4 V ′ ∪ {vi } d. if k,(vi ,vk)∈E ik e. else V ′ 4 V ′ ∪ {v j } 5. Gib V ′ aus Satz 3.14. Der Algorithmus PDVC findet eine zulässige Lösung für MINIMUM WEIGHTED VERTEX COVER mit W (G) ≤2 RPDVC (G) = PDVC WOPT (G) Beweis. V ′ sei Lösung durch Algorithmus. 1. V ′ ist zulässige Lösung. 2. ∀vi ∈ V ′: X ? yij = ci j ,(vi ,v j )∈E Dann gilt: WPDVC (G) = = X vi ∈V ≤ ci ′ vX i ∈V ′ X yij j.(vi ,v j )∈E X X yij vi ∈V j ,(vi ,v j )∈E A lle Kanten X werden doppelt gezählt = 2· X yij ≤ yij (vi ,v j )∈E ∗ WDLP V C (vi ,v j )∈E ≤ ≤ = ⇒ WPDVC (G) ≤ ∗ WLP ∗ WILP WOPT (G) 2 · WOPT (G) Bemerkung 3.15. Die Laufzeit dieses Algorithmus beträgt O(|E | + |V |). 39 3.5 Randomisierte Approximationsalgorithmen 3.5 Randomisierte Approximationsalgorithmen Algortihmus Random Weighted Vertex Cover (RVC) • Input: G = (V , E , c) mit Kantengewichten c • Ausgabe: Überdeckung U , U ⊆ V 1. U 4 ∅ 2. while E ∅ do a. Wähle Kanten e = (v, t) ∈ E b. Wähle zufällige Knoten x ∈ {v, t} mit Wahrscheinlichkeit P (x = v) = c(t) c(v) + c(t) c. U = U ∪ {x} d. E 4 E \{e|x ist inzident zu Kanten e} //entferne alle e die x überdeckt 3. Gib U aus. Bemerkung 3.16. Die Laufzeit dieses Algorithmus ist O(|V | + |E |). Sei WRVC (I) die Zufallsvariable, die den Wert der Lösung bezeichnet, die der Algorithmus RVC bei Eingabeinstanz I = G gefunden hat. Satz 3.17. Sei G = (V , E , c) beliebige Eingabe für den Algorithmus RVC . Dann gilt für den erwarteten Lösungswert E(WRVC (I)) ≤ 2 · WOPT (G) Beweis. Sei U die von RVC gefundene Lösung, d.h. U ⊆ V . Sei U ∗ eine optimale Überdeckung. Für v ∈ V definiere Zufallsvariable Xv c(v) v ∈ U Xv = 0 sonst Es gilt nun: X Xv ) E(WRVC (I)) = E( v ∈U X X E(Xv ) E(Xv) ≤ = v ∈V v ∈U und X E(Xv) = E v ∈U ∗ Xv X c(v) v ∈U ∗ ≤ E ! X v ∈U ∗ ! Um den Satz zu beweisen, reicht es folgendes zu zeigen: X X E(Xv) ≤ 2 · E(Xv ) v ∈V v ∈U ∗ Wenn Kante (v, t) vom Algorithmus in der Schleife in (2.a) gewählt wurde, dann sagen wir: (v, t) nimmt Knoten v gdw. v wird in (2.b) zufällig ausgewählt. Sei N (v) = {u|u ∈ V ∧ (v, u) ∈ E } und Zufallsvariable X(v,t),v so definiert c(v) falls (v, t) nimmt v X(v,t),v = 0 sonst (3.6) 40 Techniken Falls X(v,t),v = c(v) ist, dann gilt für alle t ′ t mit t ′ ∈ N(v): X(v,t ′),v = 0 Also gilt Xv = X X(v,t),v X E X(v,t),v t∈N (v) und damit E(Xv) = t∈N (v) und außerdem (3.7) E(X(v,t),v ) = E(X(v,t),t) Dies gilt noch zu beweisen: E(X(v,t),v ) = c(v) P ((v, t) nimmt v) c(t) c(v) + c(t) c(v) = c(t) · P ((v, t) wurde gewählt) · c(v) + c(t) = c(t) · P ((v, t) nimmt t) = E(X(v,t),t) = c(v) · P ((v, t) wurde gewählt) · Es gilt nun also und X E(Xv ) = v ∈U ∗ X X X (3.8) E(X(v,t)v) v ∈U ∗ t∈N (v) E(Xv) = v U∗ X X E(X(v,t),v) v U ∗ t∈N (v) = X X E(X(v,t),t) (3.9) v U ∗ t∈N (v) Beachte nun, dass ∀v U ∗ jeder Knoten t ∈ N (v) in U ∗ liegen muss (also t ∈ U ∗). Sei w U ∗ beliebig und y ∈ N (w) beliebig. Dann ist Summand in (3.9) E(X(w.y),y) Wegen y ∈ U ∗ und w ∈ N (y) ist E(X(y,w), y) = E(X(w, y),y) Summand in (3.8) D.h. jeder Summand in (3.9) kommt als Summand in (3.8) vor. Daher X X E(Xv ) ≤ E(Xv ) r U ∗ X v ∈V v ∈U ∗ E(Xv ) = X E(Xv ) + X E(Xv ) v U∗ v ∈U ∗ ≤ 2 X E(Xv ) v ∈U ∗ 3.6 Dynamische Programmierung Dabei wird eine optimale Lösung aus eienr beschränkten Anzahl von optimalen Lösungen von Subproblemen erzeugt. 41 3.6 Dynamische Programmierung 3.6.1 Ein pseudo-polynomieller Algorithmus für KNAPSACK Sei beliebige Instanz I = (a1, , an , p1, , pn , b) von (MAXIMUM) KNAPSACK gegeben. Für jedes k, P 1 ≤ k ≤ n, und für jedes p ∈ N, 0 ≤ p ≤ ni=1 pi, betrachte folgendes Subproblem: Finde eine P Untermenge J der Stücke aus {1, , k}, die genau Profit p erbringt, wobei i∈J ai ≤ b minimal wird. Wir nutzen dabei folgende Bezeichnungen: M ∗(k, p) ist optimale Lösung dieses Subproblems M ∗(k, p) ⊆ {1, , k} P • S ∗(k, p) die zugehörige Fülle des Rucksacks, d.h. S ∗(k, p) = j ∈M ∗(k, p) a j P Falls es keine optimale Lösung gibt, dann S ∗(k, p) = 1 + ni=1 ai • Bemerkung 3.18. (Bezeichnungen) M ∗(k, p) ist optimale Lösung zu dem entsprechenden Subproblem (M ∗(k, p) ⊆ {1, , k}) P • S ∗(k, p) = j ∈M ∗ a j zugehörige Füllung des Rucksacks, falls M ∗(k, p) definiert ist P Falls es keine Lösung gibt, dann sei S ∗(k, p) = 1 + ni=1 ai (eine Füllung, die nie erreicht werden kann) • Definition 3.19. • M ∗(1, 0) = ∅ • M ∗(1, p1) = {1} • M ∗(1, p) ist undefiniert für p p1 P Für alle k, 2 ≤ k ≤ n, und für alle p, 0 ≤ p ≤ ni=1 pi gilt ∗ M (k − 1, p − pk } ∪ {k} falls pk ≤ p, M ∗(k − 1, p − pk) ist definiert , S ∗(k − 1, p) ≥ ∗ M (k, p) = S ∗(k − 1, p − pk) + ak , und S ∗(k − 1, p − pk) + ak ≤ b ∗ M (k − 1, p) sonst Bemerkung 3.20. Falls S ∗(k − 1, p) < S ∗(k − 1, p − pk) + ak bringt Hinzunahme des Stücks k keinen neuen optimalen Wert, da Restkapazität des Rucksackes verkleinert wird. Algorithmus RUCKSACK-DP (dynamic programming) Input: I = < a1, , an , p1, , pn , b > P • Ausgabe: Y ⊆ {1, , n} mit i∈Y ai ≤ b Pn 1. for p 4 0 to i=1 pi do • a. M ∗(1, p) = undef. P b. S ∗(1, p) = 1 + ni=1 ai 2. M ∗(1, 0) = ∅; S ∗(1, 0) = 0; M ∗(1, p1) = {1}; S ∗(1, p1) = a1; 3. for k = 2 to n do a. for p = 0 to Pn i=1 pi do i. if pk ≤ p and M ∗(k − 1, p − pk) undef and S ∗(k − 1, p − pk) + ak ≤ S ∗(k − 1, p) and S ∗(k − 1, p − pk) + ak ≤ b then • M ∗(k, p) = M ∗(k − 1, p − pk) ∪ {k} • S ∗(k, p) = S ∗(k − 1, p − pk) + ak ii. else • M ∗(k, p) = M ∗(k − 1, p) • S ∗(k, p) = S ∗(k − 1, p) 42 Techniken 4. p∗ = max {p|M ∗(n, p) undef} 5. Gib Y 4 M ∗(n, p∗) aus Bemerkung 3.21. Falls M ∗(k − 1, p)=undef und M ∗(k − 1, p − pk) definiert ist, dann gilt immer n X S ∗(k − 1, p − pk) + ak ≤ ai < S ∗(k − 1, p) i=1 und das Stück k wird hinzugenommen, falls es in den Rucksack passt. Falls M ∗(k − 1, p − pk) auch nicht definiert ist, so kann der Profikt = p für eine Teilmenge von {1, , k} nicht erreicht werden, und damit ist auch M ∗(k, p) = M ∗(k − 1, p) = undef richtig gesetzt. Satz 3.22. I beliebige Instanz von MAX-KNAPSACK mit n Stücken und Profiten p1, , pn. Dann P findet der Algorithmus Rucksack-DP eine optimale Lösung in Zeit O(n · pi). Beweis. Korrektheit P P ∗ Angenommen, es gibt J ⊆ {1, , n} mit i∈J ai ≤ b und i∈J pi > p . Dann gibt es ein ′ ∗ kleinstes Element n, für P das das gilt. Sei k = max {i|i ∈ J } und p = max {p|M (k, p) undef}. ′ ∗ Offenbar ist p ≤ p < i∈J pi. Dann ist mit k = n eine kleinste Instanz gefunden. / P P P ′ Sei J ′ = J {k }. Dann gilt ′ pi = i∈J ai ≤ b − ak und i∈J pi − pk > p − pk. Also i∈J gilt X pi ≤ max {p|M ∗(k − 1, p) undef} i∈J ′ = p ′′ D.h. X pi = i∈J ≤ ≤ = < X i∈J ′′ pi + pk ′ p + pk max {p|M ∗(p, k) undef} p′ X pi i∈J Dies stellt einen Widerspruch dar. P Laufzeit: In der Schleife sind alle Operationen in O(1). Schleifendurchläufe insgesamt O(n · pi). Dies sieht jetzt natürlich im ersten Moment polynomiell aus. Die Zahlen pi sind ganze Zahlen. Sie benötigen f+r die Darstellung nur log pi + 1 Bins. Dies ist bei der Aufsummierung exponentiell. Falls alle Zahlen pi, ai ∈ O(nk) für ein festes k, dann ist die Laufzeit polynomiell. Definition 3.23. Pseudo-polynomielle Algorithmen Sei für ein Optimierungsproblem Π MAXNR(I) die größte vorkommende Zahl in einer Instanz I. Ein optimaler Algorithmus ALG heißt pseudopolynomiell gdw. seine Laufzeit durch O(poly(|I |, MAXNR(I)))) beschränkt ist. Falls die Profite der Stücke alle von der Form pi = a · zi sind, mit a, zi ∈ N, dann Pist die p erreichbare Profitsumme p = a · z. Mit Schrittweite a statt 1 führt das zur Laufzeit O n · a i . 43 3.6 Dynamische Programmierung 3.6.2 Ein FPAS für MAX-KNAPSACK Algorithmus Approxmations-Schema Knapsack (ASK) • • Eingabe: I Instanz von KNAPSACK, ε > 0 (Fehler) P Ausgabe: Y ⊆ {1, , n} mit i∈Y ai ≤ b 1. pm ax = max {pi |1 ≤ i ≤ n} n 2. if pm ax ≥ 2 · ε then εp • t = log nm a x 3. else • t4 0 4. I sei die aus I abgeleitete Instanz mit Profiten pi′ = ′ ′ 5. Wende Algorithmus RUCKSACK-DP auf I an pi 2t 6. Gib Y aus, die Lösung von RUCKSACK-DP Satz 3.24. Sei I beliebige Instanz von KNAPSACK mit n Stücken und ε > 0. Dann gilt: |W (I) − WASK (I , ε)| ≤ε εASK (I , ε) = OPT WOPT (I) 1 wobei die Laufzeit O ε · n3 ist, d.h. ASK ist ein FPAS. n Beweis. Falls pm ax < 2 · ε , damit ist t = 0 und pi′ = pi. Man erhält optimale Lösung in Zeit ! n X O n· pi ⊆ O(n n pm ax ) i=1 n ⊆ O n2 · ε n Sei also pm ax ≥ 2 · ε . Dann ist die Laufzeit O n+n· n X pi′ i=1 Es gilt dabei Daraus folgt nun aber: ! j ε · pm ax k ε · pm ax t = log ≥ log −1 n n 2t ≥ 1 ε · pm ax · n 2 Dies können wir nun weiterverwenden und erhalten: % n n $ X X pi ′ pi = 2t i=1 i=1 n X pi ≤ 2t i=1 n 1 X = t pi 2 i=1 n · n · pm ax ≤ 2· ε · pm ax n2 ≤ 2· ε ! 3 n X n O n+n· pi ⊆ O ε i=1 44 Techniken Nun müssen wir noch die Fehlerabschätzung beweisen. Sei X die optimale Lösung für Instanz I und Y die gewonnene Lösung, die optimal für I ′ ist. X und Y sind beide zulässige Lösungen für I und I ′ denn ai und b wurden nicht verändert. X pi WASK (I , ε) = i∈Y X p 2t · ti 2 i∈Y $ % X pi t ≥ 2 2t = i∈Y = 2t · WOPT $ (I) % X pi t ≥ 2 2t i∈X X pi ≥ 2t − 1 2t i∈X X = pi − 2t · |X |, |X | ≤ n ? i∈X WO P T ≥ WOPT (I) − n · 2t WOPT (I) − WASK (I , ε) ≤ n · 2t ε · pm ax ≤ n· n ≤ ε · pm ax ≤ ε · WOPT (I) Hier gibts was mit ner Verbesserung des Algorithmus ASK zu ASK+, texmacs ist mir nur abgestürzt ;) Kapitel 4 Klassen von Optimierungsproblemen Definition 4.1. Ein Optimierungsproblem Π liegt in der Klasse NPO gdw. 1. ∀w ∈ Σ∗ kann in Polynomialzeit w ∈ D? entschieden werden, d.h., alle Instanzen I ∈ D können in Polynomialzeit erkannt werden. 2. Es gibt ein Polynom p, so dass für jede Instanz I ∈ D gilt: a. Für jedes zulässige σ ∈ S(I) ist |σ | ≤ p(|I |) b. Für jedes g ∈ Σ∗ mit |y | ≤ p(|I |) kann in Polynomialzeit entschieden werden, ob y ∈ S(I) ist, d.h. ob y eine zulässige Lösung ist. 3. Für jede Instanz I kann zu jeder zulässigen Lösung σ ∈ S(I) der Wert w(σ) in Polynomialzeit berechnet werden. Definition 4.2. (Zusammenhang zwischen Optimierungs- und Entscheidungsproblemen) Sei Π = (D, S , W , goal) ein Optimierungsproblem. Das zugehörige Entscheidungsproblem ist dann die Menge Πent = { < I , k > |I ∈ D, k ∈ N.∃σ ∈ S(I): W (σ) ≤ k} (oder k ≤ W (σ) für Maximierungsproblem). Satz 4.3. Falls Π ∈ NPO, dann gilt Πent ∈ NP. Definition 4.4. Ein Optimierungsproblem Π liegt in der Klasse PO gdw. Π ∈ NPO und zu jeder Instanz I ∈ D kann in polynomieller Zeit eine optimale Lösung berechnet werden. Beispiel 4.5. (Probleme in PO) • SHORTEST PATH • MST • Linear Programming Satz 4.6. Falls PO = NPO ⇒ P = NP Beweis. VERTEX COVER liegt in NPO. Falls PO = NPO, dann kann minimale Kantenüberdeckung in polynomieller Zeit gefunden werden. Dafür erhält man jedoch eine Lösung für das Entscheidungsproblem in poylnomieller Zeit. Dieses ist jedoch ein NP-vollständiges Problem. Definition 4.7. Π ∈ NPO, F = {f |f : N → R} Funktionsmenge 1. Π liegt in der Klasse F-APX gdw. es gibt einen polynomiellen Approximationsalgorithmus A mit relativer Güte RA(n) ∈ F. 2. Fkonst = {f | f ∈ F , ∀i, j ∈ N: f (i) = f (j)} sei die Menge der konstanten Funktionen. APX 4 Fkonst − APX 3. Π liegt in der Klasse (F)PAS, wenn es für Π ein (F)PAS gibt. Satz 4.8. (Hierarchie) PO ⊆ FPAS ⊆ PAS ⊆ APX ⊆ NPO 45 46 Klassen von Optimierungsproblemen Wenn P NP, dann sind alle Inklusionen echt. Beispiel 4.9. • PO: MST,LP • FPAS: KNAPSACK • PAS: euklidisches TSP • APX: BINPACKING, ∆TSP • NPO: TSP Definition 4.10. Π ∈ NPO und mit absoluter konstanter Güte approximierbar. Dann liegt Π in der Klasse ABS (absolut approximierbar). ABS ⊆ APX Definition 4.11. (Asymptotisches polynomielles Approximationsschema) APAS • A Approximationsalgorithmus für Π mit Eingabe: I beliebige Instanz, ε ∈ (0, 1) beliebig • A ist APAS gdw, es gibt eine Konstante k, so dass RA(I , ε) ≤ 1 + ε + k , ∀I WOPT (I) und die Laufzeit ist polynomiell in |I |. • Klasse PAS∞ : alle Π ∈ NPO für die es ein APAS gibt Beispiel 4.12. Binpacking liegt in PAS∞ Es gilt weiterhin: • PAS ⊆ PAS∞ • ABS ⊆ PAS∞ Definition 4.13. (Fixed-parameter Algorithmus) bestimmen eine optimale Lösung für eine beliebige Instanz I, |I | = n und Parameter k in f (k) · nO(1) Schritten. Beispiel 4.14. VERTEX COVER Man kann eine Überdeckung mit Größe k in O(1.28k · n) Nachwort Neben den hier vorgestellten Modellen gibt es noch weitere Ansätze, die hier nicht besprochen werden: • Randomisierte Algorithmen • Derandomisierung • Heuristiken (die oft gut laufen, onhe dass man genau weiß, warum das so ist, z.B. genetische Algorithmen) • Tuning • Fixed-Parameter Algorithmen 47