• Keine Ergebnisse gefunden

5.5 Schichtenmodell

6.1.3 Zustandsr¨aume

Zum Verst¨andnis der folgenden Definition des Zustandsraums (State Space) eines gef¨arb-ten Petrinetzes (unabh¨angig von der Implementierung hierarchischer Strukturen) ist die Definition des Bindungselements notwendig:

Definition 6.6 Bindung und Bindungselement

Die Bindung einer Transition t ist die Belegung aller Variablen von t mit Werten. Ein Bindungselement (Binding Element) ist ein Paar (t, b) bestehend aus einer Transition t∈T und einer Bindung bf¨ur t. Es wird als aktiv bezeichnet, wenn die W¨achterfunktion von t zu trueausgewertet wird und die Eingabestellen von t genug Token enthalten, um die Transition zu feuern.

Die Bindung bist also die Belegung der Variablen auf den eingehenden B¨ogen von tmit konkreten Marken aus den Eingabestellen.

Der Zustandsraum eines gef¨arbten Petrinetzes ist ein nicht notwendigerweise endlicher gerichteter Graph, der alle erreichbaren Zust¨ande des Netzes beinhaltet (vollst¨andige Enumeration). Jeder Knoten des Graphs repr¨asentiert einen Zustand, also eine eindeuti-ge Belegung aller Stellen im Netz mit Marken.

Jeder gerichteten Kante zwischen zwei Knoten entspricht die Verarbeitung eines speziellen Bindungselements, also das Feuern einer Transition mit einer spezifischen Variablenbele-gung, wodurch das Netz vom Ausgangszustand der Kante in den Zielzustand ¨uberf¨uhrt wird.

Der erste Knoten des Zustandsraums wird auch als Initialknoten bezeichnet. Er repr¨asen-tiert die Anfangsmarkierung (Initial Marking) des Netzes. Jeder Knoten ist ausgehend vom Initialknoten ¨uber endlich viele Kanten erreichbar.

Die Knoten, die von einem betrachteten Knoten aus unmittelbar ¨uber eine Kante erreich-bar sind, werden auch als Nachfolgeknoten (Successor Nodes) bezeichnet.

Abbildung 6.5 zeigt ein gef¨arbtes Petrinetzmodell mit nicht endlichem Zustandsraum.

Abbildung 6.5: Beispiel f¨ur ein CPN mit unendlichem State Space

Definition 6.7 Zustandsraum (nach [Val98]) Der Zustandsraum eines Petrinetzes ist ein Tupel

(S, T,∆, SI) mit

S ist eine Menge von (globalen System-)Zust¨anden.

T ist eine Menge struktureller Transitionen, d.h. Entit¨aten, deren Ausf¨uhrung eine Zustands¨anderung bewirkt.

S ×T ×S ist eine Menge von semantischen Transitionen (Kanten). Dabei ist jede semantische Transition die Durchf¨uhrung (Occurrence) einer strukturellen Transition, wobei δ∈∆ = (s, t, s0) mit Startzustand s∈S, durchgef¨uhrter Transi-tion t∈T und Zielzustands0∈S.

SI ist eine Menge von Initialzust¨anden. Dabei gilt SI ⊆S, SI 6=∅ Ein State Space ist endlich, wenn S und T endlich sind.

6.1.3.2 Zustandsraumexplosion und Gegenmaßnahmen

Ein h¨aufig auftretendes Problem bei der Zustandsraumberechnung f¨ur ein gef¨arbtes Pe-trinetz ist die Zustandsraumexplosion (State Space Explosion). Dieser Begriff bezeichnet den Umstand, dass der Zustandsraum mit Zunahme der Anzahl an Stellen, Transitionen und Marken zum exponentiellen Wachstum tendiert.

In Abbildung 6.6 ist ein simples Beispielnetz dargestellt. Es werden einzeln Ganzzahlen aus der Stelle Input entnommen und auf jede dieser Zahlen 1 addiert. Daraufhin wird jeder Wert erst mit 2, dann mit 3 multipliziert. Dieses Beispielnetz hat mit gezeigtem

!

Abbildung 6.6: Beispielnetz f¨ur Zustandsraumexplosion

Initial Marking mit 6 Marken in der Input-Stelle bereits einen State Space der Gr¨oße 4096, bei 12 Token von 14726.

Abbildung 6.7 zeigt einen kleinen Teil des Zustandsraums bei Anfangsbelegung vonInput mit 6 Marken. Hier wird deutlich, dass dieser enorm große State Space in einem Netz mit nur sehr wenigen Stellen und Transitionen vor allem durch die Variationsm¨oglichkeiten der Reihenfolge von Transaktionsausf¨uhrungen zustande kommt.

