Definition:
Das Problem Satisfiability (Erfüllbarkeit) ist die Frage, ob eine boolesche Formel erfüllbar ist. Man betrachtet meist Spezialfälle:
- 2-SAT ist eine boolesche Formel in Normalform mit 2 Literalen pro Klausel,
- 3-SAT ist eine boolesche Formel in Normalform mit 3 Literalen pro Klausel,
- SAT ist eine allgemeine boolesche Formel, wobei sich dieses Problem in polynomialer Zeit auf 3-SAT reduzieren lässt.
Wenn die Formel nicht erfüllbar ist, will man zumindest wissen, wie die freien Variablen zu wählen sind,
damit möglichst viele Klauseln erfüllt sind.
Dieses Problem heißt MAX-SAT, ein Spezialfall ist MAX-2-SAT.
Effiziente Lösung von 2-SAT:
Baue Graph:
- Knoten: Literale und negierte Literale
- gerichtete Kante von zu : wenn false, dann muss true sein
Die Formel ist genau dann unerfüllbar, wenn ein Kreis existiert, Test in
Aber: MAX-2-SAT ist -schwer.
Approximationsalgorithmus für MAX-2-SAT: (Greedy-Variante)
Nimm eine Variable nach der anderen und setze sie auf 0 oder 1, so dass möglichst viele Klauseln erfüllt werden.
Von Klauseln werden immer min.
erfüllt.
Approximationsalgorithmus für MAX-2-SAT: (Randomisierte Variante)
Für jede zufällige Belegung werden im Erwartunswert
Klauseln erfüllt (OR-Verknüpfung).
Daher muss es eine Belegung mit min.
erfüllten Klauseln geben.
Korollar: Satisfiability