Approximations-Algorithmen Institut für Computergraphik und Algorithmen Abteilung für Algorithmen und Datenstrukturen 186.102 Sommersemester 2004, 2h VU Motivation: – Bereits viele einfache Optimierungsprobleme wie z.B. Routenplanung, Zeiteinteilung und Packungsprobleme können nicht effizient exakt gelöst werden. – Gute Näherungsmethoden, das heißt Approximations-Algorithmen, werden gesucht. – Aber was ist „gut“? Beispiel: Bin Packing gegeben: n Pakete mit unterschiedl. Gewichten und Container (bins) mit fester Kapazität. gesucht: Zuordnung der Pakete in möglichst wenige Container. Analyse: Wie gut oder wie schlecht sind einfache und kompliziertere Näherungsverfahren ? Zeit: drei Blöcke zu je drei Tagen: – 10.3.-12.3., 24.3.-26.3., 21.4.-23.4. – Mittwoch, Donnerstag 15:00-18:00 – Freitag 13:00-16:00 Ort: Seminarraum 186, Favoritenstr. 9, 5.Stock Sprechstunde: Während der drei Blöcke bin ich am Institut erreichbar. Kontakt in Graz: Tel.: 0316-380-3496 [email protected] Ablauf: Die VU besteht aus Vorlesung und Übungen, die aber zeitlich flexibel integriert abgehalten werden. Zur Vorlesung gibt es teilweise ein Folienskriptum im WWW: www.ads.tuwien.ac.at/teaching/ss04/186102.html Voraussetzungen: – Algorithmen und Datenstrukturen 1 – Freude an der Analyse von Algorithmen Beurteilung: – aktive Mitarbeit – Bearbeitung von Übungsbeispielen (Übungsblätter) – Mündliche Abschlußprüfung (vorgesehener Termin: 23.4., weitere Termin nach Vereinbarung) Vortragender: a.o.Univ.-Prof. Dr. Ulrich Pferschy Universität Graz Institut für Statistik und Operations Research Inhalt: – Welche Probleme ? • kombinatorische Optimierung • TSP, scheduling, bin-packing, vertex covering,… – Wie mißt man die Qualität der Approximation? • Definitionen der Approximationsgüte – Wie gut sind einfache Heuristiken? • Worst-case Analyse von intuitiven Algorithmen – Vorgabe der Abweichung vom Optimum? • ε - Approximationsschemata Literatur: D.S. Hochbaum, Approximation algorithms for NP-hard problems, PWS Publishing Company, 1997. V.V. Vazirani, Approximation Algorithms, Springer, 2001. G. Ausiello et al., Complexity & Approximation, Springer, 1999. J. Hromkovic, Algorithmics for hard problems, Springer, 2001. Lecture Notes aus dem Internet von R. Motwani (Standford University) D.P. Williamson (IBM Almaden Research Center) M.X. Goemans (MIT) Approximationsalgorithmen Ulrich Pferschy 1 Approximationsalgorithmen Approximation im Sinne der Analysis: Satz von Weierstrass: (1815-1897) Sei f eine stetige Funktion auf [a, b]. Dann gibt es zu jedem ε > 0 ein Polynom Pε mit: max |f (x) − Pε(x)| < ε x∈[a,b] Numerische Mathematik: Numerical Recipes in C++ www.nr.com Approximationsalgorithmen Ulrich Pferschy 2 Approximation von diskreten, kombinatorischen Problemen: Betrachtung einzelner Objekte, Identitäten oder abstrakter Elemente mit ganzzahligen Daten Motiviert aus praktischen Problemstellungen Klassische Probleme der diskreten Optimierung: • Scheduling • Graph-Probleme (Überdeckung, Färbung, Partition) • Netzwerkprobleme • Routen- und Tourenplanung • TSP • Packungs- und Zuschnittprobleme • ... Approximationsalgorithmen Einleitung 3 • Multi-Prozessor Scheduling: gegeben: n jobs/Aufträge, jeder mit Bearbeitungszeit pi, m Maschinen Problem: Ordne jeden job einer Maschine zu, sodaß der Gesamt-Fertigstellungszeitpunkt minimal ist. • Bin Packing Problem (BP): gegeben: n Objekte, jedes mit Gewicht ai ∈ (0, 1], beliebig viele Container/bins mit Kapazität 1 Problem: Packe alle Objekte in minimale Anzahl von bins Approximationsalgorithmen Einleitung 4 • Rucksackproblem / Knapsack Problem (KP): gegeben: n Objekte, jedes mit Profit pi und Gewicht wi, ein Rucksack/Container/bin mit Kapazität c Problem: Wähle eine Teilmenge von Objekten mit maximalem Profit und Gewicht ≤ c. • Subset Sum Problem (SSP): Spezialfall des Rucksackproblems gegeben: n Objekte, jedes mit Gewicht wi, ein Rucksack/Container/bin mit Kapazität c Problem: Wähle eine Teilmenge von Objekten mit maximalem Gewicht ≤ c. Approximationsalgorithmen Einleitung 5 • Maximum Cut Problem (Max Cut): gegeben: Graph (V, E) mit Kantengewichten wij für jede Kante (i, j) ∈ E. Problem: Finde eine Knotenmenge S ⊆ V mit maximalem P i∈S,j6∈S wij (Kanten zwischen S und V \ S). • Minimal spannender Baum / Minimum Spanning Tree (MST): gegeben: Graph (V, E) mit Kantengewichten dij = dji für jede Kante (i, j) ∈ E. Problem: Finde einen Baum, der alle Knoten enthält mit minimalem Gesamtgewicht. Approximationsalgorithmen Einleitung 6 • (Symmetrisches) Rundreiseproblem / Traveling Salesperson Problem (TSP): gegeben: n Städte mit allen (symmetrischen) Entfernungen. Problem: Finde die kürzeste Rundreise, die alle n Städte besucht. • Variante: Minimaler Hamiltonscher Kreis: gegeben: Graph (V, E) mit Kantengewichten dij = dji für jede Kante (i, j) ∈ E. Problem: Finde einen Hamiltonschen Kreis mit minimalem Gesamtgewicht. Approximationsalgorithmen Einleitung 7 • Set Covering Problem (SC): gegeben: Grundmenge M , Familie von Teilmengen {S1, . . . , Sm}, Si ⊆ M , Bewertung wi für jede Menge Si. Problem: Finde eine Auswahl der Teilmengen mit minimalem Gesamtgewicht, sodaß jedes Element aus M in einer der ausgewählten Teilmengen enthalten ist. • Vertex Cover (VC): gegeben: Graph (V, E) Problem: Finde eine minimale Knotenmenge C ⊆ V , sodaß für jede Kante (i, j) entweder i ∈ C oder j ∈ C. Approximationsalgorithmen Einleitung 8 • Knotenfärbung von Graphen/Graph Colouring: gegeben: Graph (V, E), beliebig viele Farben. Problem: Ordne jedem Knoten eine Farbe zu, sodaß Knoten, die durch eine Kante verbunden sind, verschiedene Farben haben und eine minimale Gesamtzahl von Farben verwendet werden. • Kantenfärbung von Graphen: gegeben: Graph (V, E), beliebig viele Farben. Problem: Ordne jeder Kante eine Farbe zu, sodaß Kanten mit gemeinsamen Endknoten verschiedene Farben haben und eine minimale Gesamtzahl von Farben verwendet werden. Approximationsalgorithmen Einleitung 9 Erwünscht: Optimale Lösung N P-Vollständigkeit: =⇒ Bei fast allen “ interessanten” Problemen gibt es kein effizientes optimales Lösungsverfahren, d.h. keinen Algorithmus mit polynomialer Laufzeit 1. Optimale Lösung durch “ intelligente” Enumeration • Branch & Bound • IP-Formulierung, Branch & Cut • Dynamisches Programmieren • ... 2. Verzicht auf Optimalität =⇒ Approximation Bestimmt wird eine zulässige Lösung. Qualität der Lösung ist i.A. unbekannt. Unterscheide: Suchverfahren (local search, Metaheuristiken, etc.) konstruktive Verfahren Approximationsalgorithmen Bewertung 10 Bewertung von Approximationsalgorithmen 1. empirische Tests 2. average-case Analyse 3. worst-case Analyse Approximationsalgorithmen Bewertung 11 Güte eines Algorithmus A für ein Optimierungsproblem: Unterscheide: Problem vs. Problem-Instanz I (Näherungs-)Algorithmus A liefert Lösungswert A(I) (unbekannte) Optimallösung wäre Opt(I) Definition: Algorithmus A ist ein Approximationsalgorithmus wenn A für jede Instanz I eine zulässige Lösung liefert. Definition: Ein Approximationsalgorithmus A hat eine absolute Gütegarantie k, (k > 0), wenn für jede Instanz I gilt: |Opt(I) − A(I)| ≤ k Bemerkung: Def. gilt für Maximierungs- und Minimierungsprobleme. Approximationsalgorithmen Bewertung 12 Graph Colouring (Knoten): Von besonderem Interesse ist die Färbung von planaren Graphen. Satz: (Four Colour Theorem: Appel, Haken, Koch 1977) Jeder planare Graph ist 4-färbbar. Satz: Ein planarer Graph ist genau dann 2-färbbar, wenn er bipartit ist. Satz: Das Entscheidungsproblem “Ist ein gegebener planarer Graph 3-färbbar” ist N P-vollständig. Eine 5-Färbung eines planaren Graphen ist relativ einfach zu bestimmen. Auch die 4-Färbung ist in O(n2) möglich (Robertson et al. 1996), aber sehr aufwendig. =⇒ Färbung von planaren Graphen kann mit einer absoluten Gütegarantie ≤ 2 approximiert werden. Approximationsalgorithmen Bewertung 13 Graph Colouring (Kanten): Sei ∆(G) der maximale Grad eines Knoten in G. Satz von Vizing: Jeder Graph G ist kantenfärbbar mit ∆(G) oder ∆(G) + 1 Farben. =⇒ Kantenfärbung von beliebigen Graphen kann mit einer absoluten Gütegarantie von 1 approximiert werden. =⇒ Ist die absolute Gütegarantie das perfekte Konzept?? Negatives Resultat: Satz: Es gibt keinen polynomiellen Algorithmus für das Rucksackproblem (KP) mit einer absoluten Gütegarantie k, für irgendein k > 0 (wenn P6= N P). Approximationsalgorithmen Bewertung 14 Maximierung: Definition: Ein Approximationsalgorithmus A für ein Maximierungsproblem hat eine relative Gütegarantie k,(0 < k < 1), wenn für jede Instanz I gilt: A(I) ≥ k · Opt(I) kurz: A ist ein k–Approximationsalgorithmus. Betrachte die relative Abweichung: Opt(I) − A(I) ≤ ε ⇐⇒ A(I) ≥ (1 − ε)Opt(I) Opt(I) Ein Approximationsalgorithmus A mit relativer Abweichung ε ist ein (1 − ε)–Approximationsalgorithmus. Approximationsalgorithmen Bewertung 15 Minimierung: Definition: Ein Approximationsalgorithmus A für ein Minimierungsproblem hat eine relative Gütegarantie k, (k > 1), wenn für jede Instanz I gilt: A(I) ≤ k · Opt(I) auch hier: A ist ein k–Approximationsalgorithmus. wiederum die relative Abweichung: A(I) − Opt(I) ≤ ε ⇐⇒ A(I) ≤ (1 + ε)Opt(I) Opt(I) Ein Approximationsalgorithmus A mit relativer Abweichung ε ist ein (1 + ε)–Approximationsalgorithmus. Zusatz: Eine relative/absolute Gütegarantie eines Algorithmus A ist scharf, wenn es eine Instanz I gibt, sodaß die entsprechende Ungleichung mit Gleichheit erfüllt ist. Oder wenn es eine Folge von Instanzen gibt, sodaß die Gleichheit im Grenzwert gilt. Bewertung 16 Approximationsalgorithmen Definition: (Minimierung) Ein Approximationsalgorithmus A für ein Minimierungsproblem hat eine asymptotische Gütegarantie k, (k > 1), wenn es eine Konstante d gibt, sodaß für jede Instanz I gilt: A(I) ≤ k · Opt(I) + d oder technischer: k= lim Opt(I)→∞ A(I) sup I Opt(I) Approximationsalgorithmen Einfache Algorithmen 17 • Multi-Prozessor Scheduling: gegeben: n jobs/Aufträge, jeder mit Bearbeitungszeit pi, m Maschinen Problem: Ordne jeden job einer Maschine zu, sodaß der Gesamt-Fertigstellungszeitpunkt minimal ist. Algorithmus List-Scheduling (Graham): `j := 0 Arbeitszeit von Maschine j = 1, .., m for i := 1 to n do jmin := arg min{`j } ordne job i auf Maschine jmin an. `jmin := `jmin + pi end for Gesamtzeit := max{`j } List-Scheduling hat eine scharfe Gütegarantie von 2 − m1 . Verbesserung: (LPT) Longest-Processing Time List-Scheduling Sortiere die jobs in absteigender Reihenfolge. 1 (LPT) hat eine scharfe Gütegarantie von 43 − 3m . Approximationsalgorithmen Einfache Algorithmen 18 • Bin Packing Problem (BP): gegeben: n Objekte, jedes mit Gewicht ai ∈ (0, 1], beliebig viele bins mit Kapazität 1 Problem: Packe alle Objekte in minimale Anzahl von bins Naive Methode: Algorithmus Next Fit (NF): öffne das erste bin for i := 1 to n do wenn Objekt i in das offene bin paßt packe es dort hinein sonst schließe das offene bin öffne ein neues bin und packe Objekt i ein end for (NF) läuft in O(n) Zeit. (NF) hat eine scharfe asymptotische Gütegarantie von 2. Approximationsalgorithmen Einfache Algorithmen 19 Algorithmus First Fit (FF) (Johnson et al.): öffne das erste bin for i := 1 to n do betrachte die offenen bins der Reihe nach packe Objekt i in das erste bin, wo es paßt wenn es nirgends paßt öffne ein neues bin und packe Objekt i ein end for (FF) läuft in O(n log n) Zeit. (FF) hat eine scharfe asymptotische Gütegarantie von 1.7. Verbesserung: First Fit Decreasing (FFD) (Johnson) Sortiere die Objekte in absteigender Reihenfolge. (FFD) hat eine scharfe asymptotische Gütegarantie von Varianten: Best Fit, Worst Fit, Any Fit,.... 11 9. Approximationsalgorithmen Einfache Algorithmen 20 • Allgemeines Rundreiseproblem (TSP): gegeben: n Orte mit allen paarweisen Entfernungen. Problem: Finde die kürzeste Tour durch alle n Orte. Negatives Resultat: Satz: Es gibt keinen polynomiellen Algorithmus für das allgemeine TSP mit einer Gütegarantie k, für irgendein k > 0 (wenn P6= N P). • Rundreiseproblem mit Dreicksungleichung (∆-TSP): Zusatzbedingung: Für alle Tripel von Orten i, j, k gilt: d(i, j) + d(j, k) ≥ d(i, k) MST-Heuristik liefert Gütegarantie 2. Christofides-Heuristik liefert Gütegarantie 3/2. Approximationsalgorithmen Einfache Algorithmen 21 ∆-TSP Fortsetzung: Einfüge-Heuristik: (verwendbar auch ohne Dreiecksungleichung.) Algorithmus Insertion: repeat (∗) wähle einen Punkt k nicht auf der Tour suche Kante (i, j) der Tour mit minimalen Einfügekosten: d(i, k) + d(k, j) − d(i, j) füge k zwischen i und j ein until alle Punkte eingefügt Auswahl von Punkt k: nearest insertion farthest insertion cheapest insertion random insertion Approximationsalgorithmen Einfache Algorithmen 22 Approximations-Resultate für Insertion: Für jede Insertion-Regel gilt (Rosenkrantz et al.’77): A(I) ≤ (log n + 1) Opt(I) Es gibt Instanzen I und Insertion-Folgen mit log n A(I) ≥ Opt(I). log log n Nearest Insertion hat eine scharfe Gütegarantie von 2. Wenn nearest insertion mit der konvexen Hülle beginnt, verschlechtert sich die Gütegarantie auf 3 (Warburton’93). Farthest Insertion: In der Praxis besser, aber Gütegarantie ≥ 2.43 (Hurkens,’92), genaue Garantie unbekannt. Random Insertion: (Azar’94) Es gibt Instanzen I mit A(I) ≥ log log n log log log n Opt(I). Approximationsalgorithmen Einfache Algorithmen 23 Verbesserungs-Verfahren: Algorithmus 2-Opt: starte mit irgendeiner Tour repeat wähle 2 Kanten der Tour und entferne sie füge die Teilstücke zu neuer Tour zusammen Tour := min{neue Tour, alte Tour} until keine Verbesserung möglich Viele Varianten zur systematischen Durchführung. Jede 2-optimale Tour ist kreuzungsfrei. Für jede 2-optimale Tour T gilt (Chandra et al.’94): T ≤ log n Opt Es gibt 2-optimale Touren T mit log n T ≥ Opt. log log n • Euklidsches Rundreiseproblem: Orte sind Punkte im R2: Beliebig gute Approximation in polynomieller Zeit möglich. Approximationsalgorithmen Einfache Algorithmen 24 • Rucksackproblem/Knapsack Problem (KP): gegeben: n items, jedes mit Profit pi und Gewicht wi, ein Rucksack/bin mit Kapazität c Problem: Wähle eine Teilmenge von items mit maximalem Profit und Gewicht ≤ c. Algorithmus einfacher Greedy: Sortiere die items nach Effizienz: p1 p2 pn ≥ ≥ . . . ≥ w1 w2 wn for i := 1 to n do if item i paßt in den Rucksack pack es ein end for Einfacher Greedy kann unbeschränkt schlecht werden. Verbesserter Algorithmus Greedy: Sei z E . . . der Wert des Rucksacks nach einfacher Greedy. z G := max{z E , max{pi | i = 1, . . . , n}} Greedy hat eine scharfe Gütegarantie von 1/2. Approximationsalgorithmen Einfache Algorithmen 25 Beachte: ein einziges “großes” item hat Haupteinfluß. Verbesserung: “Rate” das item mit größtem Profit in der Optimallösung. =⇒ alle items durchprobieren. Algorithmus G2/3: for i := 1 to n do packe item i in den leeren Rucksack wende Greedy auf das Restproblem mit Kapazität c − wi an end for z A := Maximum der n Rucksack-Lösungen G2/3 hat eine scharfe Gütegarantie von 2/3. Verallgemeinerung: “Rate” die 2 items mit größtem Profit in der Optimallösung. =⇒ alle Paare von items durchprobieren. =⇒ scharfe Gütegarantie von 3/4. Einfache Algorithmen 26 Approximationsalgorithmen Weitere Verallgemeinerung: “Rate” die ` items mit größtem Profit in der Optimallösung. =⇒ alle `-Tupel von items durchprobieren. =⇒ scharfe Gütegarantie von `+1 `+2 . Laufzeit: n ` `+1 Tupel =⇒ O(n ) viele Greedy Iterationen =⇒ O(n ) ` Verbesserung auf O(n`) möglich.