Verifikation reaktiver Systeme - Universität Kaiserslautern
Verifikation reaktiver Systeme - Universität Kaiserslautern
Verifikation reaktiver Systeme - Universität Kaiserslautern
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
129<br />
B.1 GRASP –Generic seaRch Algorithm for the Satisfiability<br />
Problem<br />
GRASP ist eine Programmbibliothek von Silva und Sakallah [17], die verschiedene<br />
bekannte Optimierungen für das Davis-Logemann-Loveland (Abschnitt 2.1)<br />
implementiert.<br />
Die wichtigsten Merkmale von GRASP sind:<br />
Nicht-chronologisches Backtracking (vgl. Abschnitt 5.5) für SAT-Probleme<br />
wurde erstmals von GRASP angewandt und baut auf den Erkenntnissen<br />
von BCP (Abschnitt 4.3).<br />
Klauselmitschriften (vgl. Abschnitt B.3), wobei die Aufnahme über Parameter<br />
gesteuert werden kann.<br />
Kausalitätsketten werden aufgezeichnet, wenn sie zu Konflikten führen.<br />
Ablauf Der GRASP-Algorithmus kann als rekursive Funktion dargestellt werden,<br />
wobei jede Rekursionsebene einer Entscheidungsebene entspricht. Abbildung 20<br />
zeigt den Ablauf der Funktion.<br />
Zu Beginn wird eine freie Variable gewählt und eine Entscheidung über ihre<br />
Belegung getroffen. Die Entscheidung wird üblicherweise mit einer Heuristik entschieden<br />
(siehe Abschnitt 4.2), bei GRASP wird DLIS verwendet. Ist die Variablenbelegung<br />
durch die Entscheidung vollständig geworden, wird die Rekursion<br />
erfolgreich abgebrochen.<br />
Andernfalls werden die Unit-Klauseln im BCP verarbeitet. Tritt kein Konflikt<br />
auf, kann in die nächste Entscheidungsebene eingetreten werden. Ist der rekursive<br />
Aufruf erfolgreich, kann auch die aktuelle Rekursionsebene erfolgreich verlassen<br />
werden.<br />
Tritt ein Konflikt in der BCP-Abarbeitung auf, wird dieser in einer Diagnose<br />
untersucht. Die Diagnose berechnet aus den Ursachen des Konflikts eine neue<br />
Klausel, die der Klauselmenge hinzugefügt (gelernt) wird. Da ein Fehler durch<br />
die Entscheidung auf dieser Ebene aufgetreten war, wird diese Entscheidung<br />
rückgängig gemacht. Kann der Konflikt nicht auf der aktuellen Ebene aufgelöst<br />
werden, ist ein nicht-chronologisches Backtracking notwendig. Dabei wird<br />
so viele Rekursionsebenen zurückgesprungen, bis eine Entscheidungsebene gefunden<br />
wird, in der der Konflikt aufgelöst werden kann.<br />
Konfliktdiagnose Tritt während der Durchführung von BCP ein Konflikt auf,<br />
wird dieser von GRASP untersucht. Zum einen kann der Algorithmus aus einem<br />
Konflikt eine neue Klausel berechnen und der Klauselmenge hinzufügen, um das<br />
erneute Auftreten des Konflikts zu verhindern (CBE, conflict-based equivalence).<br />
Zum anderen kann an eine andere Stelle im Suchbaum gesprungen werden, in der<br />
der Fehler nicht auftreten wird. Trat der Konflikt durch eine Entscheidung auf<br />
der aktuellen Entscheidungsebene auf, wird nur die letzte Entscheidung invertiert<br />
(FDA, failure-driven assertion). Haben bereits beide Alternativen für eine<br />
Entscheidung zum Widerspruch geführt, wird ein Sprung an eine frühere Entscheidungsebene<br />
vorgenommen (non-chrological backtracking) und deren Ent-