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.

147<br />

3.3 SAT Ansatz<br />

Bei SAT(=satisfiability) handelt es sich um das boolesche Erfüllbarkeitsproblem.<br />

Gegeben ist eine Formel in KNF, zum Beispiel (x 1 ∨ x 2 ) ∧ (x 3 ∨ x 4 ) und gesucht<br />

ist eine Belegung der Literale {x 1 , ··· ,x 4 }, welche diese Formel erfüllt. Dazu<br />

müssen die beiden Klauseln (x 1 ∨x 2 ) und (x 3 ∨x 4 )erfüllt werden. Eine Belegung,<br />

welche dieses Kriterium erfüllt, ist zum Beispiel {x 1 =1,x 2 =1,x 3 =0,x 4 =1}.<br />

Eine naive Vorgehensweise um eine solche Belegung zu finden wäre:<br />

1. Weise den Variablen schrittweise die Werte 0/1 zu und speichere die Entscheidung<br />

in einem Entscheidungsbaum<br />

2. Prüfe, ob die aktuelle Belegung der Variablen alle Klauseln erfüllt<br />

3. Ist dies nicht der Fall, gehe einen Schritt im Entscheidungsbaum zurück, und<br />

belege die Variable mit einem anderen Wert(Backtracking)<br />

4. Wiederhole, bis entweder eine Lösung gefunden, oder keine Variable mehr<br />

einen anderen Wert erhalten kann.<br />

Diesen Ansatz nennt man auch die Davis-Logemann-Loveland Procedure, ein<br />

einfacher Backtracking Algorithmus. In dieser Form ist er natürlich nicht effizient<br />

und führt zu exponentieller Laufzeit. Ausgehend von diesem Grundgerüst<br />

erweitert man diesen Ansatz mit neuen Regeln, um die Laufzeit zu verbessern.<br />

Einige Regeln, die angewendet werden, sind:<br />

unit clause rule Wenn die Zuweisung eines Wertes einer einzelnen Variable<br />

dazu führt, dass die Klausel zu einer Einheit wird, dann muss diese Variable<br />

den Wert 1 haben. Beispiel: (x 1 ∨¬x 2 ∨ x 3 ) und die aktuelle Zuweisung ist<br />

{x 1 =0,x 2 =1}, dann bildet diese Klausel eine Einheit und die verbleibende<br />

Variable x 3 muss den Wert 1 erhalten.<br />

boolean constraint propagation Die iterative Anwendung der unit clause<br />

rule nennt man auch boolean constraint propagation.<br />

pure literal rule Liegen für eine Variable x alle Literale in positiver oder negativer<br />

Form vor, so kann diese Variable einen Wert erhalten, welcher alle<br />

Klauseln erfüllt.<br />

Um nun SAT-Algorithmen benutzen zu können, müssen zwei Dinge geschehen.<br />

Alserstesbildetmanfür die Schaltungen die sogenannte Miter-Anordnung (siehe<br />

Abbildung 5). Die zusammengehörigen Eingänge und Ausgänge werden einzeln<br />

mit ⊕ verknüft, die Ausgänge führen dann in ein ∨-Gatter. Wenn die beiden<br />

Schaltkreise äquivalent sind, ergibt sich am Ausgang immer 0, da die ⊕-<br />

Gatter nur eine 1 ergeben, wenn einer der beiden Eingänge eine 1 war. Die<br />

∨-Verknüpfung prüft dann nur, ob einer der ⊕-Gatter eine logische 1 als Ergebnis<br />

ergab.<br />

Kann man eine Wertebelegung finden welche E = 1 erzeugt ist ein Testvektor<br />

für den Beweis der Nichtäquivalenz gefunden.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!