Ausgehend vom Initialzustand 1 k¨onnen 6 States erreicht werden. Jeder steht dabei f¨ur die Ausl¨osung der Transition Add mit einer der 6 m¨oglichen Belegungen von Variable i1. Zustand 2 wird beispielsweise erreicht, indem Add miti1=6 ausgef¨uhrt wird. Ausge-hend hiervon kann entweder gleich die Transition TimesTwo f¨ur das Ergebnis des ersten Schritts ausgef¨uhrt (Zustand 8) oder ein weiteres Mal Add mit einer der f¨unf weiteren

Abbildung 6.7: Auszug aus dem State Space des Beispielnetzes, Anfangsbelegung 6 Token

m¨oglichen Belegungen f¨ur i1 gefeuert werden. Ist nun beispielsweise i1=4, so gelangt man zu Zustand 9. Dieser h¨atte aber auch erreicht werden k¨onnen, wenn zuerst i1=4 und im zweiten Schritti1=6die Belegung gewesen w¨are (man kommt dann von State 3).

In dem gezeigten Beispiel ist die Reihenfolge, in welcher die Transitionen durchlaufen werden, prinzipiell nicht von Belang, da jedes Token einzeln verarbeitet wird und das Gesamtergebnis der Berechnung, also der Endzustand des Zustandsraums, f¨ur alle m¨ogli-chen Reihenfolgen der Ausf¨uhrung identisch ist. In der letzten Transition laufen also alle vorherigen Zust¨ande in einem Endzustand zusammen (siehe Abbildung 6.8), in welchem f¨ur jedes Token des Initial Marking das Ergebnis (i1+1)·2·3 in Result gespeichert ist.

Hier bietet sich ein Ankn¨upfungspunkt zur Optimierung: Dort, wo Daten unabh¨angig voneinander auf gleiche Art und Weise verarbeitet werden, wird nun eine feste Aus-f¨uhrungsreihenfolge im Petrinetz festgelegt. Somit wird eine große Anzahl an Zust¨anden gespart, welche auf der unterschiedlichen Reihenfolge von Transitionsausf¨uhrung basie-ren, aber am Ende keine unterschiedlichen Ergebnisse liefern. Hierf¨ur werden Multisets in Listen von Elementen desselben Farbtyps umgewandelt und unterst¨utzend Listen und Stellen vom Farbtyp Everwendet. Marken vom TypEk¨onnen nur eine Farbe, n¨amliche annehmen. Sie tragen keine Information und sind somit das CPN- ¨Aquivalent zu

Abbildung 6.8: State Space zum Beispielnetz, Anfangsbelegung 2 Token lichen Petrinetz-Token.

Im Beispiel heißt dies, dass die Input-Stelle nun nicht mehr mehrere INT-Token spei-chert, sondern immer genau eine Liste von INT-Werten (Format einer Liste in CPN ist [a,b,c]). Daf¨ur muss selbstverst¨andlich das Colour Set von Input entsprechend um-gewandelt werden. Dann werden der Reihe nach alle Werte dieser Liste an die Add -Transition ¨ubergeben. Dabei wird immer das erste Element der Liste (hd int_list) verarbeitet und an die Liste, welche die Ergebnisse beinhaltet, angehangen. Der unver-arbeitete Rest (tl int_list) wird zur¨uck inInput ubertragen.¨

Sind alle Elemente verarbeitet, greift die Bedingungif List.length(tl int_list)=[], d.h. es existieren keine Listenelemente mehr, welche auf Verarbeitung durchAdd warten.

Erst dann wird ein e-Token in AddFinished ¨ubertragen; bevor dies nicht geschehen ist, kann die Transition TimesTwo nicht feuern. Ebenso werden nun zuerst alle Elemente durchTimesTwo verarbeitet und erst dann TimesThree aktiviert.

Abbildung 6.9: Beispielnetz ohne State Space Explosion

Durch dieses Vorgehen wird der Zustandsraum enorm verkleinert: wird auch hier ein Initial Marking mit 12 Ganzzahlen verwendet (diesmal in Listenform), so hat der State Space nur 37 Zust¨ande - gegen¨uber den 14726 Zust¨anden im Original-Modell ein immen-ser Gewinn bei identischem Ergebnis.

Diese Listentechnik wurde bei der Erstellung des Modells einer AAI mit verteiltem Ver-zeichnis an allen Stellen, an denen dies m¨oglich war, eingesetzt. Dadurch konnte die Zu-standsraumexplosion vermieden und der State Space f¨ur die sp¨atere Sicherheitsanalyse (siehe Kapitel 7) hinreichend klein gehalten werden. Weiterhin wurde zu diesem Ziel De-terminismus in den Datenfl¨ussen angestrebt, d.h. das Feuern einer beliebigen Transition aktiviert stets maximal eine weitere Transition.