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.

131<br />

Head/Tail-Zeiger Zur Beschleunigung von Resolution und Subsumption werden<br />

Head- und Tail-Zeiger verwendet. In jeder Klausel werden zwei Literale (Head<br />

und Tail) beobachtet, auf die jeweils ein Zeiger verweist. Für die Head- und Tail-<br />

Literale gilt als Invariante, dass außerhalb von ihnen (vor Head und nach Tail)<br />

alle Literale den Wert 0 haben. Wird einem Head- oder Tail-Literal der Wert<br />

0 zugewiesen, wird der entsprechende Zeiger nach innen auf die nächste freie<br />

Variable verschoben. Zeigen beide Zeiger auf das gleiche Literal, ist die Klausel<br />

unit und für die letzte freie Variable wird die notwendige Belegung vorgenommen.<br />

Hat ein Literal in der Klausel den Wert 1, wird die Klausel nicht weiter<br />

beachtet, weil sie nicht unit werden kann. Werden in einem Backtrackingschritt<br />

Variablen freigesetzt, müssen die Head- und Tail-Zeiger neu berechnet werden.<br />

Head<br />

Tail<br />

Head<br />

Tail<br />

0<br />

0 0 0<br />

0<br />

Als Speicherstruktur schlagen die Autoren vor, zu jeder Variablen vier Listen<br />

von Klauseln zu führen. In jeder Liste sind die Klauseln aufgeführt, indem<br />

die Variable in positiver bzw. negativer Form als Head- bzw. Tail-Variable vorkommt.<br />

Bewertung In dem in [22] aufgeführten Vergleichstest wurden die SATO-Versionen<br />

2.2 und 3.0 gegenüber weiteren exakten SAT-Solvern (u. a. GRASP) verglichen.<br />

Als Grundlage wurde eine Auswahl von 15 Instanzen aus dem zweiten DI-<br />

MACS-Wettbewerb [23] verwendet. Während SATO 2.2 vergleichsweise schlecht<br />

abschnitt, erreichte SATO 3.0 gut bis sehr gute Zeitwerte.<br />

B.3 Chaff<br />

Chaff ist ein SAT-Solver, entwickelt von Moskewicz, Madigan, Zhao, Lhang und<br />

Malik [13]. Der Algorithmus ist ähnlich strukturiert wie GRASP, unterscheidet<br />

sich aber von diesem hauptsächlich in seinem BCP-Algorithmus und der Belegungsheuristik.<br />

Basierend auf der Erkenntnis, dass der größte Teil der Rechenzeit eines SAT-<br />

Solvers in der BCP-Funktion verbraucht wird, haben die Autoren ihre Implementierung<br />

in diesem Bereich besonders auf Geschwindigkeit ausgerichtet. Dies<br />

wird einerseits durch eine effiziente Programmierung, andererseits durch geeignete<br />

Datenstrukturen und deren Caching erreicht.<br />

BCP Chaff verwendet das Konzept von beobachteten Literalen (watched literals).<br />

Eine Klausel ist nur dann unit und somit für BCP relevant, wenn weniger als zwei<br />

Literale darin frei bzw. gleich 1 sind. Eine solche Klausel, die für BCP relevant ist,<br />

wird implizit genannt. Um den Wechseln einer Klausel von nicht-implizit nach<br />

implizit effizient zu überwachen, werden in jeder Klausel zwei Literale überwacht.<br />

Wird eines der beiden ausgewählten Literale mit 0 belegt, muss die Klausel

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!