• Nem Talált Eredményt

Bináris Petri-hálók

In document Párhuzamos algoritmusmodellek (Pldal 112-118)

Animation 3.2: The oscillating blinker pattern (periodlength: 2)

5. fejezet - Petri-hálók

5.2. Bináris Petri-hálók

Ebben a fejezetben a legegyszerűbb Petri-hálókkal ismerkedünk meg. Először a (bináris) Petri-hálókat formálisan is definiáljuk.

Definíció: Petri-háló alatt egy irányított páros gráfot (G = (N,E)) értünk a következő jellemzőkkel: A gráf csúcsait helyeknek (P, ábrán általában ellipszisek vagy körök), illetve tranzícióknak (T, ábrán általában téglalapok) hívjuk, formálisan P∪T=N (ahol P∩T = {}). A gráf élei E⊆P×T∪T×P, vagyis helytől tranzícióhoz, illetve tranzíciótól helyhez vezethetnek. Szokás egy n csúcs őseit és utódait definiálni, azokkal a csúcsokkal, amelyekből, illetve amelybe vezet él n-be, illetve n-ből. Formálisan:

∙t = {p | (p,t) ∈ E}, vagyis a t tranzíció ősei (előfeltételei) a t bemeneti helyei, t∙ = {p | (t,p) ∈ E}, vagyis a t tranzíció utódai a t kimeneti helyei,

∙p = {t | (t,p) ∈ E}, vagyis a p hely ősei a p-be bemenő tranzíciók, p∙ = {t | (p,t) ∈ E}, vagyis a p hely utódai a p-ből kimenő tranzíciók.

Egy t tranzíciót forrástranzíciónak nevezünk, ha ∙t = {}, továbbá t egy nyelőtranzíció, ha t∙ = {}.

A bináris Petri-háló működése (szemantikája) a következő:

Egy bináris Petri-háló állapota a P → {0,1} függvénnyel adható meg. Az állapotot ennek megfelelően általában egy |P| elemű bináris vektorral írhatjuk le: a vektor elemeit kölcsönösen egyértelműen feleltetjük meg a helyeknek. A vektor egyes értéke azt jelenti, hogy a hely rendelkezik egy tokennel, míg nulla érték a token hiányát jelenti. A Petri-hálóhoz általában hozzárendelünk egy kezdeti token-eloszlást, vagyis megadjuk, hogy kezdetben mely helyek rendelkeznek tokennel és melyek nem. Ezután a rendszer működését (dinamikáját) a diszkrét időskála mentén a következőképpen adhatjuk meg: azt mondjuk, hogy a t tranzíció engedélyezett (a

rendszer adott állapotában), ha minden ∙t hely rendelkezik tokennel, és egyik t∙ hely sem rendelkezik tokennel.

Egyszerre több engedélyezett tranzíció is lehet (és előfordulhat, hogy egy sincs). Ekkor a rendszer állapotváltozását a következőképpen adhatjuk meg: válasszunk ki (nemdeterminisztikusan) egy engedélyezett t tranzíciót. Töröljük a tokeneket a t őshelyeiről, és tegyünk tokeneket a t utódhelyeire. Ezt nevezzük a tranzíció tüzelésének. Az újonnan létrejött token-eloszlás meghatározza, hogy ebben az állapotban mely tranzíciók engedélyezettek stb. Az egymás után végrehajtott tranzakciókat tüzelési sorozatnak hívjuk.

Megjegyezzük, hogy a forrástranzíciók mindig engedélyezettek.

Tipikus példa a Petri-hálók alkalmazására a párhuzamos/konkurens rendszerek modellezése. Ilyen egyszerű példákkal folytatjuk.

Példa (soros működésű bináris Petri-háló)

Legyen a Petri net gráfban 3 hely és 2 tranzíció, ahogy az 5.1. ábra mutatja. Ekkor az (1,0,0) token-eloszlás esetén csak az első tranzíció tüzelhet, a másik nem engedélyezett. Az első tranzíció tüzelésével a rendszer (0,1,0) token-eloszlású lesz, amikoris az első tranzíció nem, de a második engedélyezett. Így szekvenciálisan egymás után hajthatjuk végre a két tranzíciót. A második tranzíció tüzelése után a rendszer állapota (0,0,1) lesz, amiben nincs engedélyezett tranzíció.

5.1. ábra - Soros működésű Petri-háló struktúrája a kezdeti token-eloszlással.

Példa (szimultán működésű bináris Petri-háló)

