25.11.2014 Aufrufe

Verifikation reaktiver Systeme - Universität Kaiserslautern

Verifikation reaktiver Systeme - Universität Kaiserslautern

Verifikation reaktiver Systeme - Universität Kaiserslautern

MEHR ANZEIGEN
WENIGER ANZEIGEN

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-

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!