Grundlegende Sicherheitseigenschaften haben wir gezeigt, beim Leserschreiberproblem,
dann waren sie von der Bauart, wenn einer schreibt,
liest keiner oder ähnliche Sachen,
also verschiedene Varianten des wechselseitigen Ausschlusses hatten wir dort betrachtet.
Und was wir dort verifizieren wollten, war nicht,
dass irgendwann einer mal liest, dass wir eine Lebendigkeitseigenschaft gewesen,
sondern wir hatten In-Varianten, das heißt Eigenschaften des Verhaltens,
die immer gelten.
Als Spezialeigenschaft hatten wir lineare In-Varianten. Und lineare In-Varianten hatten
wir in zwei verschiedenen Formen
Hatten sie einmal als in Variantengleichung, so wie sie im
unteren Kasten stehen. Im munteren Kasten war die Aussage,
das ist eine Gleichung der Form. KI,
mal Markierung des Platzes SI, das aufsummiert über alle Plätze,
ist eine konstante K. KI und K sind dabei feste Konstanten.
Und wenn das jetzt für alle erreichbaren Markierungen M gilt,
dann haben wir das eine S-In-Variantengleichung genannt.
Seine lineare in Variantengleichung,
weil es die gewichtete Summe von etwas ist und in
dem Sinne linear
Und in ähnlicher Form hatten wir dann noch im Satz von Lautenbach
auch eine Eigenschaft. Das war der omige Satz,
der leitete sich ab aus Innenvarianten Vektoren. Einen Innenvarianten Vektor,
eine Essin-Variante, war dabei eine Lösung eines linearen Gleichungssystems.
Nämlich das linearen Gleichungssystems transponierte der Wirkungsmatrix des Netzes N. Mali
ist der Null-Vektor.
Also ein homogenes Gleichungssystem
Und davon interessierten uns jetzt ganz zahlige Lösungen,
und zwar von Vektoren. Das muss so sein, die
genauso viele Komponenten haben, wie das Netz Stellen besitzt.
Und was uns aber nicht interessiert, was zwar immer eine Lösung wäre,
aber es ist eine uninteressante Lösung, ist der Null-Vektor selbst.
Matrix mal null Vektor ist immer der Null-Vektor.
Das ist aber keine informative Lösung. Wenn das gegeben ist,
also dieses lineare gleiche System, besitzt tatsächlich eine Lösung.
Man weiß, bei linearen Gleichungssystemen ist es ein ganzer Vektorraum.
Das heißt, entweder gibt es gar keine Lösung
Denn hatte der Vektorraum, der da rauskommt,
die Dimension null, also nur der Null-Vektor.
Oder es ist ein Vektorraum der Dimension 1, 2, 3 oder höher.
Und dann gibt es unendlich viele Lösungen des homogenen gleichen Systems.
So, aber angenommen, wir haben überhaupt eine Lösung.
Die nennen wir dann I, wenn sie ganz zahlig ist.
Und da gilt dann die Eigenschaft, wie sie hervorgehoben ist,
dass I transponiert mal M gleich I transponiert mal
M0 ist und das für alle erreichbaren Markierungen M.
Und wenn man jetzt die beiden umkreisten, gleich um Vergleicht stellt man fest,
es ist eine Gleichung, beides Mal in M.
Beide Gleichungen müssen für alle erreichbaren Markierungen gelten.
Und strukturell steht da bis auf die Schreibweise exakt das Gleiche.
In der obigen Form steht der i transponiert mal M.
Gut, wenn ich das ausschreibe, ist das aber genau
der gleiche Ausdruck, der im unteren Kasten steht.
Nämlich eine Konstante, K1, das ist dann eben das,
was im Vactor i an der ersten Position steht.
Und das wird multipliziert mit der Markierung für die Stelle
Wenn ich das aufsummiere, dann ist das die detaillierte Schreibweise für i transponiert, mal M.
Wenn ich gerade aus den Komponenten K1, K2, K3 und so weiter besteht.
Und was steht auf der rechten Seite? Itrum,
mal M0, also i transponiert mal M0. Was da rauskommt,
ist eine Konstante, weil i schon klar ist,
der Satz sagt ja, wenn ich eine Innenvariante i habe,
und M0 ist auch klar, dass ich die Anfangsmarkierung,
die ist auch konstant,
dann kommt also bei Itri M0 ein konstanter Wert raus.
Genauso wie in einer unteren Gleichung.
Da ist dieser konstante Wert denn
Das heißt, beide beschreiben eigentlich das Gleiche. Eine Aussage,
die für alle erreichbaren Markierungen gilt und die von der
gleichen Form ist. Der Unterschied ist jetzt aber,
wenn ich die beiden Sachen vergleiche, dann sieht man,
der Ersatz von Lautenbach sagt, wenn ich einen Innenvarianten Vektor habe,
dann kriege ich sofort eine Innenvariantengleichung.
Ja, I-Trill mal M ist gleich I-Trimmer M0,
das ist eine S in Variantengleichung.
Haben wir uns eben klargemacht. Jetzt ist die Frage,
wird die Umkehrung auch? Nein, das tut sie nicht
Denn eine In-Variantengleichung, die ich aus einem In-Varianten-Vektor ableite,
ist stärker. Denn das ist eine strukturelle Eigenschaft.
Denn Vektor i rechne ich nur aus der Netzstruktur heraus.
Dagegen diese In-Variantengleichung, die fährt irgendwie vom Himmel,
sie muss für alle erreichbaren Markierungen gelten.
Und das ist relativ zu der Anfangsmarkierung M0. Das heißt,
die Gültigkeit einer invarenten Gleichung im Allgemeinen Fall
hängt immer von der Wahl der Anfangsmarkierung ab.
Für eine Anfangsmarkierung kann sie gelten,
für eine andere nicht
Das ist bei in Variantengleichung, die ich aus Innenvarianten folge
, nicht der Fall. Da gilt die Beziehung Irrtre
mal M, ist gleich I-Trimmer M0, immer.
Egal welche Anfangsmarkierung ich mir aussuche. Jetzt wollen wir
uns mal an ein Beispiel klar machen,
also in den ersten Teil wissen wir schon,
aus jeder S-In-Variante, aus dem Vektor folgt eine Lineare in Variantengleichung.
So, die Umkehrung gilt nicht, das können wir uns
jetzt an diesem Beispielnetz klar machen.
Hat zwei Plätze, P1,
P2,
eine Marke Initial
Und die Transition T1, T2 schicken die Marke einfach nur immer auf den Kreisverkehr.
T1 packt es auf P2, T2 zurück. Und die
Transition T3 in der Mitte, die wird nie aktiviert sein,
weil es nicht möglich ist, auf P1, 2 Marken zu haben.
Und wenn wir jetzt gucken, welche Markierungen sind erreichbar,
1-0 und 0-1,
dann ist es nicht schwer festzustellen, dass die In-Variantengleichung,
wie sie hier gegeben ist, tatsächlich gilt,
für alle erreichbaren Markierungen gilt.
Einmal M von P1 plus einmal M von P2, ist gleich
Einmal M0 von P1 plus einmal M0 von P2.
Und das ist eben, weil ich eine mag,
auf P1 habe 1. Gilt in allen erreichbaren Markierungen M.
Ich habe ja nur zwei erreichbare Markierungen. Wenn die erreichbare
Markierung 1-0 ist, dann steht der Einmal 1 plus
Einmal 0. Das ist eins. Es ist die Markierung 0-1,
steht der Einmal 0 plus Einmal 1, ist auch eins.
Das heißt, diese In-Variantengleichung ist gültig. Wer das jetzt irgendetwas,
was mit einer In-Variante zu tun hätte,
dann könnte ich die In-Variante ja jetzt hier ablesen
Die Innenvariante steht mich hier genau als Konstanten vor den Markierungen.
Das heißt, da steht eins und eins. Das heißt,
wenn das überhaupt eine Innenvariante wäre, von der das Ganze kommt,
dann müsste der Vektor aussehen 1-1. Diese Form müsste die Innenvariante I haben.
Sonst kann ich das überprüfen. Ist das eine Innenvariante?
Dazu stelle ich mir die Wirkungsmatrix auf. Delta. Und
dann muss ich ja ausrechnen, Delta transponiert Mai.
Und wenn ich das mache, für diesen Vektor 1-1,
dann rechne ich aus, Delta transponiert Mai,
da steht die transponierte Matrix
Einmal getippt. Da steht der Vector 1-1.
Und wenn ich das multipliziere, erste Zeile der Matrix,
mal Vector, steht da minus 1 mal 1 plus.
Einmal 1, hebt sich gerade auf, ist null.
In der zweiten Zeit der Matrix genauso. 1,
minus 1, 70 auf. Und dann steht da einmal
minus 2 plus 1 mal 3, er gibt 3.
Das heißt, da kommt nicht der Null-Vector raus,
sondern er vector 001. Das heißt, wir haben nachgeprüft,
i für diese Komponenten 1
-1 ist keine In-Variante
Das ist auch vollständig klar, denn diese In-Variantengleichung,
wie sie da steht, gilt nur für diese Anfangsmarkierung.
Würde ich mir die Anfangsmarkierung zwei Marken auf P1 nehmen,
dann wird diese In-Variantengleichung nicht mehr gelten,
denn dann könnte ich sofort die Transition T3 schalten und dann hätte ich die Markierung erreicht, 03.
Und wenn ich das jetzt in Variantengleichung einsetze,
dann kommt daraus einmal 0 plus einmal 3,
Aber einmal M0 plus einmal von P1 und einmal
M0 von P2 ist einmal 2 plus, einmal 0,
also 2. Das heißt schon für diese eine Schaltung hätte ich gezeigt,
das ist eine Markierung erreichbar, 0-3,
die nicht mehr diese Innenvarianten gleichen erfüllt.
Das liegt an der Anfangsmarkierung. In diesem Beispiel ist die Anfangsmarkierung M.0
nämlich gerade so gewählt, dass die mittlere Transition T3 nicht aktivierbar ist.
Dass sie da ist, ist gewissermaßen überflüssig.
Sie kann nicht schalten. Aber sobald ich eine Markierung wehe,
der T3 schalten kann, Das zerstört mir T3 natürlich,
die Quersummeneigenschaft, das in den beiden Plätzen zusammen immer konstant viele Marken liegen.
Ja, T3 erzeugt mir eine Marke mehr.
Dass das Ganze klappt, liegt also tatsächlich daran,
dass T3 aus M0 nicht aktivierbar ist.
Das ist eine tote Transition, kann nichts tun. So,
das heißt, die Gültigkeit der Innenvariantengleichung ist nicht struktureller Natur, sondern gewissermaßen Zufall.
Es gilt nur für die Anfangsmarkierung, so wie sie dargestellt ist.
In Variantengleichung, die von echten in S-In-Varianten abgeleitet werden,
sind dagegen besser, denn die gelten immer. Ja,
hätte ich in der Innenvarianten gleich von der S-In-Varianten ableiten können,
dann ist es egal, was ich als M0 wähle.
Dann gilt das immer. Gut, also wann immer möglich,
hätten wir gerne eine S-In-Varianten-Gleichung, die von einem Vektor her rührt.
Dann können wir mich auch mal eine andere Anfangsmarkierung wählen.
Das nächste, was schön ist, sie sind besonders einfach
zu verifizieren. Das kann man sich jetzt komplexitätstheoretisch
mal überlegen
Um eine Innenvariantengleichung zu verifizieren. Selbst bei einem beschränkten Netz
muss ich mir jede erreichbare Markierung ansehen.
Da haben wir schon öfter mal gesehen,
wenn das nur exponentiell viele sind, haben wir Glück gehabt.
Beim letzten Mal haben wir gesehen, es gibt auch Netze,
die machen zwei hoch, zwei hoch, zwei hoch,
zwei hoch, zwei viele Markierungen.
Das heißt, der Erreichbarkeitskraft, den ich überprüfen muss,
der kann unheimlich groß sein.
Im Verhältnis zur Anzahl der Plätze und Transitionen.
Also mindestens exponentiell, hyperexponentiell im Eilung
Da ist es auch viel netter, eine S-In-Variante herauszufinden.
Wir lösen das zwar in den ganzen Zahlen,
aber das ist nicht schlimm,
wir können es in den rationalen Zahlen lösen,
dann haben wir einen Vector-Raum und müssen dann mit dem kleinsten gemeinsamen Vielfachen operieren,
damit wir das wieder auf ganz zahlige Werte bringen.
Das heißt, wenn wir eine Lösung in Q bekommen,
multiplizieren wir das durch, solange bis da überall ganze Zahlen stehen.
Und da ist das Tolle, der Aufwand,
um solche homogen linearen gleichen Systeme zu lösen,
der ist relativ überschaubar
Weiß man selbst mit dem, sagen wir mal,
naiven Gauss-Verfahren, ist das von der Größenordnung auch von Enhoch
3. Wenn N die Größe der Matrix ist. Ja,
bei einer quadratischen ist das besonders klar,
aber die größere Zahl von Plätzen und Transitionen,
also die reine Strukturbeschreibung gibt mir da schon das N,
was in der dritten Potenz jetzt das abschätzt.
Also ein sehr kleines Polynom brauche ich als Größenordnung.
Um das hier zu betrachten
Und da ist es natürlich von einer ganz anderen Größenordnung als exponentielles oder hyperexponentielles Wachstum.
Das heißt, es spricht auch aus Komplexitätstheoretischer Sicht,
manches ist dafür in Varianten heranzuziehen, wenn ich etwas verifizieren will.
Zumindest wenn es um Safety-Eigenschaften geht. Was man auch gleichzeitig sieht,
man kriegt nur solche In-Variantengleichungen, die die Bauart haben,
konstante Malmarkierung, das aufsummiert über alle Plätze,
ist eine Konstante.
Also nur diese lineare Form lässt sich mit den In-Varianten
Vektoren so schön bereitstellen
So, jetzt kann man das noch ein bisschen verschärfen.
Bislang sind unsere Vektoren ja ganz zeitig. Das heißt,
auch negative Vorzeichen sind dazugelassen. Jetzt kann man sich überlegen,
was ist denn, wenn das durch Zufall nur ein einheitliches Vorzeichen ist,
und sein einheitliches Vorzeichen ist, dann weiß ich,
okay, dann kann ich auch, wir wünschen,
dass alles positiv ist, ansonsten multipliziere ich den weg,
damit minus eins.
Und dann ist noch das Tolle, also keine negativen Vorzeichen
mehr drin, wenn dann auch keine Null mehr vorkommt.
Also in allen Komponenten habe ich einen Wert,
der größer ist als Null.
Was ist dann
Ja, dann kann man zeigen, dass das Netz strukturell beschränkt ist.
Woran liegt das? Also erstmal die exakte Formulierung ist,
angenommen, wir haben ein Netz N. Und das besitzt eine In-Variante,
die für alle Plätze, das soll nicht größer,
gleich, sondern größer stehen, positiv ist.
Also null wäre blöd. In allen Komponenten echt größer als
null. Dann habe ich eine Überdeckende, positive In-Variante,
positiv, ist klar, keine negativen Werten,
Ja, weil ich mich frage, welche Plätze werden denn angesprochen?
Also wenn dann null steht, würde man nicht sagen,
es ist angesprochen. Und in dem Sinne überdeckt eine In-Variante,
die in allen Komponenten echt positiv ist, natürlich alle Plätze.
So, und dann ist die Aussage, ist das Netz strukturell beschränkt.
Zur Erinnerung strukturell ist ein Netz dann beschränkt,
wenn es für eine beliebige Anfangsmarkierung beschränkt ist.
Also für jede. Sondern woran liegt das jetzt?
Kann man jetzt nachrechnen? Wir gehen davon aus,
wir haben eine beliebige Initialmarkierung M0 gegeben
Dann wissen wir ja, dadurch, dass wir eine Innenvariante haben,
sagt uns der Satz von Lautenbach, I mal M., ist ja Ima M.0.
Und wenn ich das als Summe aufschreibe, ist das ja
Summe über alle P. I von P, mal M von P.
Und das ist das Gleiche wie die Summe über alle P
von I mal P, mal M.0 von P.
Das ist der Satz von Lautenbach, der sagt, das gilt.
Sondern wissen wir, dass I von P größer null sein muss,
weil es nö, positiv überdecken in Variante ist.
Das heißt, M von P ist sowieso immer positiv für jeden Platz.
Wenn I von P jetzt auch positiv ist, denn schadet es nichts,
wenn ich nur einen einzigen Semanten aus der Summe rausnehme.
Das heißt, nicht nur ein Platz P betrachte, einen beliebigen,
denn es I mal P, mal M mal P,
kleiner gleich der Summe über alle Ps.
Ja, und auf der rechten Seite kommt dieser Somant einmal vor.
Ja, genau dieses P ist es dann.
Und für alle anderen Plätze stehen dann nur Werte,
die entweder null oder größer sind
Wenn die Markierung auch von einem anderen Platz null ist,
dann ist das ein Nullsummant. Okay. Und wenn das
größer ist und die Innenvariante auch größer null ist,
dann steht da ein echt positiver Wert.
Auf jeden Fall stehen dort keine negativen Werte.
Und das heißt nichts weiter als ein Semant von der Summe,
lauter positiver Semanten, ist natürlich kleiner gleich der Gesamtsumme.
Ich lasse einfach Paar weg. Und mit der Gleichung darüber
hätte ich jetzt auch schreiben können, die Summe,
die da steht,
ist ja auch gleich der Summe von I von P
mal M0 von
Was mache ich jetzt? Ich teile das,
was auf der rechten Seite steht, also Vector I mal M0,
auf der linken Seite steht I von P mal M von P.
Jetzt teile ich diese Gleichung durch I von P. Ich weiß,
I von P ist nicht null, also darf ich das tun?
Und deswegen erreiche ich dort folgende letzte Ungleichungskette.
Ich weiß, M von P ist jetzt kleiner gleich,
I mal M0, geteilt durch I von P.
Einfach die Gleichung da drüber durch I
von P geteilt
Und da ich weiß, dass I von P ein positiver Wert ist,
mindestens eins, im Zweifelsfall aber zwei oder größer,
ist das kleiner als der Zähler selbst.
Der Zähler ist I mal M0. Und wenn ich das durch eins teile,
ist es genauso groß wie I mal M0,
wenn es durch zwei Teile wird es nur noch kleiner und bei drei,
vier auch.
Das heißt, M von P ist immer kleiner gleich, I mal M0.
So, was steht jetzt auf der rechten Seite?
E ist ein konstanter Vektor, M0 ist ein konstanter Vektor
Da kommen nur nicht negative Zahlen drin vor. Das heißt,
wenn ich das ausrechne, steht dort eine positive ganze Zahl.
Also steht der M von P ist kleiner gleich einer positiven
ganzen Zahl. Diese Zahl ist jetzt die Schranke,
die für die Markierung dieses Platzes pegelt.
Das heißt, der Platz ist, ihm mal M0 beschränkt.
Und das ist eine Schranke, die ist für gegebenes
M0 konstant
Natürlich ist sie für jede Anfangsmarkierung im Null jede andere,
ist sie anders. Aber das ist nicht ganz klar und
strukturelle Beschränktheit fordert das auch gar nicht,
dass es eine universelle Schranke gibt für alle M0s.
Es ist nur gesagt, für jedes M0 ist es beschränkt.
Deswegen hängt die Schranke in natürlicher Weise im Allgemeinen ab von
der Anfangsmarkierung M0 selbst. Und genau das ist der Fall,
die Schranke ist jetzt ihm mal M0. So,
da das jetzt für einen beliebigen Platz pegelt,
habe ich eine Oberschranke für jeden Platz P des Netzes und
das Netz ist dabei in jede Anfangsmarkierung
M0 beschränkt
Das kann ich also insbesondere auch machen mit in Varianten. Dadurch,
dass ich gar nicht auf die Anfangsmarkierung geschaut habe,
als ich die In-Variante ausgerechnet habe, ist es klar,
dass da eine Eigenschaft rauskommt,
die unabhängig sein muss von der Anfangmarkierung.
Ich muss nichts über die Anfangsmarkierung wissen, um in Varianten auszurechnen.
Also bekomme ich auch eine Eigenschaft, die unabhängig von N0 ist.
Und in diesem Fall ist es eben gerade diese strukturelle Beschränktheit,
die ich damit zeigen kann.
Voraussetzung ist, Ivan P ist größer,
null für alle Ps
Sowas kann ich jetzt noch machen. Bislang habe ich das
Gleichungssystem I trü. Delta Trimm, I gewinnt. Ja,
und was da rauskommt, war ein ganz zahliger Vektor.
Der hatte genauso viele Komponenten, wie ich Stellen habe.
Und das war, ja gut, eine strukturelle Eigenschaft,
damit kann man zum Beispiel Erhaltung von Markenzahlen zeigen.
Jetzt kann ich das ganz analog machen, indem ich einfach sage,
okay, keiner hindert mich daran, mal zu gucken,
was passiert denn, wenn ich das Gleichungssystem Delta ohne das transponieren,
mal x gleich null setze.
Welche Vektoren erfüllen das? Und da gibt es auch Vektoren,
die uns interessieren. Also ich nehme jetzt wieder das Gleichungssystem,
nur ohne das Transponierte,
und rechne jetzt Delta von dem Netz N mal J aus,
und da soll der Nullvektor rauskommen.
So, wie viele Komponenten hat jetzt J,
weil Delta eine P-Kreuz-Teammatrix ist, müssen das T-Betrag von Tee viele Komponenten sein.
So, und da interessiert mich jetzt nicht jede Lösung,
sondern mich interessieren nur Lösungen, die im Positiven liegen.
Das heißt, J muss ein Element sein aus N-Hochbetrag von Tee.
Aber nicht der Null-Vektor. Wenn ich eine solche Lösung finden kann,
dann nenne ich das Ganze diesen Vektor J einen Tee in Varianten-Vektor des Netzes.
Gut, und was mache ich damit? Das hat damit zu tun,
wie das Netz schaltet und welche Reproduktionsmöglichkeiten es hat,
also welche Schaltfolgen die Markierung,
die ich gerade habe,
wieder reproduzieren können
Denn wenn ich annehme, ich komme von M1 zu M2 in der Schaltfolge W und W
ist die Folge von Transitionen T-I-1, T-I-2, T-I-3.
Ich habe meine Transition T-1, T-2, T-3 genannt in der Matrix-Darstellung,
um zu sagen, ich nehme da eine raus,
muss ich meinetwegen das T-I-1, ist die fünfte Transition.
Dann ist i1 eben die 5. Um das darstellen zu können,
brauche ich hier diese indizierten Indizes.
i1, ja, der i ist jetzt also ein Laufindex,
hat nichts mit einer S-In-Variante zu tun
So, das ist jetzt also eine solche Schaltsequenz weh.
Eine Sequenz von Transition. Und dann weiß ich,
M2 rechnet sich ja dadurch aus,
dass ich für jede Transition nach und nach den Effekt ausrechne.
Das heißt, M2 ergibt sich,
indem ich zu M1 den Effekt der ersten Transition TI1 hinzuaddiere.
Dieser Effekt ist so ein paar Komponenten positiv,
ein paar Null, ein paar negativ.
Ob eine neue Markierung heißt. Dazu den Effekt der zweiten
Transition, TI2 und immer so weiter bis zum Effekt der
letzten Transition TIK
Und was da rausgekommen ist, ist die neue Markierung M2.
Und jetzt kann ich mich fragen, und dann welchen Umständen ist jetzt
eigentlich die erreichte Markierung M2, wieder die Startmarkierung M1?
Wann hat sich da gar nichts geändert? Und das ist der Fall natürlich,
wenn alles, was in dieser Summation auf der rechten Seite steht,
wenn das der Nullvektor ist, wenn sich alle Effekte zu null bilanzieren,
Ja, dann ist M1 gleich M2. Und jetzt ist die Frage,
wann ist das der Null-Vektor?
Kann ich das, klar, das kann ich so fordern,
aber kann ich dafür ein einfaches Kriterium finden?
Und die Antwort, wann das ist,
ist relativ einfach, wenn Delta N mal J,
der Null-Vektor ist und was muss J dabei sein?
Ja, das muss ein Vektor sein. Man nennt das
das Panikbild, dieser Schaltfolge W. Was ist das? Ja,
die erste Beobachtung ist, wenn ich diesen Effekt habe,
Älter von TE1 plus Delta von TE2 und so weiter.
Plus ist ja kommutativ. Es spielt also gar keine Reihenfolge
mehr, in der ich summiere. Das heißt,
wenn ich erst mal weiß, diese Schaltfolge W ist tatsächlich aktiviert,
dann kann ich die Effekte ja durchtauschen.
Ich kann mir also ein bisschen Arbeit sparen und sagen,
okay, wie oft kommt jetzt in dieser Schaltfolge W eigentlich die erste Transition vor?
Nein, dann zähle ich durch und komme auf das Ergebnis zwölfmal.
Na gut, dann merke ich mir also,
wie oft kommt in der Schaltfolge W das erste Element X1 vor,
also die Transition TE eins für unser Setting.
Und ich mache mir einen Vektor, der schreibt in die erste Komponente,
die Anzahl des Auftretens von X1 in W. Notiert als Betrag von WX1.
So, dann weiß ich, so oft kommt die Transition
T1 vor. Wie oft kommt die Transition T2 vor?
Nullmal. Gut, schreibe ich dann eine Null hin.
Und immer so weiter. Und ganz zum Schluss bekomme ich einen Vektor,
in dem steht für jede Transition die Anzahl des Auftretens in W. Ja,
und dieses Tupel oder dieser Vektor,
den nenne ich jetzt das Paarikbild,
sie von
Die Anzahl der Häufigkeit. So, und wenn das mein J ist,
ja, dann muss ich das zu Null ergeben.
Woran liegt das? Gucken wir uns das nochmal mit Tai an.
Der Satz, den wir jetzt genau formulieren wollen,
ist der, der die Reproduktionsbedingungen angibt.
Wenn ich zwei Markierungen M1M2 habe, so wie eben,
und eine Schaltfolge TI1 bis TIK, das teilt Folge W.
Und diese Schaltfolge überführt M1 zu M2.
So wie eben
Und jetzt ist die Aussage,
dass M1 und M2 genau dann gleich sind,
wenn es einen Tee in Varianten Vector J gibt,
also einen Vector aus der Menge N-Hochbetrag von Tee,
sodass gilt,
dass die ite Transition TI genau J-E mal vorkommt in W. Ja,
und das ist nichts anderes als die Aussage,
J ist der Panikvektor von W. Nein,
in der iten Komponente des Panikvektors steht ja genau
die Anzahl des Auftretens der Transition TI
So, woran liegt das? Das kann man jetzt nachrechnen
letztendlich. Wir wissen ja, haben wir eben aus,
schon gesehen und in dem Satz ist es die Voraussetzung,
M1 ist gleich M2.
Und M2 ist gleich M1 plus Delta T1 plus Delta T2
plus plus plus plus und so weiter, bis Delta TIK.
So, und jetzt muss dieser Effekt ja sich zu Null ergeben.
Das heißt, ich weiß,
dass die Summe aller Delta TI1 bis Delta TIK,
dass der sich zu Null addiert
Was steht jetzt auf der rechten Seite? Naja,
da steht nichts weiter, als die Matrix, Delta,
mein Parrick-Bild von W. Denn durch geschicktes Umsortieren bringe ich erst mal alle Transitionen.
Tay 1 und deren Effekt, ganz oft nach links,
sammle die zusammen und stelle fest, aha,
die kommen 15 Mal vor, also 15 Mal,
den Effekt von Delta, T1. So,
und wenn ich das für jede Transition mache und das kopiere,
dann rechne ich im Endeffekt nichts weiter aus als Delta,
die Wirkungsmatrix des Netzes
Dem Panikwerker von wem. Und da ich weiß,
dass der Panikwektor von W eine Innenvariante ist,
steht dort, Delta mal in Variante J.
Und das ist null. Das heißt,
da ich hier ausgerechnet habe, null ist gleich Delta mal Panikvektor,
ist das nichts anders als Parek Vektor, von W ist eine TN-Variante.
Und umgekehrt, wenn die eine TN-Variante habe,
dann folgt daraus, dass die Schaltfolge natürlich
einen Effekt von null hat
Gucken wir uns das mal ein Beispiel an.
Nehmen wir lieber wieder das Leserschreiber-Problem. Links die Leser in
der Mitte, die Ressourcen rechts, die Schreiber.
Da ist nochmal die Wirkungsmatrix angegeben. Und jetzt kann man
hier einen Vector angeben. 1111000. Und das ist jetzt,
wenn man das nachrechnet, eine Invaviante, eine Teen-Variante.
Für jede Transition eine Komponente. Ich habe hier noch
eine zweite. Und wenn ich das ausrechne,
dann lege ich diesen Vector halt auf jede Zeile der Matrix
Multiplizierdat an jeder Komponente, addier das auf. Das heißt,
minus eins, mal eins, plus 0 mal 1 plus
einmal eins, da hat der Backdoor nur noch null.
Das hebt sich gerade zu null auf. Das war die
erste Zeile. Und so geht das immer weiter. Und dann,
wenn man das ausrechnet, brav für diesen Vektor 1-
1-1-0-0-0,
dann komme ich eben raus, aha,
wenn ich Delta mit diesem Vektor multipliziere,
dann kommt der Null-Vektor raus.
Wenn ich möchte, kann ich jetzt auch Vektor nehmen,
die ein Vielfaches davon sind
Also zum Beispiel kann ich dreimal den ersten Vektor und zweimal
den zweiten Vektor nehmen, dann kriege ich den Vektor.
3-3-3, 2-2-2. Ja,
also Linearkombinationen, wenn ich positive,
natürlich zahle ich hier Koeffizienten habe, sind immer noch TN-Varianten.
Jetzt wollen wir mal gucken, was bedeutet das,
wenn dieser Vektor schaltet? Nee, nochmal zurück. Ich
dachte, ich hätte das vorbereitet. Das heißt jetzt,
wenn mich eine Schaltfolge finden kann, die die erste Transition A,
dreimal schaltet, die zweite Transition B, dreimal schaltet,
die dritte Transition auch dreimal schaltet, dass ich dann wieder am Anfang bin.
Und wenn ich dann oder irgendwie eingestreut zweimal D,
zweimal E und zweimal F schalten kann,
dann kann ich das auch machen.
Ich habe wahrscheinlich die Woche bekommen. Ich nehme den ersten,
den oberen Vektor multiplizieren mit drei.
Dann ist das der Vektor 3, 3,
3. 0-0-
Und ein positives Vielfaches von einer Innenvariante,
von einer TN-Variante ist wider eine TN-Variante.
Die zweite Zeile multipliziere ich mit zwei. Habe ich wieder
eine TN-Variante. Die Summe zweier TN-Varianten ist auch eine TN-Variante.
Und die Summe dieser beiden ist jetzt als J bezeichnend.
So, jetzt haben wir hier einen Innenvarianten-Vektor. Jetzt ist erstmal
nicht klar, gibt es überhaupt eine Schaltfolge dieser Bauart?
Also diese Häufigkeitsverteilung hat, die ich aktivieren kann.
Das ist erstmal
überhaupt nicht klar
Das ist schon aus dem Grunde nicht klar,
dass ich gar nicht weiß, welche Anfangsmarkierung das Netz hat.
Selbst wenn ich dieses Netz nehmen würde und ich entferne einfach von Lock alle token.
Denn passiert in diesem Netz gar nichts mehr.
Trotzdem wäre J eine In-Variante, aber ich habe keine Schaltfolge,
deren Häufigkeitsverteilung, also der Parmic-Vektor, J entspreche.
Das behauptet der Satz, den wir eben hatten, auch nicht.
Der sagt nur, wenn ich eine Schaltfolge habe,
die das als Häufigkeitsverteilung hat, dann Markierung reproduziert.
Ja, die reine Existenz einer Tee-In-Variante hilft mir überhaupt nichts,
um auszuprobieren, ob es eine solche Schallfolge gibt oder nicht.
Ja, das muss ich selbst noch nachliefern.
Das ist in diesem Fall nicht schwer, denn ich kann ja
hier ganz einfach einmal A, B, C durchschalten.
Ja, das ist der Vektor, der Erste,
der Unbenannte, die erste Themenvariante. Das kann ich tatsächlich schalten.
Und nach diesem Schaltvorgang bin ich auch tatsächlich wieder eine Anfangsmarkierung,
denn einmal A, B, C durchschalten,
das Token auf Lock zurück und auch die eine Ressource.
Er wird wieder zurückgelegt. Das heißt, die Schallfolge A,
B, C hat genau die Häufigkeitsverteilung 1, 1,
1, 0, 0. Dagegen die Schaltfolge A,
C, B, die hat die gleiche Häufigkeitsverteilung.
Ja, ist aber nicht schaltbar. Nachdem ich
A geschaltet habe, ist C noch nicht aktiviert.
Das heißt, es gibt auch eine Menge Schaltwort B,
die haben diese Häufigkeitsverteilung,
ohne dass sie aktiviert werden
Die Beziehung ist aber auch nur, wenn W aktiviert ist, dann reproduziert ist die Markierung.
Und genauso kann ich für den zweiten Wecker feststellen,
an sich ist auch für den das leicht eine Schaltfolge zu finden,
nämlich die Schaltfolge DEF, reproduziert auch die Anfangsmarkierung wieder, alleine für sich.
Ja, und wenn ich das habe,
weiß ich das schon für die beiden und keiner hindert mich das jetzt zu sagen,
okay, wenn ich schon weiß, 3-1,
3-0 hintereinander, das kriege ich hin,
dann kann ich das auch dreimal hintereinander machen.
Also ABC,
ABC, ABC
Und dann DEF, DEF, das ist eine Schaltfolge,
die hat genau die Häufigkeitsverteilung, wie sie in J angegeben ist.
Und wie wir uns eben klargemacht haben, reproduziert sie,
dreimal links gehen, dreimal rechts gehen,
zweimal rechts gehen, genau die Anfangsmarkierung M0. So,
das ist eine T-In-Variante,
die sagt mir etwas über die Unveränderlichkeit von Markierung oder genauer,
wenn es eine Schaltfolge weh gibt,
deren Häufigkeitsverteilung eine Teen-Variante ist,
dann wird die Ausgangsmarkierung
M1 nach dem Schalten von W reproduziert
Das kann ich mit Tee in Varianten machen. So,
und jetzt kann ich noch mit Tee in Varianten mehr machen,
da kann ich noch innere Beziehungen herstellen. Wenn ich mich weiß,
das Netz ist beschränkt, dann weiß ich,
es gibt nur endlich viele erreichbare Markierungen, das heißt,
wenn ich jetzt eine unendliche Schaltfolge betrachte,
ich nehme also ein Element aus Teo,
Omega, eine Omega-Folge, die ist ja unendlich lang,
es gibt aber nur endlich viele Markierungen,
das heißt,
zwangsläufig müssen einige der Markierungen der erreichbaren Markierung
unendlich oft durchlaufen werden
Geht gar nicht anders. Bei endlich vielen muss ich mal
was wiederholen. Nicht alle, aber einige.
Wobei ich auch nur endlich viele Transitionen im Erreichbarkeitsgrafen habe,
müssen auch einige Transitionen mindestens ein und endlich oft vorkommen in dieser Omega-Folge.
Und jetzt ist die Aussage, es gibt sogar eine Teen-Variante
J, die die Eigenschaft hat.
Sie ist an dem Index T 0,
falls Teen nur endlich oft oder gar nicht vorkommt in dieser
unendlichen Schallfolge
Und sie hat einen Wert größer als null, falls Tee
unendlich oft vorkommt. Gut, das ist ein technisches Lämmer,
das sagt einem einfach etwas aus, mit Invarianten kann ich gewissermaßen feststellen,
welche Transitionen unendlich auch vorkommen und welche nur endlich.
Das heißt, das ist ein Messinstrument für unendlich häufiges Auftreten.
So und damit kann man was machen, damit kann man
mich beweisen, dass manche Netze nicht lebendig sein können.
Wenn ich weiß, dass ich schon ein beschränktes Netz habe,
Und ich weiß auch irgendwie schon, es ist lebendig.
Dann ist die Aussage, dann existiert eine echt positive Tee in Variante,
J und echt positiv heißt, für alle Komponenten,
J von T ist der Wert echt größer als null.
Also was ähnliches hatten wir vorher schon,
das nannte sich bei S in Varianten, ja,
war das ein Indikator für strukturelle Beschränktheit.
Hier haben wir eine ähnliche Variante in Variante J,
die ist auch auf allen Komponenten echt größer als null.
So, hier ist aber die Aussage, wenn ich schon weiß,
dass das Netz beschränkt und lebendig ist, dann weiß ich,
es muss eine Seuche geben.
Beim anderen Satz habe ich vorausgesetzt, dass ich eine habe.
Hier habe ich ein Existenzkriterium, ich weiß,
für beschränkte, lebendige Netz muss es eine In-Variante geben.
So, damit kann man jetzt Folgendes machen. Angenommen,
ich weiß nur, dass das Netz beschränkt ist.
Ich weiß aber nicht, dass es lebendig ist.
Es ist vielleicht lebendig, vielleicht ist es auch nicht lebendig.
Und dann fange ich an, T-In-Varianten auszurechnen. Gut,
das müssen jetzt Lösungen sein in den positiven ganzen Zahlen.
Also natürliche Zahlen sind nur als Lösung zugelassen. Man kann
das aber auch lösen. Es ist ein bisschen aufwendiger,
komplizierter, geht nicht mehr mit dem Gaus-Verfahren.
Beim Gaus-Verfahren brauche ich mich manchmal die Multiplikation mit negativen Zahlen.
Das darf ich hier nicht machen so einfach.
Aber das geht. Ich kann also herausfinden, ob es
eine T-In-Variante gibt. Sprich, ob es eine Lösung gibt,
die in N hoch T liegt. So,
und wenn ich jetzt feststelle, es gibt gar keine T-In-Variante,
dann schließe ich jetzt rückwärts, naja,
wenn es keine gibt,
dann kann das Netz auch nicht lebendig sein
Denn wäre es lebendig, dann hätte ich ja eine TN-Variante haben müssen.
Ja, und das ist gewissermaßen die Werkzeugsicht auf dieses Theorien.
Ich kann nicht Lebendigkeit zeigen. Ja, typischerweise will ich
natürlich die Lebendigkeit haben. Aber gewissermaßen um eine Fehlerquelle,
den Benutzer zu melden, ist das ganz praktisch.
Ich habe irgendwie schon festgestellt, das Netz ist beschränkt.
Vielleicht ist es sogar strukturell beschränkt und ich habe das durch eine S-In-Variante festgestellt.
Dann rechne ich noch eine TN-Variante. Er will ich ausrechnen
, stell fest, es gibt aber gar keine.
Dann kann ich dem Benutzer sofort sagen,
bei Netz ist gar nicht lebendig
Ja, und vielleicht ist das eine wertvolle Information.
Und das ist deswegen so attraktiv, wie der aus Komplexitätstheoretischen Erwägung.
Denn es ist sehr viel einfacher,
Tee in Varianten auszurechnen und dann festzustellen, es gibt gar keine,
als erstmal den Erreichbarkeitsgrafen zu konstruieren und dort alle schrengen Zusammenhangskomponenten auszurechnen.
Wissen wir zwar, geht in Linearzeit,
aber linear in der Größe des Erreichbarkeitsgrafen.
Und der ist ja verdammt groß. Also das ist ein
hilfreiches Kriterium. So, und warum ist das so
Denn wir wissen, dass Netzens beschränkt, es ist lebendig,
dann wissen wir also, nachdem Theoreten das direkt darüber steht,
es gibt nur unendliche Schaltfolge weh,
in der kommen alle Transitionen endlich oft vor.
Das liegt daran, dass es lebendig. Also kann ich
das so hinstricken, dass ich erst sage, Transition T1 schaltet.
Dann mache ich irgendwas, um T-2 zu aktivieren.
Dann mache ich noch irgendwas, um T3 zu aktivieren. Und immer so weiter,
wenn ich bei der letzten Transition TK angekommen bin,
sage ich, okay, jetzt wieder eine Schaltfolge finden,
um T1 zu aktivieren
Weil das Netz lebendig ist, kann ich egal,
wohin ich gekommen bin, egal welche Transition gerade aktiviert werden soll,
es immer schaffen, sie zu aktivieren.
Und so kriege ich immer T1, irgendwas, T2,
irgendwas, T3 und so weiter.
Also alle Transitionen, Sequenz mit Lücken dazwischen, wo irgendwas drinsteht.
Aber sie kommen alle unendlich oft vor. So eine Schaltfolge
W habe ich. Und jetzt weiß ich ja,
das obere Theorien sagt ja,
wenn ich ein beschränktes Netz habe und ich habe eine unendliche Schaltfolge,
dann gibt es eine In-Variante J. Und alle Indie CST,
an denen Und die Transitionen, die da unendlich vorkommen,
da ist es echt größer als null.
Für unsere Schaltfolge W ist es jetzt so,
dass alle Transitionen unendlich häufig vorkommen. Das heißt,
ich habe mit dem oberen Theorien eine In-Variante J bekommen,
die in allen Komponenten größer als null ist.
Echt größer als null. Das heißt, wenn das Netz
beschränkt und lebendig ist, dann gibt es diese In-Variante.
Fertig. Kann man auch ein bisschen direkter beweisen,
wenn ich weiß, dass das Netz lebendig ist,
ich diese Schaltfolge, in der alle Transitionen vorkommen, konstruieren.
So, und da das Netz beschränkt ist,
das weiß ich ja auch, gibt es nur endlich viele erreichbaren Markierungen.
Das heißt, in dieser Folge muss es irgendwo eine Markierung geben, die doppelt vorkommt.
Also irgendwo gibt es einen MI und einen MJ,
an irgendwelchen Positionen. Und die sind gleich. So,
MI führt also zu MJ und das ist wieder MI.
Mit einer Schaltfolge W. Zwei sind gleich. So,
und jetzt weiß ich, ich komme von Markierung MI
zu MJ mit einer Schaltfolge
Und das ist genau die Situation, die wir für die Themen-Varianten hatten.
Ja, ich nehme also, in den Weg kommen schon alle Transitionen vor.
Das kann ich so hinbauen, dass da alle drin sind.
Und jetzt weiß ich also, das W ist,
wenn ich da die Häufigkeitsverteilung zähle, also den Panikmektor bilde,
dann kommt da eine Tee im Variante raus.
Also kann ich direkt mit der Eigenschaft von Tee
in Varianten an dieser Stelle argumentieren.
So, das sind so die hauptstrukturellen Eigenschaften,
die wir haben
Wir können was aussagen über Markierung,
indem wir uns in Varianten von Stellen anschauen.
Also das Gleichungssystem Delta-Trimai ausrechnen und das null setzen.
Oder wir können mit Teen-Varianten etwas beweisen. Wir rechnen also Lösungen aus,
die aber positiv sein müssen oder null in den Komponenten.
Und damit können wir reproduzieren, das Verhalten beschreiben.
Und das hat noch ein paar Auswirkungen,
wie wir hier gesehen haben. Konsequenzen für beschränkte Netze.
Was kann man jetzt noch machen
Weitere Konstrukte einführen, die auch strukturelle Natur sind.
Und das sind sogenannte Fallen oder das komplementäre dazu,
Koh fallen, manchmal auch Science genannt.
So, was sind jetzt Fallen? Also das erste Mal ist wichtig,
wir vergessen Kantengewichte, wir betrachten jetzt Netze ohne Kantengewichte.
Das heißt, alle Kanten haben das Gewicht 1 automatisch.
Und eine Falle, das ist eine Teilmenge A,
der Menge der Plätze eines Netzes und die haben eine nette Eigenschaft,
nämlich eine Transition Tee, die aus A,
Marken entfernt, tut auch wieder welche rein.
Ja, oder formaler, ausgedrückt in der Definition,
eine Stellenmenge A heißt Falle im Englischen Trap. Wenn jede Transition,
die aus A-Marken entfernt, auch wieder Marken agineriert,
das heißt für alle Tee aus Tee gilt,
wenn Tee im Nachbereich von A ist, dann nimmt sie ja was raus.
Dann ist Tee auch im Vorbereich von A,
legt also wieder was in den Bereich rein.
Ja, das kann man jetzt auch kürzer schreiben als Nachbereich
von A ist eine Teilmenge des Vorbereichs von
So, aber wichtig ist für uns jetzt,
wenn ich was rausnehme, wenn ich eine Transition habe,
die etwas rausnimmt, dann lege ich auch automatisch wieder was rein.
Also sehr brav. Und so wie man sich das denkt,
nennt man eine Falle in der Markierung M markiert,
wenn dies mindestens eine Stelle in A ist.
Das heißt, ich bilde die Summe aller Markierung von Plätzen
LNA vorkommen, also Summe über alle MP für POS A.
Ja, und wenn der Wert größer ist als null,
dann nenne ich das Ganze markiert
Ist eine Marke offensichtlich in A drin. Wo interessiert mich nicht? Nur,
ich weiß, in dieser Stellenmenge ist irgendwo eine Marke.
So optisch sieht das denn so aus, ne?
Dieser graue Bereich mit P und Kuh da drin und da sieht man,
wenn ich eine Transition Tee betrachte, der Pfeil,
der da raus was rausnimmt, ja,
von P wird was entfernt, dann ist das nur dann in Ordnung,
wenn irgendwie auch wieder was reingetan wird, das heißt,
es muss immer eine Kante auch wieder reingeben, in diesem Fall zur Kuh.
Oder kann man sich jetzt ein Beispiel letztes Mal ansehen, dies hier
Da ist dieser Grau schattierte Bereich tatsächlich eine Falle.
Also die Plätze groß A, C.D. bilden eine Falle.
Das kann man so durchgehen mit den Transitionen von A.
Da kann ich ja was rausnehmen, aber dann lege ich
automatisch gleich wieder was auf groß C.
Von C kann ich auch was rausnehmen. Die ganz untere
Transition macht das, die legt aber auch wieder was rein,
nämlich auf E. Die Transition darüber nimmt was raus,
legt aber auf D was.
Legt also immer wieder was rein
Oder wenn ich von D oder von E was runternehme,
diese Transition tut das ja, die ganz rechts,
die legt auch wieder auf A, was zurück.
Das heißt, dieser Bereich ist tatsächlich eine Falle.
Es ist sogar eine Anfangsmarkierte Falle,
die Initialmarkierung hat ja genau eine Marke in diesem Bereich.
Ja, und es ist nicht so verwunderlich. Ich habe ja die Eigenschaft,
wenn eine Transition was rausnimmt, paar Marken werden aus der Falle entfernt,
dann tue ich auch wieder was rein.
So, deswegen ist es gar nicht möglich,
eine Falle, die schon markiert ist,
komplett leer zu machen
Da er auch der Namen,
da ist mindestens eine Marke immer drin befangen in der Falle.
Sobald dann eine Marke ist, mindestens eine,
wenn ich die irgendwie rausnehme oder mehrere nehme, ja,
dann lege ich auch wieder was zurück.
Natürlich kann es so sein, dass da Marken weniger werden.
Die Markierungsanzahl bleibt nicht unbedingt konstant. Aber es ist so,
dass es auf jeden Fall nie leer werden kann.
Es kann vielleicht Folgendes passieren, ja,
da sind so wenig Marken dann irgendwann drin
Dass es gar keine Transition mehr aktiviert. Mit einer Marke
reicht das vielleicht gar nicht mehr. Naja, aber die
bleibt dann da auch auf alle Ewigkeiten liegen. Das heißt,
eine Falle eines Netzes, die in der Markierung M. 0 markiert ist,
ist dies auch für alle Markierungen, die ich aus M.0 erreichbar erreichen kann.
Also hier für alle M.0 gilt, wenn die Falle A,
initial markiert ist, also die Summe von M.0,
von P über alle P ist größer als null,
dann gilt das,
dass für alle erreichbaren Markierungen M,
die ich von M.0 in N erreichen kann,
Dass dann in dieser Markierung M das Ganze auch erreicht ist.
Du lasst euch nicht von dem Fett und nicht Fett irritieren,
also M ist immer eine Markierung.
Und hier unten ist ein Beispiel, da sieht man,
es gibt verschiedene Fallen, also eine markierte Falle in diesem Beispielnetz
ist die Menge, die alle Plätze enthält.
Denn ja, also die Eigenschaft, naja,
wenn ich was rausnehme, tue ich auch was rein.
Ist klar, wenn ich alle Plätze habe,
da habe ich eine Transition,
wenn die überhaupt irgendwie einen Pfeil im Ausgangsbereich hat,
dann legt sie immer wieder was rein in die Platzmengen
Das heißt, wenn es nicht komische Transitionen gibt,
sage ich mal, die gar nichts mehr zurücklegen,
dann ist die gesamte Menge P auch immer eine Falle.
Was aber auch der Fall ist, BC,
diese beiden Plätze, die sind auch,
das ist auch eine Falle, die beiden zusammen.
Denn die einzige Transition, die da was rausnimmt, ist B.
Die legt aber einen Mark auf C. Dass danach nichts mehr
geht, ist nicht weiter schlimm.
Und C selbst ist auch eine Falle. Denn es gibt
gar keine Transition, die da was rausnimmt.
Und die Aussage ist nur alle Transitionen,
die was rausnehmen
Müssen, was reinlegen, wenn es gar keine solche gibt
, ist auch in Ordnung. Mit Sackgassen,
Sackgassen sind immer Fallen, so im eigentlichen Sinne,
dass die mag auf jeden Fall gefangen.
Aus C kommt sie ganz offensichtlicherweise nie mehr raus. So,
jetzt gibt es noch so was Ähnliches,
das komplementiere Konstrukt zu fallen oder Englischstöps,
das sind entweder Co-Fallen oder in der Literatur gibt es eine ganze Menge bezeichnen,
die heißen manchmal Seifen oder Abfluss oder sonst was
Da Seifen vielleicht nicht ganz so eingängig ist,
wird das manchmal einfach nur als Co-Falle bezeichnet.
Denn was wir jetzt machen, ist nichts weiter als die logischen Beziehungen,
also die Implikationsrichtung umzudrehen. Ein Seifen, ein Abfluss,
eine Co-Falle, ist eine Stellenmenge A, die die Eigenschaft hat.
Jede Transition, die der Marken reinlegt, muss vorher welche rausgenommen haben. Ja,
oder wie es da steht für jede Transition, kleinen Tee,
gilt, wenn eine Transition im Vorbereich von A ist,
also was reinlegt, dann nimmt sie auch was aus dem Bereich raus.
Oder eben kurz, jetzt die Kuller eben genau andersrum angebracht,
Vorbereich von A ist eine Timemenge des Nachbereichs von A. So und wie eben,
sage ich auch, ein Seifen heißt markiert,
wenn mindestens eine Stelle des Seifens markiert ist.
Da gibt es mindestens eine Mark. So,
jetzt kann man überprüfen, die Leere Platzmenge, ja,
diesen Seifen, aber auch ein Trap und die Stellenmenge P
selbst ist auch Seifen und auch eine Trap,
eine Falle
Und das sieht jetzt ganz analog aus, eine Co-Falle,
immer, wenn ich was raus, wenn ich was reinlegen möchte,
dann muss ich vorher was rausnehmen. Und das hat jetzt zur Konsequenz,
wir können uns das nochmal in diesem Bildchen angucken,
da habe ich ja zwei Möglichkeiten, also immer,
wenn ich was reinlegen will,
die Orangefarbene, die kann was reinlegen,
die legt mir mich da in den oberen Platz was rein,
aber dazu braucht sie eine Marke aus der Falle selbst.
Die blaue, die legt auch was rein und braucht auch eine Marke,
nämlich markierte, die Marke, die gerade da ist, um was reinzulegen.
Das heißt, dieser Bereich ist eine Kohfalle oder ein Abfluss.
Und warum heißt das Abfluss? Naja,
wir können uns mal vorstellen, was passiert,
wenn das Ding durch widrige Umstände, dieser graue Bereich,
vielleicht gibt es da noch was anderes,
wenn der mal leer wird.
Ja, ich erreiche jetzt gerade mal eine Markierung,
da sind gar keine Marken mehr drin.
Kann ich denn Hoffnung haben, dass irgendwann eine Transition
mal so nett ist,
da mal wieder was reinzulegen
Nee, das kann ich nicht. Denn jede Transition,
die was reinlegt, wir gucken nur mal auf die linke Seite,
eine Transition Tee, die was reinlegt,
braucht mindestens eine Marke von einem Platz,
hier ist es Kuh, der in dieser Menge drin liegt.
Wenn aber jeder Platz unmarkiert ist, dann ist ja auch Kuh unmarkiert und deswegen ist Tee nicht aktiviert.
Das heißt, sobald einen Falle mal leer geworden ist,
also alle Marken sind da rausgeflossen aus dem Abfluss,
dann ist es nicht mehr möglich,
die noch mal wieder zu füllen, weil alle Transitionen,
die das tun könnten, Nicht mehr aktivierbar sind.
Sie sind dann auch tot. Das ist insbesondere auch der Fall,
wenn ich eine Menge, eine Falle habe,
die ist unmarkiert, dann habe ich eine ganze Menge Transition,
die nicht mehr lebendig sein können.
Das heißt, sobald ich eine Falle gefunden habe, ich weiß,
sie kann leer werden, dann kann ich sofort sagen,
welche Transition auf jeden Fall nicht lebendig in diesem Netz sein können.
Nämlich alle die, die was reinlegen.
Der gesamte Vorbereich der Falle ist dann nämlich nicht lebendig.
Vielleicht noch ein paar mehr,
aber die auf jeden Fall
Ein ausgesprudelter Seifen. Ja, Sifon ist eben auch dieser Soda-Sprudler.
Ja, deswegen ist das vielleicht ein bisschen unglücklich, aber Seifen eben auch Abfluss.
Sobald sich der mal gelehrt hat, wird er nicht wieder voll.
Denn füllen kann das nur durch Schalten von Transitionen,
die bereits Marken aus diesem Seifen benötigen würden.
Und deswegen gilt die Aussage,
wenn ein Seifen A in einer Markierung M0 unmarkiert ist,
dann bleibt er unmarkiert in allen von M0
aus erreichbaren Markierungen.
Wie sieht das hier aus? Was habe ich dort
für Kohfallen oder Seifens? Die gesamte Stellenmenge ist klar,
aber auch der Bereich A, B. Die ersten beiden Plätze,
wenn die erstmal leer geworden sind, dadurch,
dass die Transition A und B geschaltet hat,
habe ich keine Chance, da wieder eine Marke reinzukriegen.
Oder wenn ich nur den Bereich A betrachte,
der nur den Platz A enthält, das ist eben so,
nachdem ich die Transition kleiner geschaltet habe,
es ist nicht mehr möglich,
da noch eine Marke reinzukriegen.
Diese Teilmenge von Plätzen ist
unwiederbringlich leer geworden
So, was kann man damit jetzt machen?
Wir wissen also, Sciphans, die einmal leer geworden sind,
bleiben das für immer. Wir wissen aber auch,
dass andere, wir haben ja noch die Traps,
Traps sind Bereiche, die niemals leer werden können,
wenn sie irgendwann mal nicht leer starten.
Das heißt, ich nehme mir jetzt eine Falle,
wenn ich da ein paar Marken drin habe,
weiß ich immer, da bleiben noch ein paar Marken drin.
Und wenn ich jetzt solch eine Falle mal reinpacke in so eine Co-Falle,
also ein Sciphan, Dann habe ich doch eine Teilmenge da drin,
die nie leer werden kann.
Das heißt, es tritt nie die Situation ein,
dass sich das Ding leer sprudeln kann.
Das ist so die Grundidee, wir kombinieren die beiden Eigenschaften jetzt.
So, und das ist dann die Sci-Fi-Trap-Eigenschaft.
Wir nehmen eine markierte Fall A, sie wird nie leer.
Und wenn das Teilmenge von einem Seifen B ist,
kann B auch nie wieder leer werden.
Ja, weil die Teilmenge davon auch nicht leer werden kann.
Und ein solches Netz N ungewichtet, das hat die Sci-Fi-Trap-Eigenschaft,
wenn gilt
Jeder Seifenb von diesem Netz N hat eine Falle A als Teilmenge
und diese Initialmarkierung markiert, also anfangs markiert. So,
wenn ich das habe, da habe ich eine glückliche Situation,
denn wenn ein Netz wie Seifentrap-Eigenschaft hat, dann weiß ich,
jeder erreichbare Markierung von N aktiviert mindestens eine Transition.
Das heißt, im Umkehrschluss, dieses Netz ist verklemmungsfrei oder
nicht im Umkehrschluss, das heißt, direkt ist es verklemmungsfrei.
Es gibt immer mindestens eine Transition,
die schalten kann
Das ist ja schon mal was. Ich weiß noch nicht,
ob es lebendig ist, aber ich weiß auf jeden Fall
schon mal, verklemmen kann es nicht.
So, und da haben wir jetzt ein ganz interessantes Kriterium,
weil Sci-Fi und Traps kann ich mit etwas Glück ja wieder an der Netzstruktur ablesen.
Ich muss nicht den Erreichbarkeitsgrafen dafür bilden. Das geht also
vielleicht sehr einfach, also deutlich unter einem exponentiellen Aufblähen.
So, und wenn ich jetzt alle Zeife habe,
dann kann ich ja nachgucken,
enthältst du eine Falle A
als Teilmenge
Da kann ich alle abklappern und kann nachgucken,
ob da eine Marke drin liegt in diesem Bereich.
Ja, und wenn man das nicht allzu dumm macht,
dann kriegt man das auch wieder unter,
exponentiell unter exponentieller Zeit, also in Polynomenzeit am besten.
Und dann weiß nicht,
dieses Netz hat die Sci-Fi Trap-Eigenschaft und dann weiß ich sofort,
wenn das gilt, dann habe ich einen verklemmungsfreies Netz.
Eine Lebendigkeit habe ich noch nicht, aber immerhin Verklemmungsfreiheit.
Woran liegt das?
Wir machen Widerspruchsbeweis
Wir nehmen mal an, das Netz N wäre nicht verklemmungsfrei,
dann muss es ja eine Verklemmung geben.
Also nehmen wir mal an, die Markierung Emse eine Verklemmung.
Dann betrachten wir die Menge B und das ist die Menge aller Plätze,
die jetzt in dieser Verklemmungsmarkierung M unmarkiert sind.
Also die Menge aller Plätze mit M von P gleich Null.
Diese Menge B ist jetzt ein Zeifen.
Warum? Angenommen, ich habe eine Transition Tee,
die da was reinlegt
Das wäre eine Transition, die da was rausnimmt. Entschuldigung,
das wäre eine Transition, die ich dir aktivieren könnte.
So, das weiß ich aber, eine solche Transition.
Tee ist ja nicht aktiviert. Weil es nicht aktiviert ist,
das kann nur daran liegen,
es gibt gerade einen Platz, der unmarkiert ist.
Während alle Plätze im Vorbereich von Tee markiert,
dann wäre Transition Tee ja selbst zum Schalten gebracht.
Könnte man sie zum Schalten bringen.
So, also da ist mindestens ein Platz
Geben muss, der unmarkiert ist,
damit dieser Fall eintritt, TK nicht schalten,
denn T ist ja diese Markierung ist ja eine Verklemmung,
muss dieser Platz im B liegen.
Dieser unmarkierte Platz ist ja nach Definition bereits im B enthalten.
So, was habe ich jetzt bewiesen? Für jede Transition Tee,
die im Vorbereich von B liegt,
gibt es mindestens einen Platz P aus dieser Menge im Vorbereich
von Tee
So, jetzt weiß ich aber, Tee,
andersrum formuliert, liegt im Nachbereich von P. Ja,
jemand hat nicht gesagt, Pee liegt im Vorbereich von Tee,
aber das ist nichts anderes als Tee liegt im Nachbereich von P, genau andersrum.
Da PMB liegt, ist der Nachbereich von P, erst rechnet Teilmenge des Nachbereichs von B.
So ist das für Mengen definiert. So,
und jetzt weiß ich, wenn man das zusammensetzt,
in der zweiten Zeile hatte ich gesagt,
die Annahme ist Tee ist im Vorbereich von B. Und jetzt konnte ich zeigen,
Tee ist auf jeden Fall enthalten im Nachbereich von B.
Und das gilt für jede Transition. Das heißt,
insgesamt habe ich gezeigt, der Fuhrbereich von B ist enthalten im Nachbereich von B.
Und das ist genau die Definition, dass eine Menge B
ein Sci-Fi ist. So, also eine interessante Nebeneigenschaft,
wenn ich ein Netz habe, das verklemmt,
dann ist die Menge der unmarkierten Stellen gerade ein Seifen.
Netter Nebeneffekt. So, und jetzt wissen wir Folgendes,
B ist unmarkiert
Da ich keine Marken da habe, weiß ich, okay,
auf jeden Fall erst recht keine anfangs markierte Falle als Teilmenge.
Denn gar keine Teilmenge von B ist markiert, also auch
keine Falle, die da eventuell eine Timinge ist. So,
das heißt aber, dass N nicht die Scifen-Trap-Eigenschaft besitzt,
denn um die Scifen-Trap-Eigenschaft besitzen zu können,
muss ja jeder Scifen eine Trap als die anfangs markiert ist,
als Timing enthalten.
Gut, also bekomme ich einen Widerspruch zu der Grundannahme,
dass Andy Scifen-Trap-Eigenschaft gehabt hätte
Gut, das soll jetzt für die strukturellen Eigenschaften
erstmal alles sein. Kommen wir zu einem neuen Thema,
dass es so auch erst, sagen wir mal,
für verteilte Systeme gibt, nämlich Fairness.
Wir hatten das bei Model-Checking schon mal angesehen. Fairness gibt
es bei normalen Systemen nicht. Also bei einem Java-Programm,
wenn ich mal Threads ausklammere, stellen sich keine Fragen von Fairness.
Das liegt schlichtweg daran, dass imperative Programme auf
einen Prozessor Maschinen sequenziell abgearbeitet werden und das ganz deterministisch
So, wenn ich dann nur einen Prozessor bediene,
kann ich da auch niemanden benachteiligen. Das sieht schon anders aus,
wenn ich zwei Prozesse habe und die sollen irgendwie sich abwechseln.
Das heißt, es gibt nur einen Prozessor,
zwei Prozesse laufen darauf und durch irgendwie ein Scheduling sollen die zum Terminieren beide gebracht werden.
Jetzt können die Folgendes machen, beides sind Endlosschleifen.
Dann könnte es zum Beispiel sein,
dass nur der eine Prozess immer ausgewählt wird,
nur der läuft und der andere nie.
Das wäre also
unfaires Verhalten
Oder wenn ich ein Petri-Netz habe, zwei Transitionen könnten immer schalten,
aber ich nehme immer nur die eine zum Schalten.
Das ist auch keine faire Art zu schalten. Soll in
einem solchen System ist es also schon wichtig zu fragen,
was ist denn Fairness, wie kann ich das modellieren,
was bedeutet das? Und das klassische Beispiel, hier illustriert,
sind die sogenannten fünf Philosophen. Sein Beispiel,
das kennt man mittlerweile hauptsächlich aus Betriebssystemen oder verteilten Systemenvorlesungen,
aber das Grundszenario ist folgendermaßen,
wir haben hier fünf Philosophen,
die Card Platon und so weiter,
Die sitzen um den Tisch vor ihnen,
ist eine leckere Schüssel, schmalz mit Spaghetti.
Und sie haben, Sparrmaßnahme, jede eine Gabel.
Ja, und links liegt sie meinetwegen.
Jeder hat auf der linken Seite eine Gabel. Zum Essen,
das ist jetzt die Konvention, braucht man zwei Gabel.
Fragt mich nicht, wie die essen, aber die brauchen zwei Gabeln.
Und sie nehmen jetzt einfach ihre linke Gabel und die rechte Gabel von Nachbarn.
Welche wem nun gehört es eigentlich egal? Hauptsache,
ja, neben meinem Teller liegen zwei Gabel,
dann nehme ich sie mir und dann haue ich rein.
Dann esse ich
eine Weile
Ich dann erst mal gesättigt bin, gehe ich als Philosoph
in den Denkzustand des Denkens wieder über. Wenn ich davon genug habe,
versuche ich wieder zu essen, vorausgesetzt, beide Gabeln sind da.
Und jetzt ist die Frage bei solchen Abläufen, ja,
schafft es, jeder Philosoph mal zu essen oder besonders gemein,
können die vier sich so absprechen, dass der fünfte verhungert.
Ja, nie beide Gabeln hat. Oder wenn man es technischer sieht,
ja, kann es durch einen dummen Zufall passieren,
dass sie ein Scheduling von fünf Prozessen habe,
bei dem im Prinzip jeder Prozess mal Ressourcen haben will,
aber die Ressourcenzuteilung gerade so dumm läuft, Also die wollen,
was weiß
ich, zwei Dateien immer beschreiben, die linke und die
rechte Datei. Ja, so ist das angeordnet. Und
durch einen dummen Zufall sind die nie beide gleichzeitig verfügbar.
Kann das so sein, dass sich die anderen vier Prozesse
gerade immer so aktiviere und denen die Ressourcen zu billige,
dass der fünfte Prozess nie zum Zuge kommt.
Obwohl es nicht sein müsste, man kann sich klar machen,
es könnte ja beispielsweise erst der erste Philosoph essen,
fertig werden, dann der zweite, fertig werden in der dritte,
vierte, fünfte.
Das ist nicht besonders schnell. Es können auch immer zwei
gleichzeitig essen und so weiter
Mehr können nicht essen. Zwei Philosophen geht gleichzeitig, die
brauchen dann vier Gabeln. Ein Dritter geht nicht gleichzeitig,
dann bräuchte man ja sechs Gabeln, sind aber nur fünf vorhanden.
So, zwei gleichzeitig geht immer. Das heißt,
man will natürlich nicht diese Lösung, wo man sagt,
der erste, der zweite, der dritte, der vierte,
der fünfte, sondern man möchte das ganz gut auslasten und sagt dann,
okay, immer zwei.
Und dann wird der eine mal in Pause geschickt und
dann darf er ein Dritter oder solche Sachen.
Kann ich das jetzt so blöd machen,
dass sich da irgendwie bei der Auswahl von vieren ungeschickt vorgehe,
dass ein Fünfter nie zum Zuge kommt.
So, und eine klassische Modellierung mit Petrinärzten, die jetzt ungefähr so aus.
Hier ist der Tisch. Ja, Teller, Gabeln,
fünf Philosophen, PH1, PR2, PR3, PR4,
PR5, fünf Philosophen.
Und das Essen und Denken modellieren wir jetzt so.
Wir haben ja einen Netzblock, da sehen wir ganz,
zu Anfang ist jeder Philosoph denkend.
Und er will in den Zustand essen.
Also ich esse gerade. Was muss er dazu machen?
Er muss ja irgendwie da die Gabeln zu kriegen. Ja,
und man kann das auch Idol und Active nennen,
wenn man das technische haben möchte
Und was brauche ich dazu von links und von rechts?
Ich brauche die Gabeln. Der obere Philosoph braucht also die
linke und direkte Gabel, bei Gabel 1 und Gabel.
Und jetzt ist es, sagen wir mal so,
es gibt zwei Varianten. Ich kann die Gabel nacheinander nehmen.
Dann ist das aber blöd. Dann gibt es nämlich die Situation,
ich lasse alle die linke Gabel nennen, nehmen.
Und dann passiert gar nichts mehr. Ja,
also der erste Philosoph nimmt Gabel 1,
der zweite Gabel 2 und so weiter.
Also von denen aus wäre es
die rechte,
aber gut
Dann haben die alle eine Gabel und dann passiert nichts,
weil sie die zweite nicht kriegen.
Also sollte man sich diesen gepunkteten Bereich atomar vorstellen.
Die nehmen einfach beide Gabel, damit das nicht in Verklemmung gerät.
Ja, und dann passiert Folgendes, wenn das brav läuft,
dann geht er jetzt in den Essenszustand, ist eine Weile aktiv.
Und wenn er fertig essen ist mit dem aktiven Prozessieren,
geht er wieder in den Ruhezustand und legt die Gabeln zurück.
Ja,
soweit so gut
Die ersten Probleme, die da auftreten können, ja,
es ist nicht verklemmungsfrei. Also Verklemmungsfreiheit in dieser Lösung ist nicht gegeben.
Die Situation, die ich eben meinte, ist diese.
Und dann geht nichts mehr. Das ist also nicht
so schön. Wenn es nicht verklemmungsfrei ist,
natürlich nicht lebendig, muss ich also irgendwie was tun.
Ich könnte zum Beispiel die gepunkteten Bereiche vergröbern,
dann kann das schon mal nicht mehr auftreten.
Genau dieses Problem gibt es nicht mehr. Wenn ich sage,
das ist eine atomare Handlung, beides gleichzeitig zu nehmen,
Den habe ich diesen Zwischenzustand nicht,
dann werden ja immer beide Gaben gleichzeitig genommen.
Bleibt also die Frage nach der Fairness?
Ist es fair? Wir brauchen einen Opfer, und jetzt
haben wir zwei, die sich da irgendwie absprechen müssen.
Und da kann man jetzt hingehen und sagen, okay,
können die beiden das schaffen, dafür zu sorgen,
dass der nie was zu essen kriegt?
Ja, die müssen dafür sorgen,
dass der rechte Mobber, wenn der ist,
dann ist ja
die Gabel G1 weg
In der Zeit kann der linke Mobber betrost aufhören zu essen,
das wieder zurücklegen, dann ist ja eine Ressource da.
Dann ist die Gabel 2 da, der eher,
der erste Philosoph kann aber nicht anfangen zu ächsen,
war der rechte Mobber noch aktiv beim Essen ist.
Sieht also nicht die rechte Gabel. So,
da musste der Rechte noch ein bisschen langsamer sein.
In der Zwischenzeit sind die Philosophen 3 nochmal.
Wer kann jetzt in der Zwischenzeit vielleicht essen? Denn ist
der fertig. Und der Linke, der sagt jetzt,
okay, du ratest ihn noch zeitrechter Mobber,
ich nehme mir jetzt wieder
die Gabel
Ja, denn es gab zwei weg.
Und dann erst liegt der rechte Mobber gemütlich die Gabeln zurück.
Und dann ist für Philosophen eins wieder die dumme Situation eingetreten,
dass er jetzt auch wieder nicht essen kann,
denn jetzt hat zwar der rechte Mobber die Gabel zurückgelegt,
aber der linke ist schon wieder am Essen.
Was übrigens auch dazu führt, da der rechte aufgehört hat zu essen.
Und der linke angefangen hat, kann jetzt der Philosoph links unten.
Der linke, der linke, der linke,
der hat jetzt beide Gabeln, kann essen. Das heißt,
wenn die beiden da oben sich geschickt absprechen,
dann führt das automatisch dazu, das ist der dritte und der vierte Philosoph,
auch zum Essen immer kommen.
Und da haben wir erste Philosophen nie.
Das heißt, hier haben wir ein gewisses Problem.
Und wir fragen uns, wie können wir dem Abhilfe schaffen?
Wir hätten gerne faires Verhalten, also da, wo es nicht auftritt.
Und da müssen wir jetzt verschiedene Fairness-Varianten jetzt mal durchspielen.
Was heißt das eigentlich? Fairness ist ja irgendwie etwas,
was eine globale Eigenschaft des Systems ist.
Faires Verhalten ist also irgendwie etwas, da mag ich,
es soll nicht passieren, dass sich unendlich oft möchte,
aber nur endlich oft kann.
Das wäre eine globale Eigenschaft. Kann ich das lokal zusichern? Ja,
und lokal zusichern heißt, kann ich die Schaltregel irgendwie fair machen?
Und da die Schaltregel immer nur eine Transition betrifft, ist das eine lokale Änderung.
Kann ich also mit lokaler Informationen dafür sorgen,
dass diese Transition irgendwie fair sich verhält und führt das denn
auf globaler Ebene dazu, dass etwas fair wird?
Das hängt weitestgehend, also wir wissen es erstmal nicht,
es hängt auch stark davon ab,
was wir jetzt als unfair und fair definieren
Ja, das ist genau dieser Unterschied, eben kann ich
mit etwas Lokalem das globale Verhalten irgendwie fair hinkriegen.
Und das ist natürlich wichtig, wenn ich ein verteiltes System habe,
verschiedene Rechnerknoten. Auf allem läuft ein lokales Betriebssystem,
wo lokal Ressourcen aluziiert und wieder freigegeben werden.
Ich möchte aber, dass ein gesamtes Rechnernetz in der Gesamtheit
sich irgendwie fair verhält. So, jetzt ist die Frage,
kann ich das nur dadurch machen,
dass das lokale Betriebssystem für gewisse lokale,
faire Schaltungen sorgt,
also eine faire Schaltregellokal hat
Na, das ist jetzt eben die Frage,
denn das wäre sehr angenehm, wenn das ginge,
dann könnte ich mich global faires Verhalten dadurch realisieren,
dass sich lokale Informationen heranziehe. Wenn das nicht geht,
da müssten sich alle Rechner Knoten unterhalten,
wie gerade ihr Zustand ist und gegebenenfalls auch,
wie er mal war, um dann zu realisieren, nee,
da wird irgendjemand gerade benachteiligt, da müssen wir was tun.
Dass wir unheimlich aufwendig, die müssen sich ständig austauschen,
was gerade passiert und was passiert ist,
um unfaires Verhalten auszuschließen
Das möchte man also nicht. Deswegen ist das Trachten danach
irgendwie das Ganze möglichst auf lokaler Ebene zu realisieren,
damit keine Informationen ausgetauscht werden muss, sondern nur die lokal verfügbare Information.
Bei Netzen ist das genau die Information,
die eine Transition hat, ob sie aktiviert ist oder nicht.
Jetzt definieren wir erstmal den Fairness-Begriff, den wir gerne hätten.
Da sagen wir, ein Petri-Netz ist fair,
verhält sich fair, wenn Folgendes gilt, in jeder unendlichen Schaltfolge,
kommt jede Transition Tee unendlich oft vor.
Aber so eine endliche Schaltung sind, das müssen wir schon.
Ja, das sind Sequenzen, Schaltworte aus Tee-Omega,
die die Eigenschaft haben, sie sind tatsächlich für jeden Präfix aktivierbar.
Das steht da. Das sind Schaltfolgen, die ich tatsächlich schalten kann.
Ich kann natürlich keine unendliche Schaltfolge in dem Sinne schalten,
aber ich kann natürlich sagen, eine unendliche Schaltfolge ist aktiviert,
wenn jedes Präfix A1 A2 bis AI,
also ein endliches Anfangsstück davon,
wenn das eine gültige Schaltfolge des Netzes N ist,
eine Firing Sequence
Wenn das der Fall ist und das für alle Präfixe bis zur Position I,
dann nenne ich die unendliche Schaltfolge 1a2, Punkt, Punkt, Punkt.
Auch schaltbar. So, natürlich macht es keinen Sinn,
sich zu fragen, was dann die Nachfolgemarkierung ist.
Ich kann nur sagen, eine unendliche Schaltfolge ist aktiviert.
Den Effekt davon kann ich im Allgemeinen ja nicht sinnvoll definieren.
So, das heißt, mich interessiert eigentlich nur,
was passiert, wenn ich unendliche Schaltfolgen betrachte.
Ein Netz, das gar keine unendlichen Schaltfolgen hat, kann nicht unfair sein.
Warum? Ja, es macht keinen Sinn zu sagen,
Eine Transition ist hundertmal dran gekommen, die andere nur 60.
Und dann hat das Netz verklemmt. Ist das fair oder
unfair? 100 zu 60? Oder 100 zu 0?
Ist also schwierig zu sagen. Deswegen ist das Kriterium einfach,
dass man sagt, einer unendlich oft,
der andere nur endlich oft, das ist unfair.
Also fair, so richtig fair ist das Ganze tatsächlich
nur dann, wenn alle Transitionen endlich oft vorkommen.
So, diese Begriffe von Lebendigkeit und Fairness,
das ist relativ ähnlich. Ja, bei Lebendigkeit weiß ich,
wenn ein Netz lebendig ist, dann habe ich unendliche Schaltfolgen,
in der jede Transition unendlich oft vorkommt.
So, Lebendigkeit sagt also, es gibt unendliche Schaltfolgen,
in der jede Transition vorkommt. Und das ist dieser Punkt A,
das bedeutet Freiheit von Freiheit, von unvermeidbaren, partiellen Verklemmungen.
Für allen erreichbaren Markierungen gilt, es gibt dort eine Omega-Schaltfolge,
dieser Bauart, in der alle Transitionen nämlich unendlich auf vorkommen.
Fairness ist was anderes. Fairness bedeutet Freiheit von faktischen partiellen Verklemmungen
. Es sagt nämlich, wenn ich unendlich oft schalte,
Denn es ist nicht möglich, dass Paartransitionen nicht mehr mitmachen.
Also gewissermaßen so aussehen, als wären sie da verklemmt.
Das gibt es nicht. Also wenn ich sage,
Verklemmung ist etwas, eine Transition macht nicht mehr mit.
Das ist eine partielle Verklemmung für eine Transition. Dann kann das
bei Fairness nie auftreten. Und hierbei ist es eben wichtig,
nur zu sagen, das gilt nur für die Unendlichen.
Hättest du dir gar keinen unendlichen Schaltfolgen haben?
Die sind so gesehen immer fair. Ja,
denn das gilt nicht ja nur für jede unendliche Geldmenst gar
keine Unendliche gibt, dann ist das Netz sowieso fair.
Ist aber uninteressant
Interessant wird der Begriff ja nur darin tatsächlich Schalt folgen und sicher Bauart vorkommen.
Dann frage ich mich, werden einige diskriminiert? Ist das möglich,
ja oder nein? So wie bei unseren fünf Philosophen,
da haben wir gerade gesehen, mit zwei Mobbern,
die geschickt schalten, ist es möglich,
eine unendliche Schaltfolge zu finden, in der alle Philosophen,
zwei, drei, vier,
fünf, essen und denken immer wieder.
Aber der erste arme Philosoph, der kommt nie zum Essen.
Das wäre also ein Netz, das kein faires Verhalten hat.
Nein, denn es kommen nicht alle Transitionen,
Essen des Philosophen,
eins ist mich nicht dabei
Es kommen nicht alle Transitionen unendlich oft vor.
In diesem Fall kommt diese Transition gar nicht vor.
So, und jetzt gibt es eine Abschwächung davon.
Jetzt wollen wir gucken, können wir das mit einer lokalen Schaltregel hinkriegen?
Das können wir so definieren, dass wir sagen,
ein Netz schaltet produktiv oder auch verschleppungsfrei oder mit Final Delay-Property nach der verschleppungsfreien Schaltregel.
Wenn folgendes gilt, für alle Transitionen und für alle erreichbaren Markierungen M gilt,
dass es keine Schaltfolge, keine unendliche Schaltfolge W gibt,
die in M aktiviert wäre.
Und Tee ist in dieser Schaltfolge permanent aktiviert,
kommt aber nie zum Zug. Es ist nie der Fall,
dass eine Transition, die gerade hier schreit,
nie dran genommen wird, obwohl sie unendlich oft,
und zwar kontinuierlich, sie ist ja permanent aktiviert,
sagt, ich möchte schalten.
Das ist die Produktivität. Das kann man leicht dadurch feststellen,
dass man eine Transition mit irgendwelchen Prioritäten versieht und nachdem das
eine ganze Weile irgendwie ignoriert wurde.
Irgendwann ist es nicht mehr möglich, eine Transition,
die kontinuierlich aktiviert ist,
zu ignorieren
Also so könnte man eine solche Schaltregel produktiv gestalten.
Was sieht man da? Da gibt es verschiedene Ecken und
Enden. Zum Beispiel diese drei Stränge sind völlig unabhängig.
Ich könnte jetzt den linken Strang ständig im Kreis laufen lassen.
Aber dann sieht man, dass die obere Transition des
mittleren Strangs, die wäre dann ja permanent aktiviert.
Wird dann aber nie schalten. Das heißt,
in diesem Netz würde eine produktive Schaltregel was bringen,
denn das würde ich genau verbieten. Ich würde ja sagen,
okay, Wenn der Linke ein bisschen gelaufen ist,
dann merke ich mir, ah,
die obere Transition in der Mitte ist einmal nicht dran gekommen,
zweimal nicht, dreimal nicht, viermal nicht.
Und nach endlicher Zeit, Final Delay, also endliche Verzögerung,
irgendwann nach endlicher Zeit kommt eine permanent aktivierte Transition dann zum Zug.
Und dann schaltet die oben irgendwann mal. Und ganz rechts,
die unten rechts, die Transition muss auch nach endlicher Zeit irgendwann mal schalten.
Und so sieht man, dass mit der verschleppungsfreien Schaltregel
alle Transitionen nach endlicher Zeit mal wieder drankommen.
Das heißt, in diesem Sinne ist das denn produktiv
Ja, permanent Aktivierung würde hier reichen. Das ist für
dieses Netz jetzt aber schon die Frage, reicht das?
Nein, es reicht nicht. Denn jetzt könnte ich die Schaltfolge machen,
AC, AC, AC, AC, AC, AC.
Ich habe, sobald die Marke bei S1 wieder ankommt,
ja immer die Wand zwischen A und B.
Wenn ich mich jetzt für den Kreislauf AC ständig da entscheide,
dann ist die produktive Schaltregel von allen Aufgaben entbunden,
denn die muss ja nur dafür sorgen,
dass Transitionen auch immer schalten,
wenn sie
permanent aktiviert sind
Nun ist aber B nicht permanent aktiviert. Wenn ich einmal
A schalte, wenn deaktiviere ich B für einen Moment,
dann schalte ich C und dann habe ich wieder erneut eine neue Konfliktsituation.
Die ist erneut aktiviert, aber nicht permanent. Diese Transition B
ist also unendlich oft aktiviert, aber nicht permanent. So,
und das will ich jetzt eigentlich auch noch ausschließen,
denn gewissermaßen sagt mir mein Bauchgefühl von Fairness,
dass ich einen Begriff von Fairness brauche, der sagt,
wenn ich unendlich oft nur A wähle und nie B,
dass das unfaires Verhalten ist
Und dafür brauche ich jetzt einen Begriff. Und das ist in diesem Kasten formalisiert,
dass ich sage,
ein Netz schaltet fair oder nach der Fährenschaltregel, wenn gilt,
wenn für alle Transitionen für alle erreichbaren Markierungen es nicht der Fall ist,
dass ich eine Schaltfolge nun endlich aktivieren kann, sodass gilt,
diese Schaltfolge hat unendlich oft diese Transition teeaktiviert.
Sie kommt endlich oft vor. Also im Gegensatz zur Verschleppungsfreien
Schaltregel von eben steht hier nicht,
sie ist permanent aktiviert
Sondern hier steht die etwas schwächere Bedingung unendlich oft.
Natürlich ist jede Transition, die permanent aktiviert, auch unendlich oft aktiviert.
Aber in diesem Beispiel sehen wir nicht alles,
was unendlich oft ist, muss auch permanent sein.
Das ist Bedingung. Das ist die Schreibweise für die Anzahl
des Auftretens von Tee in der Folge W.
Da hatten wir irgendwann mal einen FG1 als Notation
Weil wenn ich dieses Netz nehme, dann haben wir eben gesehen,
ich kann immer oben lang gehen,
das verhält sich also unter der normalen Schaltregel verschleppungsfrei nicht fair,
obwohl es lebendig ist.
Der Punkt ist ja, ein lebendiges Netz sagt ja nur,
ja, ja, du könntest immer B aktivieren.
Gibt ja immer die Möglichkeit, die Lebendigkeitsforderung dieses Netz ist lebendig,
fordert ja nie, dass das tatsächlich auch realisiert wird.
Wenn ich die faire Schaltregel habe,
dann fällt sich dieses Netz tatsächlich auch fair.
Ja, dann passiert das nicht unter der fairen Schaltregel,
dass ich nur da oben lang gehe
Dann wäre das ja eben nicht nach der fairen Schaltregel,
sondern da muss ich auch unten lang gehen.
So, und wie sieht das bei unseren fünf Philosophen aus?
Wenn ich das vergröbere, also aus den beiden Transitionen,
eine mache, dann ist das Netz lebendig. Das Problem ist nur,
ich hätte gerne, dass dieses Netz fair ist,
aber weder die Verschleppungsfreie noch die stärkere Schaltregel,
nämlich die faire Schaltregel,
reichen aus,
um dieses Netz fair zu machen
Das heißt, das 5-Philosophen-Beispiel zeigt, dass es nicht möglich ist,
mit dieser lokalen Eigenschaft, der lokalen Fairness,
also faire Schaltregeln, die sie einfach merkt,
wirst du jetzt schon ganz schön oft irgendwie benachteiligt und das mitzählt,
also mit Zählern arbeitet, die dann sagt,
du bist jetzt schon 533 mal aktiviert worden,
jetzt wird es langsam mal Zeit zu schalten für dich.
Ja, nicht mal diese Schaltregel ist ausreichend, um globale Fairness zu erzeugen,
ja, immer noch könnte der erste Philosoph verhungern.
Gut, das dazu und demnächst weiter mit einem neuen Thema,
nämlich Prozessalgebracht.
Bis dann