Legyen a Petri net gráfja és kezdő token-eloszlása az 5.2. ábrán adott. Az első és a második tranzíció engedélyezett. Bármilyen sorrendben végrehajthatjuk őket egymás után (vagy akár párhuzamosan is). Amíg viszont nem tüzelt mindkét tranzíció, nem lesz más engedélyezve, ami tulajdonképpen e kettő szinkronizációját is jelenti. Mindkét tranzíció tüzelése után a rendszer állapota (0,1,0,1,0) lesz, így a harmadik tranzíció válik engedélyezetté. Ennek tüzelése után pedig a negyedik, aminek tüzelése után visszakerülünk a (1,0,1,0,0) kezdő token-eloszláshoz. Ez a rendszer a determinisztikus párhuzamos működést modellezi, a negyedik tranzícióval kezdődik, a harmadikkal befejeződik a párhuzamos szálak végrehajtása.

5.2. ábra - Szimultán működésű Petri-háló struktúrája a kezdeti token-eloszlással.

Példa (konfliktus modellezése bináris Petri-hálóval)

Legyen a Petri-háló gráfja és kezdő token-eloszlása az 5.3. ábrán adott. Ekkor mind az első, mind a második tranzíció engedélyezett. Bármelyiket is választjuk tüzelni, a másik tranzíció engedélyezettsége is megszűnik. Az ilyen szituációban mondjuk azt, hogy a két tranzíció konfliktushelyzetben van. Mindkettő tüzelése nem lehetséges, csak egyiküké. Ez a rendszer a nemdeterminisztikus választást is modellezi.

5.3. ábra - Konfliktus szituáció, nemdeterminisztikus választás modellezése.

Tipikus interpretációi a Petri-hálóknak, pl. az őshelyeket, a tranzíciókat és az utódhelyeket rendre input adatoknak/szignáloknak, számítási lépésnek és output adatoknak/szignáloknak; vagy előfeltételnek, eseménynek és utófeltételnek; vagy szükséges erőforrásoknak, munkafolyamatnak és megmaradt/átalakult erőforrásnak;

vagy akár feltételnek, logikai klóznak és konklúziónak tekinteni.

A Petri-hálók vizsgálatakor vannak olyan tulajdonságok, amik függnek a kezdő token-eloszlástól, ezeket viselkedési tulajdonságoknak hívjuk. Ezzel szemben vannak olyan tulajdonságok, amik nem függenek a kezdő token-eloszlástól, csak magától a háló gráfjától, ezeket strukturális tulajdonságoknak hívjuk.

Definíció: Adott egy Petri-háló és egy kezdeti token-eloszlás. A rendszert kontaktmentesnek nevezzük, ha benne egy t tranzíció engedélyezett, minden olyan esetben, ha t minden őse rendelkezik tokennel. Vagyis minden ilyen esetben automatikusan teljesül, hogy a t utódhelyei üresek.

Példa (egy kontaktmentes bináris Petri-háló és működése)

Legyen a rendszerben 2 hely és 3 tranzíció: az A és B tranzíciók az első helytől, mint őshelytől a második helyre, mint utódhelyre vezetnek, amíg a C tranzíció őshelye a második hely és utódhelye az első hely. A kezdeti token-eloszlás (1,0), vagyis az első helyen van egy token. Ennek megfelelően az A és B tranzíciók mindketten engedélyezettek. Bármelyikük tüzelhet, aminek következményeként a token a második helyen jelenik meg; így viszont nemcsak az a tranzíció lesz nem megengedett, amelyik éppen tüzelt, hanem a másik is.

Ezzel párhuzamosan a C tranzíció lesz engedélyezett, ennek tüzelése után pedig visszajutunk a rendszer eredeti állapotába. A példában az A és B tranzíciók konkurensei egymásnak.

A következő eredmény igaz a kontaktmentes rendszerekkel kapcsolatban.

Tétel: Legyen adott egy Petri-háló és egy kezdeti token-eloszlás. Ekkor megkonstruálható egy olyan kontaktmentes rendszer, amiben a lehetséges eloszlások az eredeti rendszer lehetséges

token-eloszlásaival (és ezeknek megfelelően a hálók lehetséges tüzelései) egy-egyértelmű leképezést alkotnak. Ekkor azt mondjuk, hogy a két rendszer konfiguráció-ekvivalens.

A Petri-hálókkal kapcsolatban a következő problémák merülnek fel, amikre választ keresünk (illetve adott modellezett rendszerekben a következő feladatokat tudjuk a Petri-háló modell segítségével vizsgálni):

Definíció: Az elérhetőségi probléma: a kiindulási token-eloszlásból valamely tüzelési sorozattal elérhető-e egy (másik) adott állapot.

A lefedési probléma: a kiindulási token-eloszlásból valamely tüzelési sorozattal elérhető-e egy olyan állapot, hogy minden adott hely rendelkezzen tokennel (a többi hely ebben a kérdésben nem érdekes, ott lehet is token, meg nem is).

