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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

136<br />

– Das Literal erhält den Wert 0, es gibt aber keine weiteren freien Literale<br />

außer dem anderen beobachteten Literal. Die Klausel ist somit unit und<br />

dem letzten freien Literal muss der Wert 1 zugewiesen werden.<br />

– Das Literal erhält den Wert 1. Hierdurch wird das Komplement des Literals<br />

0 und alle Klauseln, in denen das Komplement vorkommt (über die Beobachtungsliste<br />

bestimmbar), müssen untersucht werden. Zur Beobachtung wird<br />

ein anderes freies, unbeobachtes Literal gewählt.<br />

Backtracking und Lernen Tritt bei der Belegung und dem anschließenden BCP<br />

ein Konflikt auf, muss dieser behandelt werden. Dazu wird die aktuelle Belegung<br />

auf die Ursachen des Konflikts untersucht. Rekursiv von der betroffenen Klausel<br />

ausgehend werden die Entscheidungsvariablen gesucht, die den Konflikt verursacht<br />

haben. Ist ein Literal in der untersuchten Klausel eine Entscheidungsvariable,<br />

wird das Literal in die Liste der Verursacher aufgenommen. Ist ein Literal<br />

dagegen durch eine Implikation belegt worden, wird die Klausel untersucht, in<br />

der die Implikation entstand. Aus der Liste der Verursacher wird eine neue Klausel<br />

generiert, die eine erneute gleiche Belegung dieser Variablen verhindern soll.<br />

Diese neue Klausel ist eine Implikation aus der ursprünglichen Klauselmenge<br />

und wird als gelernt bezeichnet.<br />

Von den gefundenen Verursachern des Konflikts wird die Variable ausgewählt,<br />

die zuletzt belegt wurde. In einem nicht-chronologischen Backtracking-<br />

Schritt wird zur Entscheidungsebene der ausgewählten Variable gesprungen und<br />

die komplementäre Belegung gewählt. Sind bereits beide Alternativen eruiert,<br />

wird die nächstältere Variable betrachtet.<br />

Klausellöschung Im Ablauf des Algorithmus könnensicheinegrößere Anzahl<br />

von gelernten Klauseln ansammeln. Da diese gelernten Klauseln die Suchgeschwindigkeit<br />

verringern, können einige Klauseln von einer Heuristik gelöscht<br />

werden. Dazu verwaltet MiniSat für die gelernten Klauseln jeweils Aktivierungswerte.<br />

Klauseln mit niedrigen Aktivierungswerten werden bevorzugt gelöscht.<br />

Die Aktivierungswerte werden erhöht, wenn die Klausel in einem Konflikt wieder<br />

auftritt.<br />

Dadurch kann es aber vorkommen, dass bereits aufgetretene Fehlbelegungen<br />

erneut gemacht werden. Eine optimale Strategie zum Aufbewahren bzw. Entfernen<br />

von gelernten Klauseln hängt von der betrachteten SAT-Instanz ab.<br />

Bewertung Die Autoren geben an, dass MiniSat auch ohne aufwendige Optimierungen<br />

ähnliche Leistungen wie Satzoo oder Chaff erreichen kann. Unter geeigneten<br />

Testbedingungen können die beiden ”<br />

professionellen” Implementierungen<br />

sogar übertroffen werden.<br />

C<br />

Regeln bei Davis & Putnam<br />

Davis und Putnam [4] verwenden noch weitere Optimierungsmaßnahmen, die<br />

hier kurz vorgestellt werden sollen. Diese Optimierungen können vor der eigentlichen<br />

Suche angewandt werden, da sie die Formel vereinfachen und diese

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!