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.

118<br />

Schemata von Implementierungen<br />

Relsat-Schema In Abbildung 10 ist ein Relsat-Schnitt gemäß dem Algorithmus<br />

von Bayardo und Schrag [18] dargestellt. Dabei werden alle Entscheidungsvariablen<br />

und die Implikationsvariablen früherer Entscheidungsebenen auf<br />

die Ursachenseite gesetzt. Die Implikationsvariablen der aktuellen Entscheidungsebene<br />

befinden sich auf der Konfliktseite. Im Beispiel der Abbildung<br />

wird die Konfliktklausel ω κ = ¬x 4 + ¬x 8 + x 12 + ¬x 16 gelernt.<br />

GRASP-Schema Das GRASP-Schema (siehe Abschnitt B.1) verwendet verschiedene<br />

Untervarianten.<br />

Rekonvergenz von UIPs Kantenpfade, die von einem UIP der aktuellen<br />

Entscheidungsebene ausgehen, laufen bei einem anderen UIP wieder zusammen.<br />

Diese Rekonvergenz (reconvergence) kann für einen Schnitt verwendet<br />

werden, wobei sich innerhalb des Schnitts kein Konflikt befindet.<br />

Im Beispiel in Abbildung 11 ist ein solcher Schnitt mit A gekennzeichnet<br />

und verläuft zwischen x 12 (Entscheidungsvariable) und ¬x 10 (UIP). Die<br />

gelernte Klausel ist ω κA = x 10 + x 12 + ¬x 16 .<br />

Ab erstem UIP Eine weitere Konfliktklausel erstellt GRASP aus einem<br />

Schnitt auf der aktuellen Entscheidungsebene zwischen dem ersten UIP<br />

(vom Konflikt aus gesehen) und allen Knoten näher am Konflikt. Die<br />

Art von Schnitt wird auch von GRASP (s. o.) angewandt. Abbildung 11<br />

zeigt diesen Fall als Schnitt B. Die gerlernte Klausel ist hier ω κB = x 10 .<br />

Backtracking Führt auch die alternative Belegung der Entscheidungsvariablen<br />

der aktuellen Ebene zum Widerspruch, kann der Konflikt auf dieser<br />

Entscheidungsebene nicht aufgelöst werden. Ein neuer Schnitt wird<br />

vorgenommen, der alle Knoten der aktuellen Entscheidungsebene auf<br />

die Konfliktseite stellt und Knoten früherer Entscheidungsebenen auf<br />

die Ursachenseite. Um diesen Konflikt aufzulösen, muss der Algorithmus<br />

auf eine frühere Entscheidungsebene springen. Dieser Sprung basiert<br />

auf dem Schnitt und ist Basis für den nicht-chronologischen Rücksprung<br />

(Abschnitt 5.5).<br />

Dieser Schnitt entspricht Schnitt C in Abbildung 11. Die durch den<br />

Schnitt gewonnene Klausel ist ω κC = ¬x 4 + x 12 .<br />

Die Bestimmung eines Schnitts erfordert die Traversierung des Implikationsgraphen.<br />

Die Komplexität hängt somit von der Anzahl der Kanten und Knoten<br />

ab (O(V + E)).<br />

5.4 Einfache Fehler<br />

In der gelernten Konfliktklausel ist zu jedem Literal dessen Entscheidungsebene<br />

bekannt. Ist die höchste vorkommende Entscheidungsebene gleich der aktuellen<br />

Entscheidungsebene, kann der Konflikt ohne Rücksprung (Backtracking) gelöst<br />

werden.<br />

Falls für die Entscheidungsvariable der aktuellen Ebene noch nicht beide Belegungen<br />

ausprobiert wurden, kann der Konflikt durch Invertieren der Belegung

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!