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.

130<br />

Start<br />

Zuweisungen<br />

dieser Ebene<br />

zurücknehmen<br />

Entscheidung:<br />

Variable belegen<br />

Belegung ist vollständig<br />

Keine Widersprüche<br />

Belegung ist partiell<br />

Diagnose<br />

Konflikt<br />

BCP<br />

Belegung<br />

gefunden<br />

Widerspruch<br />

Kein Konflikt<br />

Zuweisungen<br />

dieser Ebene<br />

zurücknehmen<br />

Konflikt nicht<br />

in diesem δ<br />

Rekursion in<br />

nächste Entscheidungsebene<br />

Belegung ist vollständig<br />

Konflikt<br />

Erfolg<br />

Abb. 20. Flussdiagramm für GRASP<br />

scheidung invertiert (CDB, conflict-directed backtracking). Die Wahl der Rücksprungebene<br />

wird mit Hilfe der gelernten Klausel (beschrieben in Abschnitt 5.3)<br />

getroffen.<br />

B.2 SATO<br />

SATO ist ein aussagenlogischer SAT-Solver von Zhang und Stickel [21,22]. Die<br />

Implementierung verwendet die Regeln des Davis-Putnam-Verfahrens (siehe Abschnitt<br />

2.1) zu Lösung von SAT-Instanzen. SATO wird seit 1993 entwickelt und<br />

liegt inzwischen in der Version 4.1 vor.<br />

Ein wichtiger Aspekt bei der Implementierung des Davis-Putnam-Algorithmus<br />

ist die Heuristik zur Wahl des Literals für die Splitting Rule (Seite 37). Die<br />

Performanz einer Implementierung für unterschiedliche SAT-Instanzen ist stark<br />

abhängig von der verwendeten Heuristik. Mögliche Heuristiken sind, ein Literal<br />

zufällig aus den kürzesten, positiven Klauseln zu wählen oder das Literal mit<br />

häufigsten Vorkommen in binären Klauseln zu bestimmen.<br />

Neben dem Davis-Putnam-Verfahren wendet SATO auch eine Konfliktanalyse<br />

mit intelligentem Zurückspringen (intelligent backjumping). Dieses Zurückspringen<br />

entspricht dem von DLL-Algorithmen bekanntem nicht-chronologischen<br />

Backtracking. Die aus dem Konflikt gelernte Klausel wird zur Klauselmenge<br />

hinzugefügt, wobei die Anzahl der neuen Klauseln im Algorithmus beschränkt<br />

werden kann.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!