260 likes | 428 Views
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. Einleitung DPLL, Tableau, Effizienzsteigerungen Heuristiken BCP SAT-Solver: Grasp
E N D
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 • 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 • Forward Checking • Lookback • 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 Klausel-Größ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 maximal ist. Dabei ist 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 maximiert wird. f(v) ist dabei die Anzahl des Auftretens eines Literals v in den kleinsten ungelösten Klauseln und k ein tuning-Parameter. • 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 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() • Choice Point mit Heuristik • Deduce() • BCP • Success / Conflict • Diagnose() • 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 - Konfliktanalyse • Struktur des Konflikts wird analysiert • Clause Learning • Alle Variablenbelegungen, die ursächlich zum Konflikt geführt haben, können der Klausel-DB als Klausel hinzugefügt werden Conflict induced Clauses • Failure Driven Assertions • 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-DB-Wachstum • 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.