Vollständige SAT-Solver
Vortrag im Rahmen des Seminars
Automatic Problem Solving
Lehrstuhl für Wissensverarbeitung, Prof. Dr. Torsten Schaub
Universität Potsdam
Ben Hildebrand, Mario Wegner
Gliederung
1.
2.
3.
4.
5.
Einleitung
DPLL, Tableau, Effizienzsteigerungen
Heuristiken
BCP
SAT-Solver:
Grasp
Sato
Chaff
BerkMin
siege
Einleitung
SAT-Problem: Bestimmung einer
Variablenbelegung v, so dass Formel f wahr
Grundverfahren
DPLL Vollständig
Lokale Suchalgorithmen Unvollständig
Vollständigkeit
Existiert eine Lösung, wird diese auch gefunden
Der Algorithmus terminiert nach endlicher Laufzeit
ohne Lösung, wenn Problem keine Lösung hat
DPLL-Grundlage
while (true)
{
if (!decide()) // if no unassigned vars
return(satisifiable);
while (!bcp())
{
if (!resolveConflict())
return(not satisfiable);
}
}
bool resolveConflict()
{
d = most recent decision not ‘tried both ways’;
if (d == NULL) // no such d was found
return false;
flip the value of d;
mark d as tried both ways;
undo any invalidated implications;
return true;
}
Tableau
Nummerierung von Variablen und Klauseln
Jede Variable hat
Feld für aktuellen Wert
Jeweils eine Liste für Regeln in denen es positiv
bzw. negativ vorkommt
Jede Regel hat
Liste von Literalen
Erfüllt-Feld
Anzahl unbelegter Variablen
Tableau
Unit-Propagation -> Literale kommen auf
Stack
Hole letztes Literal vom Stack
Markiere mit der gewählten Wahrheitszuweisung
Markiere jede Klause, in der es positiv vorkommt als
erfüllt
Alle Klauseln, in denen es negativ vorkommt
Wenn Klausel nicht schon erfüllt -> Erniedrige Zähler der
Klausel um 1
Wenn Zähler = 1
Lege das unbelegte Literal auf den Stack
Merke alle Änderungen, damit Backtracking
möglich ist
Effizienzsteigerung
Lookahead
Auswertung von Informationen über verbleibenden Suchraum
Entscheidungs-Heuristiken
Konsistenzsicherungsmechanismen
Lookback
Forward Checking
Auswertung des bereits durchsuchten Raumes
Backjumping (intelligentes Backtracking)
Clause Learning
Propagationsmechanismus
Die meisten modernen SAT-Solver nutzen Mechanismen aus
allen Kategorien
Heuristiken
Decision-Belegungen hängen von der Entscheidung ab, welche
Variable ausgesucht werden soll
Strategie bestimmt Variable und so den Suchbaum
schwer zu entscheiden, welche Strategie besser bzw. zu
bevorzugen ist
Anzahl der Entscheidungen/Konflikte? bewirken nicht alle die gleiche
Anzahl von BCP-Operationen
Nicht alle Entscheidungen haben den gleichen Rechenaufwand
Suche nach der schnellsten Strategie
RAND
Auswahl der nächsten Entscheidung zwischen unbelegten
Variablen per Zufall
Formula simplification heuristics
Formel F1 ist dann simpler als Formel F2, wenn g(F1) > g(F2),
wobei g eine eine exponentiell gewichtete Summe der KlauselGröße für eine gegebene Formel berechnet
Variablen werden nach Stärke eine Formel zu vereinfachen
sortiert und vorrangig ausgewählt
g(F|x) · g(F|¬x) soll maximiert werden
Literal count heuristics
Einstufung der Variablen anhand der Anzahl ihres Auftretens in
unerfüllten Klauseln
Variable mit dem höchsten Auftreten wird dann ausgewählt
CP(v) = Anzahl des Auftretens von v in unerfüllter Klausel
CN(v) = Anzahl des Auftretens von ¬v in unerfüllter Klausel
DLCS (dynamic largest combined sum) heuristic:
wähle v so, dass CP(v) + CN(v) maximal
DLIS (dynamic largest individual sum) heuristic
wähle v so, dass CP(v) oder CN(v) maximal
Bohm‘s Heuristik
Wähle ein Literal v, für dass der Vektor mit den Komponenten
Hi max{hi (v), hi (v)} min{hi (v) hi (v)}
maximal ist. Dabei ist hi die Anzahle der ungelösten Klauseln
der Länge i (verbleibende Literale), in denen v auftritt…α und β
werden experimentell ausgewählt
Bevorzugt für Literale, die
kleine Klauseln erfüllen, wenn sie auf true gesetzt werden
die Größe von kleinen Klauseln weiter reduzieren, wenn sie auf
false gesetzt werden
MOM‘s Heuristik
(Maximales Auftreten in Klauseln minimaler Länge)
Wähle Literal v, so dass
2k ( f (v) f (v)) f (v) f (v)
maximiert wird. f(v) ist dabei die Anzahl des Auftretens eines
Literals v in den kleinsten ungelösten Klauseln und k ein tuningParameter.
Bevorzugt für Klauseln mit einem hohen Auftreten von v oder
¬v
Fokus ist auf den aktuell kleinsten Klauseln
Jeroslaw-Wang-Heuristik
Für ein gegebenes Literal v sei
J (v) 2|c|
c
wobei c = unerfüllte Klausel, in der v auftritt
JW-OS (one-sided): wähle ein v, für das J(v) maximal ist
setze v auf wahr
JW-TS (two-sided): wähle ein v, für das J(v) + J(¬v) maximal
ist
für J(v) ≥ J(¬v) setze v auf wahr, sonst
auf falsch
Boolean Constraint Propagation
(BCP)
Aufgabe:
Identifikation von unit-Klauseln nach einer Variablenbelegung
Erzeugen einer Implikation
BCP - 90% der Laufzeit eines DLL-Solvers
Wird häufig ausgeführt
Arbeitet weit gefächert und nicht-sequentiell über Datenstruktur
„anschauen“ einer Klausel ist sehr kostenaufwendig
Problem:
Datenstruktur um vieles größer als L2-Cache
Industrie-Formeln haben hunderttausende Klauseln und Millionen Literale
Clause-learning lässt Formel wachsen
Variablenbelegung wirkt sich auf viele Klauseln aus
Nur ein winziger Teil der Formel im Cache
Große Cache-Miss-Rate
bottleneck
Ziel: BCP optimieren
GRASP
Basis: DPL-Prozedur
Features
Entscheidungsebenen
Nichtchronoligisches Backtracking Backjumping
Kausalitätsketten Implikationsgraphen
Clause Learning
Suchalgorithmus
Decide()
Deduce()
BCP
Success / Conflict
Diagnose()
Choice Point mit Heuristik
Clause Learning: Aus Konflikten werden neue Formeln gewonnen
Erase()
Implementiert Backjumping
GRASP
Choice-Heuristik
Verschiedene Heuristiken implementiert
Standard:
Variable und Belegung, die die meisten Klauseln erfüllt,
wird gewählt
Dadurch auch hohe Wahrscheinlichkeit, in der Propagation
viel zu produzieren
Greedy
GRASP – Decision Levels,
Implikationsgraphen
GRASP - Konfliktanalyse
Struktur des Konflikts wird analysiert
Clause Learning
Failure Driven Assertions
Alle Variablenbelegungen, die ursächlich zum Konflikt geführt
haben, können der Klausel-DB als Klausel hinzugefügt werden
Conflict induced Clauses
Wird der Konflikt unter anderen durch die aktuelle Belegung der
Decision Variable ausgelöst, kann diese mit umgekehrtem Wert
angenommen werden
Conflict-Directed Backtracking
Wenn alle konfliktauslösenden Variablen auf einer frühreren
Entscheidungsebene als aktuell Backjump zur höchsten
enthaltenen Ebene
Vorteil: Nutzlose Traversierung von Suchraum ohne Lösungen wird
vermieden
GRASP - Konfliktanalyse
Space Bounded Diagnosis
Problem bisher: Anzahl der Konfliktklauseln steigt mit der Anzahl
der Backtracks im schlechtesten Fall exponentielles Klausel-DBWachstum
Lösung: Einteilung in grüne und rote Konfliktklauseln abhängig von
Größenparameter k
Grün: normale Handhabung
Rot: nur, solange erfüllt, unerfüllt, oder Unit. Sonst: Löschung
Unique Implication Points
Umfangreichere Konfliktanalyse stärkere implizierte
Konfliktklauseln (weniger Literale)
Dominators
SATO
Basiert auf DLL-Algorithmus
Hauptmotivation war das Lösen von Latin Square Problemen
nutzt optimierten BCP THL BCP (tail to head literals BCP)
Hier werden immer nur die Head- und Tail-Literale beobachtet
2 Techniken haben sehr zur Verbesserung von SATO beigetragen:
Kombination der Heuristiken formula simplification und literal
count
Konfliktanalyse durch intelligentes „backjumping“
CHAFF
arbeitet mit DP-Algorithmus
scheduled lazy clause deletion
Restart
Konfliktanalyse, conflict clause addition und UIP-Identifikation wie bei
GRASP
benutzt optimierten BCP TWL BCP (two watched literals BCP)
2 Literale einer Klausel werden beobachtet
Solange nicht eines der beiden Literale auf 0 gesetzt wird, wird
die Klausel nicht besucht
verwendet Variable State Independent Decaying Sum (VSIDS) Heuristik
Counter für Literale, welcher inkrementiert wird, wenn eine
Klausel zur Datenbank hinzugefügt wird, in der das Literal
auftritt
Im Fall einer notwendigen Entscheidung wird das Literal mit
dem höchsten Counter gewählt
BerkMin
Nutzt die Entwicklungen von GRASP, CHAFF, SATO
Neuerungen
Organisation der gelernten Konfliktklauseln
Zeitlich geordneter Stack
Neueste (gelernte) Klauseln liegen ganz oben
Grund: Neue Klauseln haben mehr Propagationspotenzial als
alte
Andere Berechnung der Variablenaktivität
Aktivität = Anzahl Klauseln, die für Konflikte verantwortlich sind
und in denen diese Variable vorkommt
Periodische Abwertung wie in Chaff, jedoch mit stärkerem
Faktor
BerkMin
Neuerungen
Choice – Heuristik
1. Basis: Chronologische Reihenfolge der Konfliktklauseln
Erste Konfliktklausel vom Stack: Variable mit
Max(Aktivität(Variable)) wird verwendet
2. Wenn keine Konfliktklauseln auf Stack:
Max(Aktivität(Variable))
Neues Klausel-DB-Management
Vor jeder Iteration
Konflikt-Klauseln werden entfernt
Unwichtige (gemessen an ihrer Aktivität)
Zu große
Datenstrukturen werden physisch zusammengeschoben
siege
basiert auf DLL
Verwendete Heuristik:
VMFT (variable move-to-front decision) heuristic
Counter für Variablen + Variablenliste
Score-Schema kann durch VSIDS ergänzt werden
Binary und ternary clause BCP (Erweiterung von TWL BCP)
Referenzen
[LA97] C. Li and Anbulagan. Heuristics based on unit propagation for satisability problems.
In Proceedings of the 15th International Joint Conference on Articial Intelligence (IJCAI'97),
pages 366-371, 1997.
[BS96] R. Bayardo and R. Schrag. Using csp look-back techniques to solve exceptionally
hard sat instances. In Proceedings of the 2nd International Conference on Principles and
Practice of Constraint Programming (CP'96), pages 46-60, 1996.
[MSS99] J. Marques-Silva and K. Sakallah. Grasp: A search algorithm for propositional
satisability. IEEE Transactions on Computers, 48(5):506-521, 1999.
[Zha97] H. Zhang. Sato: an ecient propositional prover. In Proceedings of the 14th
International Conference on Automated Deduction (CADE'97), pages 272-275, 1997.
[MMZ+01] M. Moskewicz, C. Madigan, Y. Zhao, L. Zhang, and S. Malik. Cha: Engineering an
ecient sat solver. In Proceedings of the 38th Conference on Design Automation (DAC'01),
pages 530-535, 2001.
[GN02] E. Goldberg and Y. Novikov. Berkmin: A fast and robust sat solver. In Proceedings of
the 5th Conference on Design, Automation and Test in Europe (DATE'02), pages 142-149,
2002.
[Rya04] L. Ryan. Ecient algorithms for clause-learning sat solvers. Master's thesis, Simon
Fraser University, 2004.