Ezeket a problémákat megoldhatjuk az elérhetőségi fa segítségével. Ha adott egy Petri-háló a kezdeti token-eloszlással, akkor megkonstruálhatjuk azt a fát, amelynek csúcsai a lehetséges token-eloszlás vektorok, élei pedig azt jelzik, hogy egy-egy megengedett tranzíció végrehajtásakor mely token-eloszlásból melyikbe megy át a rendszer (az élekhez tehát tranzíciókat rendelünk). A fa gyökerében a kezdeti eloszlásvektor áll. Mivel a rendszerben csak véges sok tranzíció van, így mindig csak véges sok gyermeke lehet a fában egy csúcsnak. A feladat megoldásához elegendő mindig csak olyan token-eloszlásokat felvenni a fa csúcsai közé, amelyek még nem szerepelnek a fában. Mivel bináris hálók esetén a lehetséges token-eloszlások száma véges, az elérhetőségi fa mindig egy véges hosszúságú folyamat végén előáll, és a problémák megoldása leolvasható belőle.

Példaként nézzük az 5.2. ábrán mutatott háló elérhetőségi fáját. Az 5.4. ábra mutatja a fát (szürke színnel áthúzva jelöltük a lehetséges tovább lépéseket, amik állapota már szerepel a fában).

5.4. ábra - Példa elérhetőségi gráfra.

Definíció: Az ekvivalencia probléma: adott két Petri-háló (ugyanannyi, rögzített sorrendű hellyel) és kezdő állapotuk. Teljesül-e, hogy az elérhető állapotok (vektorok) halmaza ugyanaz?

A tartalmazás probléma: adott két Petri-háló (ugyanannyi hellyel) és kezdő állapotuk. Teljesül-e az elérhető állapotok (vektorok) halmazaira, hogy a második tartalmazza az elsőt?

Az elérhetőségi fa segítségével egy adott rendszer összes lehetséges token-eloszlását felírhatjuk. Ezt mindkét rendszerre megtéve adódik a válasz ezekre a problémákra.

Az élő tulajdonság probléma, ami pl. operációs rendszerek teljes holtpontmentességének fogalmához áll közel, a következő:

Definíció: Az élő tulajdonságnak több változatát/fokát is szokás vizsgálni: legyen adott egy Petri-háló és hozzá egy kezdő token-eloszlás, ekkor:

- (L0) halott a t tranzíció, ha soha semmilyen tüzelési sorozatnak nem eleme.

- (L1) potenciálisan tüzelő, ha van legalább egy olyan tüzelési sorozat, aminek eleme.

- (L2) tetszőlegesen gyakran tüzelő, minden tetszőleges pozitív k-ra van olyan tüzelési sorozat, amiben a t legalább k-szor engedélyezett.

- (L3) végtelenül gyakran tüzelő, ha t végtelen sokszor előfordul valamely (végtelen) tüzelési sorozatban.

- (L4) állandóan tüzelésre kész, ha minden elérhető token-eloszláshoz van olyan tüzelési sorozat, hogy a sorozat végrehajtásakor a t engedélyezett legyen.

Egy Petri-hálóról akkor mondjuk, hogy állandóan tüzelésre kész/végtelenül gyakran tüzelő/tetszőlegesen gyakran tüzelő/potenciálisan tüzelő/halott, ha minden tranzíciójára teljesül a megfelelő definíció.

Könnyen belátható, hogy az élő tulajdonságok közül az utolsó, az állandóan tüzelő adja a legerősebb feltételt.

Illetve ezen tulajdonságok alábbi hierarchiája is könnyen ellenőrizhető: minden állandóan tüzelésre kész tranzíció/Petri-háló egyben végtelenül gyakran tüzelő tranzíció/Petri-háló. Minden végtelenül gyakran tüzelő tranzíció/Petri-háló egyben tetszőlegesen gyakran tüzelő tranzíció/Petri-háló. Továbbá minden tetszőlegesen gyakran tüzelő tranzíció/Petri-háló egyben potenciálisan tüzelő tranzíció/Petri-háló.

Példa (potenciálisan tüzelő Petri-háló)

Legyen adott az 5.1. animáción levő Petri-háló a jelölt kezdő token-eloszlással. Ekkor az animáción látható két tüzelési sorrend lehetséges. Mindkettő véges hosszúságú, viszont az első: 13524 sorrendben tartalmazza az összes tranzíciót. Így azt mondhatjuk, hogy minden tranzíció potenciálisan tüzelő, tehát maga a Petri-háló is az.

Az is belátható a két maximális hosszúságú, de véges tüzelési sorozat alapján, hogy nincs olyan tranzíció, ami tetszőlegesen gyakran tüzelő, így ez természetesen magára a Petri-hálóra sem igaz, mint ahogy az (L3) és (L4) feltételek sem.

In document Párhuzamos algoritmusmodellek (Pldal 112-118)