160 likes | 363 Views
Algorithmen und Komplexität. Sommersemester 2004. NP-vollständige Probleme. SAT und 3-SAT (Masterreduktionen) CLIQUE KNOTENÜBERDECKUNG SUBSETSUM RUCKSACK (einfach: rationaler Rucksack!) HAMILTONKREIS TSP Übungen: PARTITION, BIN PROGRAMMING, COLOR, INDEPENDENT SET, 1in3SAT, ….
E N D
Algorithmen und Komplexität Sommersemester 2004
NP-vollständige Probleme • SAT und 3-SAT (Masterreduktionen) • CLIQUE • KNOTENÜBERDECKUNG • SUBSETSUM • RUCKSACK (einfach: rationaler Rucksack!) • HAMILTONKREIS • TSP • Übungen: PARTITION, BIN PROGRAMMING, COLOR, INDEPENDENT SET, 1in3SAT, …
NP-vollständig – Was nun? • Spezialfälle • Ist wirklich die Lösung des allgemeinen Problems verlangt? • Heuristiken • Im worst-case: exponentielle Laufzeit • Für „manche“ Eingaben: polynomielle Laufzeit • Approximationsalgorithmen • Ziel: für jede Eingabe polynomielle Laufzeit • Lösung ist nicht optimal, aber wir können etwas über die Qualität sagen (z.B. „Wert der Ausgabe ist höchstens doppelt so schlecht wie der Wert einer opt. Lösung“)
Spezialfälle • Ist wirklich die Lösung des allgemeinen Problems verlangt oder liegt ein (einfacher) Spezialfall vor? • Beispiele auf Bäumen: • CLIQUE • HAMILTONKREIS • HAMILTONPFAD • UNABHÄNGIGE MENGE • Weiteres Beispiel: 2SAT liegt in P
Unabhängige Menge auf Bäumen • Eingabe: G=(V,E),r (Baum mit Wurzel r) • Ausgabe: Max. unabhängige Menge I V, so dass • keine zwei Knoten in I verbunden sind • Dynamische Programmierung: • Laufzeit: O(n) !
Spezialfälle • Ist wirklich die Lösung des allgemeinen Problems verlangt oder liegt ein (einfacher) Spezialfall vor? • Beispiele auf Bäumen: • CLIQUE • HAMILTONKREIS • HAMILTONPFAD • UNABHÄNGIGE MENGE • Weiteres Beispiel: 2SAT liegt in P
Das Erfüllbarkeitsproblem (Satisfiability, SAT) • Eine Boole’sche Variable x kann Werte 0 und 1 (falsch und wahr) annehmen. • Eine Boole’sche Formel ist eine Verknüpfung von Boole’schen Variablen durch Boole’sche Operatoren, z.B. AND ( Æ ) , OR ( Ç ), NOT ( : ). • Beispiel: = (:x Ç y) Æ (x Ç :z ) ist eine • Boole’sche Formel mit Variablen x, y, z. • ist erfüllbar, falls es eine Belegung der Variablen mit Werten 0, 1 gibt, die wahr macht. • Beispiel: ist erfüllbar, z. b. durch x=1, y=1, z=0.
Das Erfüllbarkeitsproblem (Satisfiability, SAT) • SAT = { <> | ist erfüllbare Boole‘sche Formel} • SAT ist NP-vollständig
Konjunktive Normalform (KNF) • Literal: Variable oder negierte Variable • Klausel: Disjunktion K von Literalen, • K= y1Ç … Ç ym, yi Literale • Formel in Konjunktiver Normalform (KNF): Konjunktion von Klauseln, • = K1Æ … Æ Kl , Ki Klauseln • k-SAT Formel: Formel in KNF, in der jede Klausel aus genau k Literalen besteht. • k-SAT= { <> | ist erfüllbare Boole‘sche • k- SAT Formel}
2-SAT liegt in P • 2-SAT= { <> | ist erfüllbare Boole‘sche 2-SAT • Formel} • = K1Æ … Æ Kl , Ki: Disjunktion zweier Literale Menge der Variablen: x1,…,xn • B sei Belegung der Variablen: • B(xi)=1 falls B die Variable xi auf wahr setzt • B(xi)=0 sonst • B()=1 | 0 allgemein für ein Literal • Da 2-SAT: Ki = i i • Beobachtung: B(i)=0, dann muss B(i)=1
2-SAT liegt in P • Gerichteter Graph G=(V,E): • V := {x1,:x1,…,xn,:xn} • E := { (,) | enthält : oder : } • := { (:, ),(:,) | enthält } • denn: (: ) (: ) • Beispiel: • := (:x1 x2) (:x2 x3) (x1 :x3) (x3 x2) • Woran ist zu erkennen, ob erfüllbar ist?
2-SAT liegt in P • Satz: • 2KNF Formel ist unerfüllbar Variable xi: • 1. es existiert in G ein Weg von xi nach :xi • 2. es existiert in G ein Weg von :xi nach xi • Beweis: „“ Führe Belegung für xi zum Widerspruch. • „“ Ann. es ex. keine solche Variable, dann • konstruieren wir eine erfüllende Belegung
2-SAT liegt in P • „“ Ann. es ex. keine solche Variable, dann • konstruieren wir eine erfüllende Belegung: • Solange noch nicht alle Variablen belegt sind: • Wähle bel. Variable xi, die noch nicht belegt ist • Falls Pfad von xi nach :xi existiert, setze a=0 sonst a=1 • Setze alle von xi aus erreichbaren Literale auf a • Setze die entsprechenden Negationen auf :a • Beobachtung: • Falls der Graph einen Weg von nach enthält, so • enthält er auch einen von : nach : (Definition).
2-SAT liegt in P • Satz: 2SAT liegt in P • Nach Satz 2.2.2: • Path={ <G,s,t> | G=(V,E) ist ein gerichteter Graph mit s, t V und einem gerichteten Weg von s nach t} P • Algorithmus für 2SAT: • Konstruiere G • Prüfe für jede Variable xi, ob es einen Pfad von xi nach :xi gibt und umgekehrt • Verwerfe, falls Variable xi gefunden wurde, für die beide Pfade in G existieren. Ansonsten akzeptiere. • Laufzeit: poly(n).
Max2SAT ist NP-vollständig • Max2SAT= { <,k> | ist Boole‘sche 2-SAT Formel, für die es eine Belegung gibt, die mindestens k Klauseln erfüllt} • Bemerkung: • Max2SAT ist NP-vollständig! • Beweisidee: • 1) Max2SAT liegt in NP • 2) 3SAT p Max2SAT
Vorschau • Heuristiken • Backtracking • Branch-and-Bound • Lokale Verbesserung • Approximationsalgorithmen • Max-Cut Problem • Problem des Handlungsreisenden • Rucksackproblem