31.08.2013 Aufrufe

Effizientes Model-Checking für CTL - Institut für Theoretische ...

Effizientes Model-Checking für CTL - Institut für Theoretische ...

Effizientes Model-Checking für CTL - Institut für Theoretische ...

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.

3 <strong>Model</strong>-<strong>Checking</strong> <strong>für</strong> <strong>CTL</strong><br />

Abschnitt wird aber ein in Exponentialzeit arbeitender Algorithmus <strong>CTL</strong>pos-MC(T ) vorgestellt,<br />

der dem in Abschnitt 3.3.1 aufgeführten Algorithmus <strong>CTL</strong>-MC(T ) in Bezug auf<br />

ihre Effizienz weiter unten gegenübergestellt wird.<br />

Satz 3.3.2 Sei T eine Menge von <strong>CTL</strong>-Operatoren, so dass alle Operatoren in T existenziell<br />

oder alle Operatoren in T universal sind. Dann ist <strong>CTL</strong>pos-MC(T) ∈ P.<br />

Als Erstes wird der Fall betrachtet, dass in T nur existenzielle Operatoren erhältlich<br />

sind. O. B. d. A. sei T ∈ {EX, EG, EU, ER}. Es wird behauptet, dass Algorithmus 3<br />

entscheidet, ob die Kripke-Struktur K = (W, R, η) die <strong>CTL</strong>pos(T )-Formel ϕ im Zustand<br />

w0 ∈ W erfüllt. S sei ein Stack zum Speichern von Paaren (ϕ, w) ∈ <strong>CTL</strong>pos(T ) × W .<br />

Jede Formel wird ähnlich wie im <strong>CTL</strong>-MC(ALL)-Algorithmus abgearbeitet. Sie wird<br />

je nach dem verwendeten Operator in die Teilformeln zerlegt und entsprechend behandelt.<br />

Ein deutlicher Unterschied liegt in dem Fall vor, wenn eine Pfad-Formel überprüft<br />

werden muss, z. B. ϕ = EGα oder ϕ = E(αUβ). Hier muss ein Pfad aus allen möglichen<br />

aus dem betrachteten Zustand ausgehenden Pfaden nichtdeterministisch gefunden werden.<br />

α wird dann in jedem Zustand entlang dieses Pfades geprüft. Im <strong>CTL</strong>-MC(ALL)-<br />

Algorithmus werden <strong>für</strong> solche Formeln erst die Zustände gefunden, in denen α erfüllt<br />

wird. Danach werden aus diesen Zuständen starke Zusammenhangskomponenten und<br />

aus diesen Ergebnispfade konstruiert.<br />

Die Konstruktion des Algorithmus macht die oben erwähnte Eigenschaft der LOGCFL-<br />

Sprachen erkennbar. Der Algorithmus lässt sich mit einer Turing Maschine mit einem<br />

Stack und einem Arbeitsband logarithmischer Größe entscheiden. Wenn der Algorithmus<br />

in Polynomialzeit arbeiten würde, dann könnte man das Problem<br />

<strong>CTL</strong>pos-MC(EX, EG, EU, ER) zu LOGCFL-Sprachen einordnen. Das ist aber <strong>für</strong> den<br />

Fall ϕ = EGα oder ϕ = E(αUβ) unmöglich. Das Problem liegt <strong>für</strong> die Formeln vor, die<br />

nach dem folgenden Schema geschachtelt sind. Sei ϕ = EGα0, wobei α0 eine Formel ist,<br />

die als Teilformel EGα1 enthält usw. Z. B. ϕ = EG(x0∨EG(x1∧EG(x2...))). Für jede<br />

Teilformel αi,i=0,... wird ein neuer Pfad geraten und jeweils |W|-mal auf den Stack gelegt.<br />

Analog gilt dies auch <strong>für</strong> die EU-Formeln. Dies führt zum exponentiellen Bedarf in der<br />

Stackgröße. Der Algorithmus benötigt exponentielle und nicht mehr polynomielle Zeit,<br />

wie es bei LOGCFL gefordert wird. ER-Formeln stellen eine Kombination von EG- und<br />

EU-Formeln dar. EX-Formeln können polynomiell mit der Turing Maschine abgearbeitet<br />

werden. Die übrigen Formeln repräsentieren Trivialfälle. Für die EG-, EU-Formeln<br />

besitzt der Algorithmus folgende Komplexität. Um alle Pfade abzuarbeiten, braucht<br />

man O(2 n ) Zeit. Bei geschickter Implementierung mit dem direkten Zugriff auf Teilformeln<br />

im Stack ergibt sich O(2 log(n) ) = O(n O(1) ) Bedarf. Folglich ist der Algorithmus <strong>für</strong><br />

<strong>CTL</strong>pos-MC(EX, EG, EU, ER) theoretisch polynomiell.<br />

Die Tatsache, dass der Algorithmus immer terminiert, folgt daraus, dass jede Teilformel<br />

von ϕ nicht mehr als |W |-mal im Stack S gespeichert wird. Außerdem zeigt die<br />

Induktivität der Struktur von Formeln, dass der Algorithmus genau dann false zurückgibt,<br />

wenn <strong>für</strong> alle aus dem Stack S geladenen Paare (φ, w) K, w ⊭ φ gilt. Folglich<br />

terminiert der Algorithmus mit true, genau dann wenn K, w ⊧ ϕ.<br />

18

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!