420 likes | 535 Vues
This paper presents a methodology for constructing state spaces in Petri nets using S-invariants and T-invariants techniques. The study explores the Depth-first Algorithm to manage state compression and reduce the number of stored states effectively. Practical experiments on variations of the classic dining philosophers problem reveal significant improvements in verifying properties such as deadlock freedom and optimizing state representation in finite memory. The results demonstrate a potential runtime enhancement of 30-50% based on invariant compression, enabling feasible analysis of larger systems.
E N D
Fighting State Explosion Using Petri net Invariants in State Space Construction
Quelle K. Schmidt: Using Petri net Invariants in State Space Construction Proc. 9th Conf. Tools and Algorithms for the Construction and Analysis of Systems LNCS 2619: Seite 473-488, Springer, 2003
Überblick • Grundidee • Depth-first-Algorithmus • S-Invarianten-Technik • T-Invarianten-Technik • Praktische Versuche • Fazit
Überblick • Grundidee • Depth-first-Algorithmus • S-Invarianten-Technik • T-Invarianten-Technik • Praktische Versuche • Fazit
Grundidee 5-speisende-Philosophen-System • 242 Zustände
Grundidee • 10-Philosophen-System : 59048 Zustände • 500-Philosophen-System: 3500-1 Zustände • Eigenschaften wie Deadlockfreiheit werden durch Aufstellen des Erreichbarkeitsgraphen verifiziert. • Problem: Wie können die Zustände in einem begrenzten Speicher gebracht werden, damit z.B. ein Algorithmus zum Aufstellen des Erreichbarkeitsgraphen terminiert?
Grundidee • mögliche Lösungsansätze: • Die Größe der Zustände wird komprimiert. S-Invarianten-Technik • Die Anzahl der gespeicherten Zustände wird reduziert. T-Invarianten-Technik
Überblick • Grundidee • Depth-first-Algorithmus • S-Invarianten-Technik • T-Invarianten-Technik • Praktische Versuche • Fazit
Depth-first-Algorithmus var V: set of markings initial; var E: set of edges initial; var current: marking initial MN; procedure StateGraph () vart: transition; var Enabled: set of transitions: begin V:=V U {current}; Enabled := {t| t T current t - } for t in Enabled do E := E U [current,current+t+- t -] current = current+t+- t -; if current V then StateGraph(); fi current = current+t - - t+ ; doneend. // t - = W(.,t) // t + = W(t,.)
Überblick • Grundidee • Depth-first-Algorithmus • S-Invarianten-Technik • T-Invarianten-Technik • Praktische Versuche • Fazit
S-Invarianten-Technik Wiederholung: • Inzidenzmatrix C(N): • jede Stelle sS einer Zeile und jede Transition tT entspricht einer Spalte der Inzidenzmatrix • C(s,t) = W(t,s) + W(s,t) • S-Invariante: • Zeilenvektor y, mit y . C(N) = 0 (0 entspricht Nullvektor) • M [MN : y. M = y. MN
S-Invarianten-Technik • Modifiziertes Producer-Consumer-Petrinetz Inzidenzmatrix:
S-Invarianten-Technik S-Invariante: (1,1,0,0,0,0,0,0)
S-Invarianten-Technik • Ziel der S-Invarianten-Technik: Zustandskompression Sei y eine S-Invariante mit y(s) ≠ 0 : y. M = y. MN sS y(s) . M(s) = y. MN y(s) . M(s) = y. MN - s'S\{s} y(s') . M(s') y. MN - s'S\{s} y(s') .M(s') M(s) = y(s)
S-Invarianten-Technik • Producer-Consumer-Beispiel: y. MN - s'S\{s2} y(s') . M(s') M(s2) = = y(s2) (1,1,0,0,0,0,0,0) * (1,0,0,1,1,0,0,1) - M(s1) = = 1 - M(s1) 1 Nach Schalten von p: M(s2) = 1 - M(s1) = 1 - 0 = 1
S-Invarianten-Technik • Partitionierung der Stellenmenge S: s6 P = signifikante Stellen R = redundante Stellen S = P U R, P ∩ R = 0 s2 s3 s1 P R s7 s5 s4 s8 für jede Stelle rR: S-Invariante y mit y(r) ≠ 0 und r'R\{r}: y(r') = 0 Markierungen aller redundanten Stellen können durch die Markierungen der signifikanten Stellen berechnet werden
S-Invarianten-Technik • Wie erfolgt die Partitionierung der Stellenmenge S ? 1. Inzidenzmatrix C(N) transponieren 2. Transponierte Matrix CT(N) in Obere-Dreiecks-Form umwandeln 3. Einteilung in head- und tail-Variablen (signifikante Stellen = head-Variablen, redundante Stellen = tail-Variablen) 4. partial-assignment durchführen (eine tail-Variable wird mit 1, allen anderen mit 0 belegt) 5. Gleichung CT(N) . y = 0 lösen
S-Invarianten-Technik • Ergebnis: • Bei n linear-unabhängigen S-Invarianten können n Komponenten der Markierung weggelassen werden • für zwei erreichbare Markierungen M und M' : M = M' sP: m(s) = m'(s)
S-Invarianten-Technik var V: set of markings initial; var E: set of edges initial; var current: marking initial MN; procedure StateGraph () vart: transition; var Enabled: set of transitions: begin V:=V U {current}; Enabled := {t| t T current t - } for t in Enabled do E := E U [current,current+t+- t -] current = current+t+- t -; ifcurrent V then StateGraph(); fi current = current+t - - t+ ; doneend. • der aktuelle Zustand ist immer komplett (current) bekannt • P-Teil (current) der Markierung wird in V und E gespeichert • Korrektheit bleibt erhalten • S-Invarianten müssen nicht bekannt sein • kleinere Vektoren beschleunigen Suchen und Einfügen in V
S-Invarianten-Technik • Nach Terminierung des Algorithmus sind folgende Erreichbarkeitsgraphen des Producer-Consumer-Beispiel gespeichert: Ohne S-Invarianten Kompression Mit S-Invarianten Kompression
S-Invarianten Technik • Zusammenfassung: • 30 – 50% einer Markierung muss nicht in die Datenstruktur gespeichert werden • Laufzeitverbesserung durch Beschleunigung von Such- und Einfügeoperationen aufgrund von geschrumpften Vektoren in der Datenstruktur • Der Aufwand zur Berechnung der nötigen Informationen wird überkompensiert. • Informationen können aus der Inzidenzmatrix gewonnen werden
Überblick • Grundidee • Depth-first-Algorithmus • S-Invarianten-Technik • T-Invarianten-Technik • Praktische Versuche • Fazit
T-Invarianten-Technik • Wiederholung: • Zustandsgleichung: M' = M + C(N) . Parikh(w) • T-Invariante: • Ganzzahliger Spaltenvektor x, mit C(N) . x = 0 • x ist trivial, wenn x = 0 gilt. • Gilt M [w M (Zyklus), dann ist Parikh(w) eine T-Invariante.
T-Invarianten-Technik • Producer-Consumer-Petrinetz Inzidenzmatrix:
T-Invarianten-Technik T-Invariante: (1,1,1,1)
T-Invarianten-Technik • Ziel der T-Invarianten-Technik: Zustandsreduktion • Jedoch müssen so viele Zustände gespeichert werden, damit der depth-first-Algorithmus terminiert. • Zyklen gefährden das Terminieren des depth-first-Algorithmus • Mindestens ein Zustand jedes Zyklus muss abgespeichert werden.
T-Invarianten-Technik Gesucht ist eine Menge Z [MN von Zuständen,so dass jeder Zyklus im Erreichbarkeitsgraphen mindestens eine Markierung in Z hat. • Jeder Zyklus kann durch eine T-Invariante ausgedrückt werden • Ermittle Menge U von Transitionen, wobei U mindestens eine Transition jeder nicht trivialen T-Invariante hat und somit mindestens eine Transition jedes Zyklus enthält.
T-Invarianten-Technik U T-Invariante x a T-Invariante y b T-Invariante z c Erreichbarkeitsgraph • jeder Zyklus im Erreichbarkeitsgraph hat einen Zustand, der mit einer Kante versehen ist, die mit einer Transition aus U gekennzeichnet ist.
T-Invarianten-Technik Die Menge von Zuständen, bei denen mindestens ein Element aus U aktiviert wird, erfüllt die Anforderungen von Z.
T-Invarianten-Technik • Wie findet man die Menge U ? • Für jede T-Invariante x gilt: C(N) . x = 0 • C(N) wird in Obere-Dreiecks-Form gebracht • Wird allen tail-Variablen die 0 zugeordnet, so wird der 0-Vektor als Lösung berechnet. • keine T-Invariante hat bei allen tail-Variablen eine 0. Menge U = Menge der tail-Variablen
T-Invarianten-Technik • Wie findet man die Menge U ? 1. Inzidenzmatrix C(N) aufstellen 2. C(N) in Obere-Dreiecks-Form umwandeln 3. Einteilung in head- und tail-Variablen vornehmen 4. Die Menge der tail-Variablen bilden U.
T-Invarianten-Technik var V: set of markings initial; var current: marking initial MN; var depth: integer initial 0; procedure TStateGraph () var t: transition; var Enabled: set of transitions: begin Enabled := {t| t T current t- } if Enabled ∩ U ≠ or depth mod k = 0 then V:=V U {current}; fi for t in Enabled do current = current+t+- t -; depth := depth + 1; if current V then TStateGraph(); fi current = current+t - - t+ ; depth := depth - 1; doneend.
T-Invarianten-Technik Ursprünglicher Erreichbarkeitsgraph Abgespeicherte Zustände
T-Invarianten Technik • Zusammenfassung: • Erheblich weniger Speicheraufwand nötig • Laufzeit-Speicher-Verhältnis durch Variable k konfigurierbar • T-Invarianten müssen nicht berechnet werden • Informationen können aus der Inzidenzmatrix gewonnen werden
Überblick • Grundidee • Depth-first-Algorithmus • S-Invarianten-Technik • T-Invarianten-Technik • Praktische Versuche • Fazit
Praktische Versuche • S-Invarianten-Technik: • n-Philosophen-System: 5n Stellen, 2n linear unabhängige S-Invarianten gespeicherter Vektor um 40% reduziert • Laufzeit: 10 phil 11 phil 12 phil Zustände 59048 117146 531440 Zeit (sec) ohne Reduktion 2.7 9.8 37.7 Zeit (sec) mit Reduktion 2.1 7.7 30.3
Praktische Versuche • T-Invarianten-Technik: 5 phil 6 phil 7 phil 8 phil 9 phil Zustände ohne Red. 242 728 2186 6560 19682 Zeit (sec) ohne Red. 0.03 0.04 0.08 0.23 0.76 Zustände mit Red. (k=5000) 160 530 1708 5417 16952 Zeit (sec) mit Red. (k=5000) 0.09 0.7 9.7 136.0 2177.6 Zustände mit Red. (k=20) 186 591 1828 5664 17545 Zeit (sec) mit Red. (k=20) 0.05 0.1 0.36 3.19 10.8 Zustände mit Red. (k=10) 201 629 1947 5984 18289 Zeit (sec) mit Red. (k=10) 0.04 0.07 0.19 0.59 1.8
Praktische Versuche • T-Invarianten-Technik in Kombination mit partial order reduction: 100 phil 200 phil Zustände mit partial order reduction 29702 119402 Zeit (sec) mit partial order reduction 2.2 16.4 Zustände mit beiden Red. (k=5000) 10311 41093 Zeit (sec) mit beiden Red. (k=5000) 45.3 395.3 Zustände mit beiden Red. (k=20) 14502 59002 Zeit (sec) mit beiden Red. (k=20) 3.5 26.5 Zustände mit beiden Red. (k=10) 17702 71402 Zeit (sec) mit beiden Red. (k=10) 2.8 21.4
Überblick • Grundidee • Depth-first-Algorithmus • S-Invarianten-Technik • T-Invarianten-Technik • Praktische Versuche • Fazit
Fazit • S-Invarianten-Technik: • Verbesserung in Speicherbedarf und Laufzeit • Kompatibel zu anderen Techniken • Keine besondere Vorsicht bei Einsatz notwendig • In den Programmen LoLA, INA verwendet
Fazit • T-Invarianten-Technik: • Als „standalone“-Technik nicht geeignet • Wertvoll in Kombination mit anderen Techniken • Parameter k muss sinnvoll gewählt werden • In dem Programm UPPAAL verwendet
Vielen Dank für die Aufmerksamkeit !!!