teoria retelelor petri si modelarea sistemelor

205
Teoria reţelelor Petri şi modelarea sistemelor 1 Introducere Reţelele Petri sunt un instrument pentru studiul sistemelor. Teoria reţelelor Petri permite unui sistem să fie modelat de către o reţea Petri, realizându-se astfel o reprezentare matematică a sistemului. Analiza reţelei Petri poate apoi să furnizeze informaţii importante despre structura şi comportamentul dinamic al sistemului modelat, putând fi folosită pentru a evalua sistemul modelat şi pentru a sugera îmbunătăţiri sau schimbări. Astfel, dezvoltarea unei teorii a reţelelor Petri se bazează pe aplicarea reţelelor Petri în modelarea şi proiectarea sistemelor. 1.1 Modelare Reţelele Petri sunt folosite în modelare. În multe domenii, un fenomen nu este studiat direct, ci indirect cu ajutorul unui model al fenomenului. Un model este o reprezentare, cel mai adesea în termeni matematici, a ceea ce par a fi caracteristici importante ale obiectului sau sistemului studiat. Prin manipularea reprezentării se speră că se vor obţine noi cunoştinţe despre fenomenul modelat evitând pericolul, costul sau inconvenientele reprezentate de manipularea fenomenului real propriu-zis. Exemple ale utilizării modelării includ astronomia (unde modele ale naşterii, morţii şi interacţiunii dintre stele permit studierea teoriilor care se desfăşoară pe perioade lungi de timp şi cu mari cantităţi de materie şi energie), fizica nucleară (unde atomii radioactivi şi particulele subatomice studiate există pentru perioade foarte scurte de timp), sociologie (unde directa manipulare a grupurilor de oameni studiate poate crea probleme etice), biologie (unde modelele de sisteme biologice cer puţin spaţiu, timp şi hrană pentru a se dezvolta), şi aşa mai departe. Majoritatea modelelor folosesc matematica. Caracteristicile importante ale celor mai multe fenomene fizice pot fi descrise numeric, iar relaţiile dintre acestea prin ecuaţii sau inegalităţi. În particular, în ştiinţele naturale şi inginerie, proprietăţi precum masa, poziţia, acceleraţia şi forţele se pot descrie cu ajutorul ecuaţiilor. Pentru a utiliza cu succes tehnica modelării, este necesară o bună cunoaştere atât a fenomenului modelat cât şi a proprietăţilor tehnicilor de modelare. Astfel, matematica s-a dezvoltat ca o ştiinţă în parte datorită utilităţii 1

Upload: danniell2

Post on 18-Jun-2015

1.263 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Teoria Retelelor Petri Si Modelarea Sistemelor

Teoria reţelelor Petri şi modelarea sistemelor

1 IntroducereReţelele Petri sunt un instrument pentru studiul sistemelor. Teoria reţelelor Petri permite

unui sistem să fie modelat de către o reţea Petri, realizându-se astfel o reprezentare matematică a sistemului. Analiza reţelei Petri poate apoi să furnizeze informaţii importante despre structura şi comportamentul dinamic al sistemului modelat, putând fi folosită pentru a evalua sistemul modelat şi pentru a sugera îmbunătăţiri sau schimbări. Astfel, dezvoltarea unei teorii a reţelelor Petri se bazează pe aplicarea reţelelor Petri în modelarea şi proiectarea sistemelor.

1.1 Modelare

Reţelele Petri sunt folosite în modelare. În multe domenii, un fenomen nu este studiat direct, ci indirect cu ajutorul unui model al fenomenului. Un model este o reprezentare, cel mai adesea în termeni matematici, a ceea ce par a fi caracteristici importante ale obiectului sau sistemului studiat. Prin manipularea reprezentării se speră că se vor obţine noi cunoştinţe despre fenomenul modelat evitând pericolul, costul sau inconvenientele reprezentate de manipularea fenomenului real propriu-zis. Exemple ale utilizării modelării includ astronomia (unde modele ale naşterii, morţii şi interacţiunii dintre stele permit studierea teoriilor care se desfăşoară pe perioade lungi de timp şi cu mari cantităţi de materie şi energie), fizica nucleară (unde atomii radioactivi şi particulele subatomice studiate există pentru perioade foarte scurte de timp), sociologie (unde directa manipulare a grupurilor de oameni studiate poate crea probleme etice), biologie (unde modelele de sisteme biologice cer puţin spaţiu, timp şi hrană pentru a se dezvolta), şi aşa mai departe.

Majoritatea modelelor folosesc matematica. Caracteristicile importante ale celor mai multe fenomene fizice pot fi descrise numeric, iar relaţiile dintre acestea prin ecuaţii sau inegalităţi. În particular, în ştiinţele naturale şi inginerie, proprietăţi precum masa, poziţia, acceleraţia şi forţele se pot descrie cu ajutorul ecuaţiilor. Pentru a utiliza cu succes tehnica modelării, este necesară o bună cunoaştere atât a fenomenului modelat cât şi a proprietăţilor tehnicilor de modelare. Astfel, matematica s-a dezvoltat ca o ştiinţă în parte datorită utilităţii sale în modelarea fenomenelor altor ştiinţe. De exemplu, calculele diferenţiale s-au dezvoltat ca un răspuns indirect la necesitatea de a găsi o cale pentru modelarea proprietăţilor în continuă schimbare, precum poziţia, viteza, şi acceleraţia în fizică.

Dezvoltarea vitezei computerelor a crescut considerabil aria de utilizare şi utilitatea modelării. Prin reprezentarea unui sistem ca un model matematic care va fi apoi implementat şi rulat pe un computer devine posibilă modelarea de sisteme mai mari şi mai complexe. Acest fapt a determinat apariţia a numeroase studii referitoare la computere şi tehnici de modelare pe computer. Computerele sunt implicate în modelare şi ca o temă de modelare.

1.2 Caracteristici ale sistemelor

Sistemele computaţionale sunt foarte complexe, chiar mari, fiind sisteme cu multe componente ce interacţionează. Fiecare componentă poate fi suficient de complexă şi la fel şi modul în care interacţionează cu alte componente din sistem. Acest fapt este valabil şi în multe alte sisteme. Sistemele economice, sistemele legale, sistemele pentru controlul traficului şi sistemele chimice, toate presupun componente individuale ce interacţionează cu alte componente, posibil în moduri complexe.

Astfel, în ciuda diversităţii sistemelor de modelat, există totuşi şi multe părţi comune. Acestea ar trebui să fie caracteristicile unui model folositor pentru aceste sisteme. O idee fundamentală este aceea că sistemul este compus din componente separate, ce interacţionează între

1

Page 2: Teoria Retelelor Petri Si Modelarea Sistemelor

ele. Fiecare componentă poate fi la rândul ei un sistem, dar comportamentul ei poate fi descris independent de celelalte componente. Fiecare componentă are propria sa stare curentă. Starea curentă a unei componente este o abstractizare a informaţiei relevante necesare pentru descrierea acţiunilor sale (viitoare). Cel mai adesea starea curentă a unei componente depinde de stările anterioare ale acesteia. De aceea, starea unei componente se poate schimba în timp. Conceptul de "stare" este foarte important în modelarea unei componente. De exemplu, în modelarea în sistem liniar a unei bănci, pot fi câţiva furnizori şi câţiva clienţi. Un furnizor poate fi fie liber (în aşteptarea unui client care să-i solicite serviciile), fie ocupat (servind un client). În mod similar, un client poate fi fie liber (aşteptând ca unul dintre furnizori să devină liber pentru a-l putea servi), fie ocupat (servit de un furnizor). În modelarea unui spital, starea unui pacient poate fi critică, gravă, bunicică, bună, sau excelentă.

Componentele unui sistem pot implica noţiunile de concurenţă sau paralelism. Activarea unei componente a unui sistem se poate produce simultan cu o altă activare a unei alte componente. Într-un sistem computaţional, de exemplu, dispozitivele periferice pot opera toate concurent, controlate de către computer. Într-un sistem economic, fabricile pot produce unele produse în timp ce vânzătorii vând alte produse şi consumatorii folosesc şi ei alte produse, toate acestea în acelaşi timp.

Concurenţa activităţilor într-un sistem creează unele dificultăţi în modelarea acestuia. De vreme ce componentele sistemului interacţionează, este necesară realizarea unei sincronizări. Transferul de informaţie sau materiale de la o componentă la o alta necesită sincronizarea activării componentelor implicate. Această operaţie poate provoca situaţia în care o componentă aşteaptă după o alta. Modalitatea de acţionare a diferitelor componente poate fi foarte complexă şi interacţiunile dintre componente greu de descris.

1.3 Dezvoltarea iniţială a reţelelor Petri

Reţelele Petri sunt proiectate special pentru a modela sisteme cu componente cu interacţiune concurentă. Reţelele Petri au la bază studiile lui Carl Adam Petri. În lucrarea sa de doctorat, "Communikation mit Automaten" (Comunicarea cu automate), Petri formulează fundamentele unei teorii a comunicaţiilor între componente asincrone ale unui sistem computaţional, oprindeu-se mai ales asupra descrierii relaţiilor cauzale dintre evenimente. Această lucrare a fost în principal o dezvoltare teoretică a conceptelor fundamentale pornind de la care s-a dezvoltat mai apoi teoria reţelelor Petri.

Munca lui Petri a ajuns în atenţia lui A.W. Holt şi a altora care lucrau la proiectul pentru teoria sistemelor informaţionale (Information System Theory Project) în cadrul ADR (Applied Data Research, Inc.). Multe din teoriile iniţiale, notaţiile şi reprezentările reţelelor Petri s-au dezvoltat prin munca la acest proiect (Information System Theory Project) şi au fost publicate în raportul final al proiectului [Holt, ed. 1968], şi într-un raport separat intitulat "Event and Conditions" (Evenimente şi condiţii) [Holt and Commoner, ed. 1970]. Această muncă a arătat cum pot fi aplicate reţelele Petri în modelarea şi analiza sistemelor cu componente concurente.

Munca lui Petri a atras de asemenea atenţia proiectului M.A.C. de la Institutul de Tehnologie din Massachusetts (M.I.T.). "The Computation Structures Camp" coordonat de profesorul Jack B. Dennis, a fost sursa a numeroase cercetări şi articole publicate despre reţelele Petri, şi de asemenea a numeroase dizertaţii şi rapoarte. "The Computation Structures Camp" a ţinut două conferinţe asupra reţelelor Petri: Conferinţa proiectului M.A.C. asupra sistemelor concurente şi calculului paralel, în 1970 la Woods Hole [Dennis, 1970] şi conferinţa despre reţelele Petri şi metodele aferente, din 1975 de la M.I.T. Ambele au fost utile pentru selectarea rezultatelor şi abordărilor utile referitoare la teoria reţelelor Petri.

Utilizarea şi studiul reţelelor Petri s-au răspândit mult în ultimii ani. Un laborator de lucru cu reţele Petri s-a ţinut în Paris în 1977 ca o avanpremieră la cursul de "Teoria generală a reţelelor" (General Net Theory) din 1979 de la Hamburg. Un grup de studiu pentru reţelele Petri s-a format în Germania, în scopul cercetării şi răspândirii ariei de aplicare a acestora.

2

Page 3: Teoria Retelelor Petri Si Modelarea Sistemelor

1.4 Aplicaţii ale teoriei reţelelor Petri

Aplicarea practică a reţelelor Petri în proiectarea şi analiza sistemelor se poate realiza în mai multe moduri. O abordare consideră reţelele Petri ca un instrument de analiză auxiliar. Pentru această abordare, sunt folosite tehnici de proiectare convenţionale pentru a specifica un sistem. Acest sistem este modelat ca o reţea Petri şi această reţea Petri este apoi analizată. Orice problemă de analiză se regăseşte în fluxurile proiectate, de aceea trebuiesc efectuate modificări pentru a corecta fluxurile. Proiectul modificat poate apoi să fie modelat şi analizat din nou. Ciclul se repetă până când se elimină toate problemele inacceptabile. Această abordare este reprezentată în diagrama din figura 1.1. Se poate observa că această abordare poate fi folosită de asemenea pentru a analiza un sistem existent, operaţional.

Abordarea convenţională descrisă mai sus pentru folosirea reţelelor Petri în proiectarea unui sistem necesită conversia construcţiei sistemului proiectat într-un model de reţea Petri. A mai fost de asemenea sugerată o abordare alternativă. În această abordare mai radicală, întreaga proiectare şi documentare se face în termeni de reţele Petri. Tehnicile de analiză se aplică numai atât cât este necesar pentru a crea o reţea Petri fără erori. Apoi problema este de a transforma reprezentarea sub formă de reţea Petri în sistemul funcţional ce interesează. Aceste două abordări ale folosirii reţelelor Petri în proiectarea proceselor oferă diferite tipuri de probleme pentru cercetarea în domeniul reţelelor Petri.

În primul caz, trebuiesc dezvoltate tehnicile de modelare în vederea transformării sistemelor într-o reprezentare sub formă de reţea Petri; în al doilea caz, trebuiesc dezvoltate tehnicile de implementare pentru a transforma reprezentările sub formă de reţea Petri în sisteme. În ambele cazuri sunt necesare tehnici de analiză în vederea determinării proprietăţilor modelului nostru de reţea Petri. De aceea, prima noastră grijă în dezvoltarea unei teorii a reţelelor Petri este studierea proprietăţilor reţelelor Petri în sine.

Figura 1.1: Utilizarea reţelelor Petri în analiza şi modelarea sistemelor

Sistemul este mai întâi modelat ca o reţea Petri şi apoi acest model este analizat. Înţelegerea sistemului rezultat din analize va conduce spre un sistem ce se speră a fi mai bun. Cercetarea este orientată spre dezvoltarea de tehnici automate pentru modelarea şi analiza sistemelor cu ajutorul reţelelor Petri.

1.5 Teoria reţelelor Petri: teoretic şi aplicativ

Studiul reţelelor Petri s-a dezvoltat în două direcţii;- Teoria reţelelor Petri aplicată (Applied Petri Net Theory) se ocupă mai ales cu aplicarea

reţelelor Petri în modelarea sistemelor, analiza acestor sisteme, şi introducerea rezultatului în sistemul modelat. Lucrul cu succes în acest domeniu necesită o bună cunoaştere a domeniului de aplicare, a reţelelor Petri, şi a tehnicilor folosite împreună cu reţelele Petri.

- Teoria pură a reţelelor Petri este studiul reţelelor Petri în vederea dezvoltării instrumentelor fundamentale, a tehnicilor şi conceptelor necesare pentru aplicarea reţelelor Petri. Deşi motivaţia pentru cercetarea în domeniul reţelelor Petri se bazează pe aplicaţii, este necesară o

3

Sistem

Proprietăţile sistemului

Model

AnalizăRevizuire

Model de reţea Petri

Page 4: Teoria Retelelor Petri Si Modelarea Sistemelor

bază solidă a teoriei reţelelor Petri pentru a putea fii capabili să aplicăm reţelele Petri. Multă din munca efectuată cu reţele Petri s-a concentrat în acest punct asupra teoriei fundamentale despre teoria reţelelor, dezvoltând instrumente şi abordări care s-ar putea să fie utile într-o bună zi în aplicarea reţelelor Petri pentru a specifica probleme din lumea reală. Acest studiu se concentrează în principal asupra teoriei fundamentale, păstrând rezultate din ambele direcţii de cercetare ale reţelelor Petri. Aplicaţiile care sunt date intenţionează mai ales să demonstreze complexitatea şi puterea reţelelor Petri şi să motiveze dezvoltarea tehnicilor de analiză.

În acest sens, nu se încearcă tratarea amănunţită a întregii game de subiecte legate de reţelele Petri, dar se doreşte să se ofere o bază solidă de termeni, concepţii, abordări, rezultate şi istorisiri despre reţele Petri, pentru a permite utilizarea şi înţelegerea studiilor aprofundate asupra reţelelor Petri şi pentru a oferi capacitatea aplicării acestei teorii pentru o gamă largă de aplicaţii. Vom începe cu câteva definiţii formale şi exemple de reţele Petri în capitolul 2, apoi vom demonstra puterea şi utilitatea acestora.

1.6 Scurtă istorie despre reţelele Petri

Certificatul de naştere al reţelelor Petri a fost dizertaţia lui Petri, dar majoritatea studiilor din Statele Unite se bazează de asemenea pe raportul final al proiectului pentru teoria sistemelor informaţionale (Information System Theory Project) care nu numai că a tradus în engleză studiul lui Petri, dar l-a şi îmbunătăţit considerabil. Raportul intitulat "Event and Conditions" [Holt and Commoner, ed. 1970], a fost de asemenea o parte importantă în dezvoltarea teoriei reţelelor Petri. Petri a prezentat un scurt raport la Congresul IFIP din 1962 care a fost tipărit în cele ce au urmat [Petri 1962b]. Acest raport se bazează pe ideile din studiul său.

Abordarea prezentată în această lucrare derivă din munca la "The Computation Structures Camp" la M.I.T. şi s-a dezvoltat din munca lui Dennis [1970a], Patil [1970a], şi a altora, culminând cu studiile lui Hack [1975c]. Keller a avut de asemenea o mare influenţă cu raportul său despre sistemele de înlocuire a vectorilor [Keller 1972] şi prin punctul său de vedere asupra modelării [Keller 1975a].

4

Page 5: Teoria Retelelor Petri Si Modelarea Sistemelor

2 Definiţii fundamentale

În acest capitol vom da definiţii formale pentru conceptele de bază din teoria reţelelor Petri. Conceptele de bază sunt folosite în cadrul prezentului studiu asupra reţelelor Petri şi de aceea sunt fundamentale pentru o corectă înţelegere a reţelelor Petri.

Formalismele utilizate se bazează pe teoria multiseturilor, o extensie a teoriei mulţimilor. Conceptele relevante pentru această teorie a multiseturilor sunt prezentate în anexă.

Definiţiile oferite aici sunt similare ca formă cu cele din teoria automatelor [Hopcroft and Ullman, 1969]. În fapt, ele definesc o nouă clasă de maşini, şi anume automate reţele Petri. După cum vom vedea mai târziu (în capitolele 5, 6, 7 şi 8), acest punct de vedere poate conduce la unele rezultate interesante în teoria limbajelor formale şi în cea a automatelor.

2.1 Structura unei reţele Petri

O reţea Petri este compusă din patru părţi:- o mulţime de locaţii S;- o mulţime de tranziţii T;- o funcţie de intrare I;- o funcţie de ieşire O.

Funcţiile de intrare şi ieşire sunt relaţii între T (mulţimea de tranziţii) şi S (mulţimea de locaţii). Funcţia de intrare I este o funcţie de la o tranziţie tj la o colecţie de locaţii I(tj) care poartă numele de locaţiile de intrare ale tranziţiei. Funcţia de ieşire O este o funcţie de la o tranziţie tj la o colecţie de locaţii O(tj) care poartă numele de locaţiile de ieşire ale tranziţiei. Structura unei reţele Petri este definită de locaţiile şi tranziţiile sale, de funcţia sa de intrare şi de cea de ieşire.

Definiţia 2.1:O structură de reţea Petri C este un 4-tuplu C = (P,T, I, O), unde:- P = {p1,…,pn} este o mulţime finită de locaţii, n 0;- T = {t1,…,tm} este o mulţime finită de tranziţii, m 0;Mulţimea locaţiilor şi mulţimea tranziţiilor sunt disjuncte: P T = .- I : T P este funcţia de intrare, o funcţie de la mulţimea tranziţiilor la colecţia de locaţii- O : T P este funcţia de ieşire, o funcţie de la mulţimea tranziţiilor la colecţia de locaţii

Cardinalitatea mulţimii P este n, şi cardinalitatea mulţimii T este m. Vom nota un element arbitrar din P cu pi, 1 i n, şi un element arbitrar din T cu tj, 1 j m.

Exemple de structuri de reţele Petri sunt date în figurile 2.1, 2.2 şi 2.3.

Figura 2.1:O structură de reţea Petri reprezentată ca un 4-tuplu.C = (P, T, I, O), unde:- P = {p1,…,p5}- T = {t1,…,t4}- I(t1) = {p1}, I(t2) = {p2, p3, p5}, I(t3) = {p3}, I(t4) = {p4}- O(t1) = { p2, p3, p5}, O(t2) = {p5}, I(t3) = {p4}, I(t4) = {p2, p4}

Figura 2.2:O structură de reţea Petri reprezentată ca un 4-tuplu.C = (P, T, I, O), unde:- P = {p1,…,p6}- T = {t1,…,t5}- I(t1) = {p1}, I(t2) = {p3}, I(t3) = {p2, p3}, I(t4) = {p4, p5, p5, p6}, I(t5) = {p2}- O(t1) = { p2, p3}, O(t2) = {p3, p5, p5}, O(t3) = {p2, p4}, O(t4) = {p4}, O(t5) = {p6}

5

Page 6: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 2.3:O structură de reţea Petri reprezentată ca un 4-tuplu.C = (P, T, I, O), unde:- P = {p1,…,p9}- T = {t1,…,t6}- I(t1) ={p1}, I(t2) = {p8}, I(t3) = {p2, p5}, I(t4) = {p3}, I(t5) = {p6, p7}, I(t6) = {p4, p9}- O(t1) = { p2, p3}, O(t2) = {p1, p7}, O(t3) = {p6}, O(t4) = {p4}, O(t5) = {p9}, O(t6) = {p7, p8}

O tranziţie pi este o tranziţie de intrare a unei tranziţii tj dacă pi I(tj); pi este o tranziţie de ieşire a unei tranziţii tj dacă pi O(tj); Un multiset este o generalizare a noţiunii de mulţime care permite apariţia în mod repetat a unui element. Anexa conţine o descriere a acestei teorii. Folosirea multiseturilor în locul mulţimilor pentru intrări şi ieşiri permite unei locaţii să fie intrare sau locaţie multiplă pentru o tranziţie. Multiplicitatea unei locaţii de intrare pi a unei tranziţii tj este numărul de apariţii ale locaţiei în multisetul de intrare al tranziţiei #(pi, I(tj)). Similar, multiplicitatea unei locaţii de ieşire pi a unei tranziţii tj este numărul de apariţii ale locaţiei în multisetul de ieşire al tranziţiei #(pi, O(tj)). Dacă intrările şi ieşirile sunt mulţimi (nu multiseturi), atunci multiplicitatea fiecărei locaţii este fie 0, fie 1.

Funcţiile de intrare şi ieşire pot fi uşor extinse la funcţii ce duc şi locaţii în multiseturi de tranziţii, în plus faţă de tranziţii în multiseturi de locaţii. Definim o tranziţie tj ca fiind o intrare a unei locaţii pi, dacă pi este o ieşire a tranziţiei tj. O tranziţie tj este o ieşire a unei locaţii pi dacă pi

este o intrare a tranziţiei tj.

Definiţia 2.2:Definim funcţia de intrare I şi funcţia de ieşire O după cum urmează:I : T P , O : T P, unde: #(tj, I(pi)) = #(pi, O(tj))

#(tj, O(pi)) = #(pi, I(tj))

Pentru reţeaua Petri din figura 2.1 funcţiile de intrare şi ieşire extinse sunt:- I(p1) = {t1}, I(p2) = {t1, t4}, I(p3) = {t1,t4}, I(p4) = {t3}, I(p5) = {t1,t2}- O(p1) = {t1}, O(p2) = {t2}, I(p3) = { t1, t3}, I(p4) = {t4}, I(p5) = {t2}

2.2 Grafuri pentru reţele Petri

Majoritatea rezultatelor teoretice referitoare la reţele Petri se bazează pe definiţiile formale ale structurilor de reţea Petri date în capitolul anterior. Totuşi, o reprezentare grafică a unei structuri de reţea Petri este mult mai folositoare pentru a ilustra conceptele teoriei reţelelor Petri. Un graf pentru o reţea Petri este un multigraf orientat bipartit.

O structură de reţea Petri constă din locaţii şi tranziţii. Corespunzător acestora, un graf de reţea Petri are două tipuri de noduri. Un cerc reprezintă o locaţie; o bară reprezintă o tranziţie. Deoarece un cerc reprezintă o locaţie, am numit cercurile locaţii. Similar, am numit barele tranziţii.

Arcele direcţionate (săgeţile) conectează locaţiile şi tranziţiile, unele fiind direcţionate de la locaţii la tranziţii, altele de la tranziţii la locaţii. Un arc direcţionat de la o locaţie pi la o tranziţie tj

defineşte locaţia ca fiind o intrare a tranziţiei. Intrările multiple într-o tranziţie sunt indicate prin arce multiple de la locaţiile de intrare la tranziţii. O locaţie de ieşire este indicată printr-un arc de la o tranziţie la o locaţie. De asemenea, ieşirile multiple se indică prin arce multiple.

O reţea Petri este un multigraf, de vreme ce acceptă arce multiple de la un nod al grafului la un altul. În plus, deoarece arcele sunt direcţionate, este un multigraf direcţionat. Deoarece nodurile grafului pot fi partiţionate în două reţele (locaţii şi tranziţii), astfel încât fiecare arc este direcţionat de la un element al unei reţele (locaţie sau tranziţie) la un element al celeilalte reţele (tranziţie sau locaţie), acesta este un "graf orientat bipartit". Ne vom referi la el pur şi simplu ca la un graf pentru reţelele Petri.

6

Page 7: Teoria Retelelor Petri Si Modelarea Sistemelor

Definiţia 2.3:Un graf de reţea Petri este un "multigraf orientat bipartit" G = (V, A), unde V = {v1,…,vs} este o mulţime de vârfuri şi A = {a1,…,ar} este un multiset de arce direcţionate ai = (vj, vk), cu vj, vk V. Reţeaua V poate fi partiţionată în două reţele disjuncte P şi T astfel încât V = P T, P T = şi pentru fiecare arc distinct ai A, dacă ai = (vj, vk), atunci fie vj P şi vk T, fie vj T şi vk P.

Figura 2.4: Un graf de reţea Petri echivalent cu structura din figura 2.1

Figura 2.5: Un graf de reţea Petri echivalent cu structura din figura 2.2

Figura 2.6: Un graf de reţea Petri echivalent cu structura din figura 2.3

Figurile 2.4, 2.5 şi 2.6 reprezintă grafuri de reţele echivalente cu structurile de reţele Petri din figurile 2.1, 2.2 şi 2.3.

7

p6

p5

p1

p9

p3

p2

p4

p7

p8

t1

t6

t5

t4

t3

t2

t4

t3

t2

t1

p3

p5

p1

p2

p4

t5

t4

t3

t2

t1

p1

p3

p2

p4

p5

p6

Page 8: Teoria Retelelor Petri Si Modelarea Sistemelor

Pentru a demonstra echivalenţa acestor două reprezentări ale reţelelor Petri, ca structură respectiv ca graf, vom arăta cum se transformă una în cealaltă. Să presupunem că avem C = (P, T, I, O) cu P = {p1,…,pn}, T = {t1,…,tm}. Acum putem defini un graf Petri după cum urmează:

Definiţia 2.4:Definim V= P T. Definim A ca un multiset de arce direcţionate, pentru toate pi P şi tj T:

#((pi, tj), A) = #(pi, I(tj))#((tj, pi), A) = #(pi, O(tj))

G = (V, A) este un graf de reţea Petri care este echivalent cu structura C = (P, T, I, O) de reţea Petri.

Conversia în direcţia opusă (dintr-un graf de reţea Petri într-o structură de reţea Petri) este similară. Apare o problemă interesantă la transformarea dintr-un graf de reţea Petri într-o structură de reţea Petri, şi anume dacă mulţimea de vârfuri este partiţionată în două mulţimi S şi R, care mulţime va fi mulţimea locaţiilor şi care cea a tranziţiilor? Ambele selecţii posibile permit definirea unei reţele Petri deoarece cele două structuri rezultate au locaţiile şi tranziţiile interschimbabile.

Duala unei reţele Petri C = (P, T, I, O) este reţeaua Petri = (T, P, I, O) rezultată din interschimbarea locaţiilor şi tranziţiilor. Structura grafului se păstrează, interschimbând cercurile şi barele grafului pentru a indica schimbarea suferită. Figura 2.7 indică duala reţelei Petri din figura 2.4. Duala este un aspect des utilizat în teoria grafurilor şi se va dovedi că este, de asemenea, un concept interesant vizavi de reţelele Petri. Totuşi, acest concept de dualitate nu a fost folosit în cercetările efectuate asupra reţelelor Petri, datorită mai ales faptului că este dificil de definit duala unei reţele Petri marcate. Reţelele Petri marcate vor fi discutate în cele ce urmează.

Figura 2.7 Duala reţelei Petri din figura 2.4

2.3 Marcajele reţelelor Petri

Un marcaj este o asignare de jetoane locaţiilor unei reţele Petri. Conceptul de jeton este un concept fundamental în teoria reţelelor Petri (la fel ca locaţiile şi tranziţiile). Jetoanele sunt asignate locaţiilor unei reţele Petri şi pot fi gândite ca aparţinând acestora. Numărul şi poziţia jetoanelor se pot schimba în timpul funcţionării unei reţele Petri. Jetoanele sunt folosite pentru a defini funcţionarea unei reţele Petri.

Definiţia 2.5:- Un marcaj al unei reţele Petri C = (P, T, I, O) este o funcţie de la mulţimea locaţiilor P la

mulţimea numerelor naturale N, şi anume : P N.- Marcajul poate fi, de asemenea, definit ca un vector n-dimensional = (1…n), unde n =

card(P) şi i = 1..n, i N. Vectorul dă pentru fiecare locaţie pi din reţeaua Petri numărul de jetoane pentru acea locaţie. Numărul de jetoane pentru poziţia pi este i , unde i = 1..n.

Definiţiile unui marcaj ca o funcţie şi ca un vector se bazează, în mod evident, pe relaţia (pi) = i. Notaţia funcţională este oarecum mai generală şi de aceea mai des folosită.

8

p1

p3

p4p2t1

t2

t5

t3

t4

Page 9: Teoria Retelelor Petri Si Modelarea Sistemelor

O reţea marcată M = (C, ) este formată dintr-o structură de reţea Petri C = (P, T, I, O) şi un marcaj . Acest fapt se mai notează uneori M = (P, T, I, O, ).

Într-un graf de reţea Petri, jetoanele se reprezintă printr-un mic punct în cercurile care reprezintă locaţiile unei reţele Petri. Figurile 2.11 şi 2.12 sunt exemple de grafuri reprezentate ca reţele Petri marcate.

Figura 2.8: O reţea Petri marcată. Structura de reţea Petri este aceeaşi ca în figurile 2.1 şi 2.4. Marcajul este = (1 2 0 0 1).

Figura 2.9 O reţea Petri marcată. Structura de reţea Petri este aceeaşi ca în Figura 2.1, dar marcajul este diferit.

Deoarece numărul de jetoane care pot fi asignate unei locaţii a unei reţele Petri este nemărginit, există o infinitate de marcaje pentru o reţea Petri. Mulţimea tuturor marcajelor pentru o reţea Petri cu n locaţii este mulţimea tuturor vectorilor n-dimensionali din Nn. Această mulţime, de asemenea tot infinită, este desigur nenumărabilă.

2.4 Reguli de funcţionare pentru reţele Petri

Funcţionarea unei reţele Petri este controlată de numărul şi distribuţia jetoanelor în reţeaua Petri. Jetoanele sunt rezidente în locaţii şi controlează execuţia tranziţiilor reţelei. O reţea Petri se execută prin declanşarea tranziţiilor. O tranziţie se declanşează prin mutarea jetoanelor din locaţiile de intrare şi crearea de noi jetoane care sunt distribuite în locaţiile de ieşire.

O tranziţie se poate declanşa dacă este posibilă. O tranziţie este posibilă dacă fiecare dintre locaţiile sale de intrare conţine un număr de jetoane mai mare sau egal cu numărul de arce de la acea locaţie la tranziţie. Sunt necesare jetoane multiple pentru arce multiple de intrare. Jetoanele din locaţiile de intrare care permit o tranziţie sunt jetoanele sale de validare. De exemplu, dacă locaţiile p1 şi p2 sunt intrările tranziţiei t4, atunci t4 este permisă dacă atât p1 cât şi p2 au fiecare cel puţin un jeton. Pentru o tranziţie t7 cu multisetul de intrare {p6, p6, p4}, locaţia p6 trebuie să aibă cel puţin trei jetoane pentru a face posibilă tranziţia t7.

Definiţia 2.6:

9

t4

t3

t2

t1

p3

p5

p1

p2

p4

t4

t3

t2

t1

p3

p5

p1

p2

p4

Page 10: Teoria Retelelor Petri Si Modelarea Sistemelor

O tranziţie tj T dintr-o reţea Petri marcată C = (P, T, I, O) cu marcajul este permisă dacă pentru toate pi P, (pi) #(pi, I(tj)).

O tranziţie se declanşează prin mutarea tuturor jetoanelor posibile din locaţiile de intrare şi depozitarea lor în fiecare dintre locaţiile de ieşire, câte un jeton pentru fiecare arc de la tranziţie la locaţie. Jetoanele multiple sunt produse pentru arce de ieşire multiple. O tranziţie t3 cu I(t3) = {p2} şi O(t3) = {p7, p13} este posibilă ori de câte ori există cel puţin un jeton în poziţia p2. Tranziţia p3 se declanşează prin mutarea unui jeton din poziţia p2 şi depozitarea unui jeton în poziţia p7 şi a altuia în poziţia p13. Jetoanele suplimentare din locaţia p2 nu sunt afectate de declanşarea tranziţiei t3 (deşi pot valida declanşări suplimentare ale t3). O tranziţie t2 cu I(t2) = {p21, p23} şi O(t2) = {p23, p25, p25} se declanşează prin mutarea unui jeton din p21 şi a unuia din p23 şi depozitarea unui jeton în p23 şi a două jetoane în p25 (deoarece p25 are multiplicitatea doi).

Declanşarea unei tranziţii va schimba în general marcajul al reţelei Petri într-un nou marcaj '. Se observă că, deoarece numai tranziţiile permise se pot declanşa, numărul de jetoane din fiecare locaţie rămâne întotdeauna pozitiv la declanşarea unei tranziţii. Prin declanşarea unei tranziţii nu se va încerca niciodată să se mute un jeton care nu este acolo. Dacă nu sunt suficiente jetoane în oricare dintre locaţiile de intrare ale unei tranziţii, atunci aceasta nu este posibilă şi nu se poate declanşa.

Definiţia 2.7:O tranziţie tj într-o reţea Petri marcată cu marcajul se poate declanşa de fiecare dată când este posibilă. Declanşarea unei tranziţii tj posibile produce un nou marcaj ' definit de relaţia:

'(pi) = (pi) - #(pi, I(tj)) + #(pi, O(tj))

Figura 2.10: Ilustrează cum marcajul unei locaţii se schimbă când o tranziţie tj se declanşează. Fiecare locaţie poate sau nu să fie intrare sau ieşire a tranziţiei. Această figură ilustrează numai cazurile în care multiplicitatea este zero sau unu.

Ca un exemplu, vom considera reţeaua Petri marcată din figura 2.11. Cu acest marcaj, trei tranziţii sunt posibile, şi anume tranziţiile t1, t3 şi t4. Tranziţia t2 nu este posibilă deoarece nu se află nici un jeton în nici una din locaţiile p2 sau p3, care sunt amândouă intrări ale tranziţiei t2. Deoarece tranziţiile t1, t3 şi t4 sunt toate posibile, oricare dintre acestea se poate declanşa. Dacă tranziţia t4 se declanşează, mută câte un jeton din fiecare intrare şi depozitează câte un jeton în fiecare ieşire. Astfel, mută un jeton din p5, depozitează un jeton în p3 şi creşte numărul de jetoane din p4 de la doi la trei. Astfel, noul marcaj ce rezultă din declanşarea tranziţiei t4 este cel din figura 2.12.

În reţeaua Petri marcată din figura 2.12, numai tranziţiile t1 şi t3 sunt posibile. Prin declanşarea tranziţiei t1 se va muta un jeton din p1 şi se vor depozita jetoane în p2, p3 şi p4 (două jetoane în p4 deoarece este o ieşire multiplă a tranziţiei t1). Acest fapt produce marcajul din figura 2.13. În această reţea Petri marcată, tranziţiile t2 şi t3 sunt posibile. Declanşarea tranziţiei t3 va determina producerea marcajului din figura 2.14, unde două jetoane au fost mutate din p4 şi unul a fost depozitat în p5.

Declanşarea tranziţiilor poate continua atâta timp cât există cel puţin o tranziţie posibilă. Când nu mai există nici o tranziţie posibilă, execuţia se opreşte.

10

tj

pi

tj

pi

tj

pi pi

tj

’(pi) = (pi) ’(pi) = 1 + (pi) ’(pi) = (pi) - 1 ’(pi) = (pi) – 1 + 1

#(pi, I(tj)) = 0 #(pi, I(tj)) = 1

Page 11: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 2.11: O reţea Petri marcată pentru a ilustra regulile de declanşare. Tranziţiile t1, t3 şi t4 sunt posibile.

Figura 2.12 Marcajul rezultat din declanşarea tranziţiei t4 din figura 2.11.

Figura 2.13 Marcajul rezultat din declanşarea tranziţiei t1 din figura 2.12.

Figura 2.14: Marcajul rezultat din declanşarea tranziţiei t3 din figura 2.13

2.5 Spaţiul stărilor unei reţele Petri

Starea unei reţele Petri este definită de marcajul său. Declanşarea unei tranziţii reprezintă o schimbare în starea reţelei Petri printr-o schimbare în marcajul reţelei. Spaţiul stărilor unei reţele Petri cu n locaţii este mulţimea tuturor marcajelor, adică Nn. Schimbarea de stare cauzată de declanşarea unei tranziţii este definită de o funcţie de schimbare numită funcţie de tranziţie, care se aplică unui marcaj (stare) şi unei tranziţii tj şi produce noul marcaj (stare) care rezultă din declanşarea tranziţiei tj în marcajul . Deoarece tranziţia tj poate să se declanşeze numai dacă este

11

t4

t3

t2

t1

p4

p2

p1

p3

p5

t4

t3

t2

t1

p4

p2

p1

p3

p5

t4

t3

t2

t1

p4

p2

p1

p3

p5

t4

t3

t2

t1

p4

p2

p1

p3

p5

Page 12: Teoria Retelelor Petri Si Modelarea Sistemelor

posibilă, atunci (, tj) = ', unde ' este marcajul care rezultă din jetoanele rămase în intrările lui tj

şi cele adăugate în ieşirile lui tj.

Definiţia 2.8:Funcţia de tranziţie : Nn x T Nn pentru o reţea Petri C = (P, T, I, O) cu marcajul şi

tranziţile tj T este definită dacă şi numai dacă (pi) #(pi, I(tj)), pentru toţi pi P.Dacă (, tj) este definită, atunci (, tj) = ', unde ' = (pi) - #(pi, I(tj)) + #(pi, O(tj)),

pentru toţi pi P.

Dată fiind o reţea Petri C = (P, T, I, O) şi un marcaj iniţial o, putem executa reţeaua Petri prin declanşări succesive de tranziţii. Declanşarea unei tranziţii posibile tj în marcajul iniţial produce un nou marcaj 1 = (o, tj). În acest nou marcaj, putem să declanşăm orice tranziţie posibilă, să spunem tk, ceea ce va determina apariţia unui nou marcaj 2 = (1, tk). Această operaţie poate continua atâta timp cât există cel puţin o tranziţie posibilă în fiecare marcaj. Dacă ajungem la un marcaj în care nici o tranziţie nu este posibilă, atunci nici o tranziţie nu poate să se declanşeze, şi deci funcţia de tranziţie este nedefinită pentru toate tranziţiile. Prin urmare execuţia trebuie să se oprească.

Din execuţia unei reţele Petri rezultă două secvenţe: secvenţa de marcaje (o, 1, 2,...) şi secvenţa de tranziţii (tjo, tj1, tj2,…). Legătura dintre aceste două secvenţe este dată de relaţia (k, tjk) = k+1, pentru k = 0,1,2,…. Dată fiind o secvenţă de tranziţii şi o, putem cu uşurinţă deriva secvenţa de marcaje pentru execuţia reţelei Petri, şi, cu excepţia câtorva cazuri degenerative, dată fiind o referinţă la secvenţa de marcaje, putem deriva secvenţa de tranziţii. De aceea, amândouă aceste secvenţe oferă o înregistrare a modului de execuţie a reţelei Petri.

Într-un marcaj , o mulţime de tranziţii va fi posibilă şi va putea să se declanşeze. Rezultatul declanşării unei tranziţii dintr-un marcaj este un nou marcaj '. Spunem că ' este "direct accesibil" din ; de aceea putem ajunge direct în starea ' din starea .

Definiţia 2.9:Pentru o reţea Petri C = (P, T, I, O) cu marcajul , un marcaj ' este "direct accesibil" din dacă există o tranziţie tj T astfel încât (, tj) = '.

Putem extinde acest concept pentru a defini mulţimea de marcaje "accesibile" pentru o reţea Petri marcată. Dacă ' este direct accesibil din , şi '' este direct accesibil din ', atunci spunem că '' este accesibil din . Vom defini mulţimea "de accesibilitate" R(C, ) a unei reţele Petri C cu marcajul ca fiind mulţimea formată din toate marcajele "accesibile" din . Un marcaj ' este în R(C, ) dacă există o secvenţă de declanşări de tranziţii care va schimba marcajul în marcajul '. Relaţia de "accesibilitate" este închiderea tranzitivă şi reflexivă a relaţiei de "direct accesibilitate".

Definiţia 2.10:Mulţimea de accesibilitate R(C, ) pentru o reţea Petri C = (P, T, I, O) cu marcajul este cea mai mică mulţime de marcaje definită după cum urmează:

1. R(C, );2. Dacă ' R(C, ) şi '' = (', tj) pentru unii tj T, atunci '' R(C, ).

Pentru reţeaua Petri din figura 2.15 şi marcajul = (1 0 0), două marcaje sunt direct accesibile: (0 1 0) şi (1 0 1). Din (0 1 0) nu este accesibil nici un marcaj, deoarece nu este posibilă nici o tranziţie. Totuşi, din (1 0 1) sunt accesibile marcajele (0 1 1) şi (1 0 2). Folosind tehnicile ce vor fi dezvoltate în capitolul 4, putem arăta că mulţimea de accesibilitate R(C, ) este {(1 0 n), (0 1 n) / n 0}.

Este utilă extinderea funcţiei de tranziţie la o funcţie care să ducă un marcaj şi o secvenţă de tranziţii într-un nou marcaj. Pentru o secvenţă de tranziţii tj1, tj2,…, tjk şi un marcaj , marcajul ' = (, tj1, tj2,…, tjk) este rezultatul declanşării mai întâi a tranziţiei tj1, apoi a tranziţiei tj2, şi aşa mai

12

Page 13: Teoria Retelelor Petri Si Modelarea Sistemelor

departe până la tranziţia tjk. (Acest fapt este posibil, desigur, numai dacă fiecare dintre aceste tranziţii este posibilă atunci când îi vine rândul să fie declanşată.)

Definiţia 2.11:Funcţia de tranziţie extinsă este definită pentru un marcaj şi o secvenţă de tranziţii T* după cum urmează:

1. (, ) = 2. (, tj) = ((, tj), )În general se foloseşte această funcţie de tranziţie extinsă.

Figura 2.15: O reţea Petri marcată

2.6 Forme alternative pentru definirea reţelelor Petri

Teoria reţelelor Petri a fost dezvoltată de un număr mare de oameni, ce au lucrat la momente diferite în locuri diferite, folosind instrumente diferite de studiu. În parte şi datorită acestei diversităţi, multe dintre conceptele fundamentale au fost definite de diverşi cercetători în moduri diferite. Vom prezenta unele dintre aceste variante pentru a ilustra că nu există o diferenţă substanţială între definiţii.

Reţelele Petri originale [Petri 1962a], de exemplu, nu permiteau arce multiple între locaţii şi tranziţii. Acest fapt este echivalent cu a defini intrările şi ieşirile unei tranziţii ca fiind mulţimi de locaţii (nu multiseturi). Mai mult, regula de declanşare a fost restricţionată la a cere existenţa unui jeton în fiecare locaţie de intrare şi a nici unuia în locaţiile de ieşire. O tranziţie se declanşează prin mutarea jetoanelor din intrări (care acum devin astfel vide) şi depozitarea acestora în ieşiri (care anterior erau vide şi devin pline prin această operaţie). O tranziţie poate să nu se declanşeze dacă se află deja un jeton într-o locaţie de ieşire. De aceea, un marcaj asignează pentru fiecare locaţie fie zero, fie un singur jeton şi avem : P {0,1}. Ar trebui să fie evident că o reţea cu numai n locaţii are exact 2n marcaje posibile, un număr finit de stări.

Munca de pionierat a ADR, prin Holt şi "The Information System Theory Project" [Holt 1968], a continuat cu aceste definiţii, dar pe măsură ce munca progresa, limitările acestui model au devenit evidente. Studiile lui Holt şi Commoner prezentate la conferinţa de la Woods Hole [Holt and Commoner 1970] au generalizat clasa de marcaje şi regula de declanşare pentru a permite marcaje arbitrare, : P {0,1,2,…}. Aceste noţiuni stau la baza modelului de reţea Petri aşa cum este el definit astăzi (cu excepţia caracteristicii de a avea arce multiple).

Multe din cercetările iniţiale nu dau o descriere formală a modelelor, ci mai degrabă una informativă asupra componentelor relevante, precum locaţii, jetoane, tranziţii şi reguli de declanşare. Una dintre primele definiţii formale a fost dată de Patil [1970a] în lucrarea sa de doctorat, unde o reţea Petri a fost definită ca un 4-tuplu (T, P, A, B), unde T este mulţimea tranziţiilor, P mulţimea locaţiilor, A mulţimea arcelor şi B marcajele iniţiale. Arcele din mulţimea A conectează fie o locaţie cu o tranziţie, fie o tranziţie cu o locaţie. Astfel, A (P x T) (T x P). Multe studii referitoare la reţelele Petri se bazează pe această definiţie şi definesc o reţea Petri ca un triplet (P, T, A) cu o funcţie separată de marcaje.

Conversia de la forma (P, T, A) a definiţiei, la funcţii de intrare şi ieşire separate este descrisă în linii mari în cele ce urmează. Mulţimea de arce este împărţită într-o mulţime de arce de intrare {(pi, tj) / (pi, tj) A} şi una de arce de ieşire {(tj, pi) / (tj, pi) A}. Această formă conduce direct la generalizarea prin care se permit intrări şi ieşiri multiple. Este necesar doar să se ataşeze o multiplicitate fiecărui arc de intrare şi de ieşire.

Hack [1975c] a stabilit o definiţie a reţelelor Petri ca un 4-tuplu (P, T, F, B), unde P este mulţimea de locaţii şi T mulţimea de tranziţii. F şi B sunt funcţii ce duc locaţii şi tranziţii în

13

p2p1

p3 t2t1

Page 14: Teoria Retelelor Petri Si Modelarea Sistemelor

numărul de jetoane necesare pentru intrare (F), sau produse pentru ieşire (B). Astfel, o tranziţie tj

poate să se declanşeze numai dacă în fiecare locaţie pi P sunt cel puţin F(tj, pi) jetoane. O tranziţie se declanşează prin mutarea a F(tj, pi) jetoane din fiecare locaţie de intrare şi depozitarea a B(tj, pi) jetoane în fiecare locaţie de ieşire. Funcţiile F şi B pot fi reprezentate în formă matriceală.

În studiul său, Peterson [Peterson 1973] a încercat să combine tranziţiile cu intrările şi ieşirile acestora prin definirea unei tranziţii ca o pereche ordonată de multiseturi de locaţii,tj P x P. Prima componentă a perechii este multisetul de intrări în tranziţii; a doua componentă este multisetul de ieşiri din tranziţii. Această abordare reduce conceptele fundamentale ale teoriei la locaţii şi jetoane, deoarece tranziţiile sunt structuri compuse din locaţii şi fost utilă în particular pentru a permite definirea simplă a tranziţiilor pentru o reţea Petri existentă.

Aceste definiţii diferă de cea prezentată aici numai prin notaţii. Pentru majoritatea studiilor asupra reţelelor Petri, diferenţele în definiţii apar numai la nivel de notaţii. Totuşi, în unele cazuri, definiţiile pot restricţiona clasa reţelelor Petri nepermiţând arce de intrare sau ieşire multiple, sau restricţionând forma tranziţiilor, astfel încât acestea să trebuiască să aibă o mulţime de locaţii de intrare nevidă şi o mulţime de locaţii de ieşire nevidă, sau astfel încât mulţimea locaţiilor de intrare şi cea a locaţiilor de ieşire să fie disjuncte (fără bucle).

Dar, chiar şi aceste diferenţe sunt neimportante, după cum se va vedea în capitolul 5.

14

Page 15: Teoria Retelelor Petri Si Modelarea Sistemelor

3 Modelarea cu ajutorul reţelelor Petri

Reţelele Petri au fost proiectate şi folosite mai ales pentru modelare. Multe sisteme, în special acelea cu componente separate, pot fi modelate cu ajutorul reţelelor Petri. Sistemele pot fi de multe tipuri diferite: computer hardware, computer software, sisteme fizice, sisteme sociale şi aşa mai departe. Reţelele Petri sunt folosite pentru a modela apariţia a numeroase evenimente şi activităţi dintr-un sistem. În particular, reţelele Petri pot modela fluxul de informaţii sau alte resurse dintr-un sistem.

În acest capitol vor fi prezentate câteva exemple de tipuri de sisteme care au fost modelate cu ajutorul reţelelor Petri. Din această prezentare se va vedea marea clasă a sistemelor care pot fi modelate cu ajutorul reţelelor Petri, unele din tehnicile de modelare care sunt folosite, şi unele din proprietăţile pe care dorim să le aibă sistemele modelate.

3.1 Evenimente şi condiţii

O privire simplă asupra unui sistem din punctul de vedere al reţelelor Petri se concentrează asupra a două concepte de bază: evenimente şi condiţii. Evenimentele sunt acţiuni care au loc în sistem. Apariţia acestor evenimente este controlată de starea sistemului. Starea sistemului poate fi descrisă ca o mulţime de condiţii. O condiţie este un predicat sau descriere logică a stării sistemului. Astfel, o condiţie poate fi fie adevărată, fie falsă.

Deoarece evenimentele sunt acţiuni, ele se pot produce. Pentru ca un eveniment să se producă, s-ar putea să fie necesar ca anumite condiţii să fie adevărate. Acestea se numesc precondiţiile evenimentului. Apariţia evenimentului poate determina ca precondiţiile să nu mai fie adevărate, şi poate stabili ca alte condiţii, numite postcondiţii, să devină adevărate.

Ca un exemplu, considerăm problema modelării unui atelier simplu. Atelierul aşteaptă până când apare un ordin şi apoi îl prelucrază şi îl trimite afră pentru distribuire. Condiţiile pentru sistem sunt:a. Atelierul este în aşteptare.b. A sosit un ordin şi este în aşteptare.c. Atelierul prelucrează ordinul.d. Prelucrarea ordinului s-a încheiat.

Evenimentele vor fi:1. Sosirea unui ordin.2. Atelierul începe prelucrarea ordinului.3. Atelierul termină prelucrearea ordinului.4. Ordinul este trimis pentru distribuire.

Precondiţiile evenimentului 2 („Atelierul începe prelucrarea ordinului.”) sunt evidente: (a)„Atelierul este în aşteptare.” şi (b) „A sosit un ordin şi este în aşteptare.”. Postcondiţia evenimentului 2 este (c) „Atelierul prelucrează ordinul.”. Similar, putem să definim precondiţiile şi postcondiţiile celorlalte evenimente şi să construim următorul tabel de evenimente cu precondiţiile şi postcondiţiile corespunzătoare.

Eveniment Precondiţii Postcondiţii1 Nici una b2 a, b c3 c d, a4 d Nici una

O astfel de privire asupra unui sistem poate fi uşor modelată ca o reţea Petri. Condiţiile sunt modelate ca locaţii într-o reţea Petri; evenimentele sunt modelate prin tranziţii. Intrăriile unei

15

Page 16: Teoria Retelelor Petri Si Modelarea Sistemelor

tranziţii sunt precondiţiile evenimentului corespunzător; ieşirile sunt postcondiţiile. Apariţia unui eveniment corespunde cu declanşarea tranziţiei corespunzătoare. O condiţie adevărată este reprezentată de existenţa unui jeton în locaţia corespunzătoare condiţiei. Când o tranziţie se declanşează, mută jetoanele de validare reprezentând îndeplinirea precondiţiilor şi creează noi jetoane reprezentând îndeplinirea postcondiţiilor.

Reţeaua Petri din figura 3.1 este un model de reţea Petri pentru exemplul de mai sus cu atelierul. Am etichetat fiecare tranziţie şi locaţie cu evenimentul sau condiţia corespunzătoare.

Figura 3.1: Un model de reţea Petri pentru un atelier simplu

De asemenea, pot fi modelate sisteme mai complicate. Atelierul poate avea trei maşini diferite M1, M2, şi M3 şi doi operatori F1 şi F2. Operatorul F1 poate opera maşinile M1 şi M2, iar operatorul F2 poate opera maşinile M1 şi M3. Lucrările necesită două stagii de prelucrare. Mai întâi acestea trebuie prelucrate de maşina M1, apoi de oricare dintre maşinile M2, sau M3. Acest sistem mai complicat va avea următoarele condiţii:a. A sosit o lucrare şi aşteaptă să fie prelucrată de M1.b. O lucrare a fost prelucrată de M1 şi aşteaptă să fie prelucrată de M2 sau M3.c. Prelucrarea lucrării s-a terminat.d. Maşina M1 este liberă.e. Maşina M2 este liberă.f. Maşina M3 este liberă.g. Operatorul F1 este liber.h. Operatorul F2 este liber.i. Maşina M1 este operată de F1.j. Maşina M1 este operată de F2.k. Maşina M2 este operată de F1.l. Maşina M3 este operată de F2.

Pot apărea următoarele evenimente:1. Soseşte un ordin.2. Operatorul F1 porneşte prelucrarea lucrării pe maşina M1.3. Operatorul F1 termină prelucrarea lucrării pe maşina M1.4. Operatorul F2 porneşte prelucrarea lucrării pe maşina M1.5. Operatorul F2 termină prelucrarea lucrării pe maşina M1.6. Operatorul F1 porneşte prelucrarea lucrării pe maşina M2.7. Operatorul F1 termină prelucrarea lucrării pe maşina M2.8. Operatorul F2 porneşte prelucrarea lucrării pe maşina M3.9. Operatorul F2 termină prelucrarea lucrării pe maşina M3.10. Ordinul este trimis pentru livrare.

16

Soseşte un ordin

Un ordin în aşteptare

Începe procesarea

Se termină procesarea

Ordinul este terminat

Ordinul este trimis pentru distribuire

Ordinul este procesat

Maşina este neocupată, în aşteptare

Page 17: Teoria Retelelor Petri Si Modelarea Sistemelor

Precondiţiile şi postcondiţiile fiecărui eveniment sunt:

Eveniment Precondiţii Postcondiţii1 Nici una a2 a, g, d i3 i g, d, b4 a, h, d j5 f b, h, d6 b, g, e k7 k c, g, e8 b, f, h l9 l c, f, h10 c Nici una

Reţeaua Petri pentru acest sistem este reprezentată în Figura 3.2.

Figura 3.2: Un exemplu de atelier mai complex, modelat ca o reţea Petri

Un exemplu similar poate fi prezentat pentru un sistem de calcul care procesează sarcini de la un dispozitiv de intrare şi scoate rezultatele pe un dispozitiv de ieşire. Sarcinile apar pe dispozitivul de intrare. Când procesorul este liber şi se află o sarcină pe dispozitivul de intrare, procesorul începe prelucrarea sarcinii. Când prelucrarea sarcinii este completă, aceasta este trimisă pe dispozitivul de ieşire; procesorul fie continuă cu o altă sarcină, dacă mai există vreuna disponibilă, fie aşteaptă până când soseşte o nouă sarcină pe dispozitivul de ieşire. Acest sistem poate fi modelat cu ajutorul reţelei Petri din figura 3.3.

Figura 3.3: Modelarea unui sistem de calcul simplu

17

Un job este pus în coada de intrare

Un job este în aşteptare

A început un job

Procesorul este liber

Un job este procesat

Un job este terminat

Un job aşteaptă la ieşire

Iese un job

1

c

5

ba d

g

h

i

j

e

f

k

l

2 3

4

6 7

8 9

10

Maşina este neocupată, în aşteptare

Page 18: Teoria Retelelor Petri Si Modelarea Sistemelor

3.2 Concurenţă şi conflicte

Aceste exemple ilustrează unele probleme vizavi de reţelele Petri şi de sistemele care pot fi modelate de către acestea. O problemă este paralelismul (concurenţa) inerent. În modelul de reţea Petri, două evenimente care sunt permise şi nu interacţionează se pot produce independent. Nu este necesară sincronizarea evenimentelor, decât dacă acest fapt este cerut de către sistemul care este modelat. Când este necesară sincronizarea, este simplu de modelat şi acest lucru. Astfel, sistemele Petri par ideale pentru modelarea sistemelor cu control distribuit cu procese multiple ce se execută concurent în timp.

O altă caracteristică majoră a reţelelor Petri este natura lor asincronă. Nu există o măsură inerentă pentru fluxul de timp într-o reţea Petri. Aceasta reflectă o filozofie a timpului care arată că singura proprietate importantă a acestuia, dintr-un punct de vedere logic, constă în definirea unei ordini parţiale a apariţiei evenimentelor. Evenimentele consumă cantităţi diferite de timp în viaţa reală, şi variabilitatea lor este reflectată în modelele realizate cu ajutorul reţelelor Petri prin faptul că se realizează controlul secvenţei de evenimente fără a depinde de noţiunea de timp. Structura de reţea Petri în sine conţine toate informaţiile necesare pentru a defini secvenţele posibile de evenimente. Astfel, în figura 3.3, evenimentul „Un job este terminat” trebuie să fie ulterior evenimentului „A început un job.”. Totuşi, nici o informaţie nu este dată şi nici necesară, referitor la cantitatea de timp necesară pentru executarea unei sarcini.

Executarea unei reţele Petri (şi comportamentul sistemului pe care îl modelează) este văzută aici ca o secvenţă de evenimente discrete. Ordinea apariţiei evenimentelor este una din cele mai multe permise de structura de bază. Aceste fapte conduc la un nedeterminism aparent în execuţia reţelelor Petri. Dacă, la orice moment, este posibilă mai mult de o tranziţie, atunci oricare dintre cele câteva tranziţii posibile poate fi următoarea ce se va declanşa. Din punctul de vedere al modelului de execuţie clasic, alegerea tranziţiei care se va declanşa se face într-o manieră nedeterministă, adică aleatoriu. Această caracteristică a reţelelor Petri reflectă faptul că în situaţiile din viaţa reală în care unele lucruri se întâmplă concurent, ordinea aparentă a apariţiei evenimentelor nu este unică, ci poate apărea orice mulţime de secvenţe de evenimente. Totuşi, ordinea parţială în care evenimentele se întâmplă este unică.

Teoria relativităţii trebuie de asemenea considerată. Unul dintre conceptele de bază ale teoriei relativităţii este acela că comunicarea nu este instantanee, dar informaţia despre apariţia unui eveniment se propagă prin spaţiu cu o viteză mărginită de viteza luminii. Concluzia este că, dacă două evenimente pot apărea simultan, fără nici o relaţie cauzală între ele, atunci ordinea de apariţie poate părea diferită pentru doi observatori diferiţi. Pentru două evenimente A şi B care apar în acelaşi timp, un observator staţionat lângă evenimentul A va primi informaţia referitoare la evenimentul A înaintea celei referitoare la evenimentul B. Observatorul poate deduce astfel că evenimentul A s-a întâmplat înaintea evenimentului B. Pe de altă parte, un observator diferit staţionat lângă evenimentul B, poate determina că exact secvenţa inversă de evenimente s-a întâmplat.

Aceste consideraţii, deşi necesare pentru o înţelegere completă a evenimentelor, introduce o complexitate considerabilă în descrierea şi analiza comportamentului dinamic al unei reţele Petri când este văzut ca o secvenţă de tranziţii ce se declanşează. Pentru limitarea acestei complexităţi este acceptată, în general, o limitare a sistemelor modelate cu ajutorul reţelelor Petri. Declanşarea unei tranziţii (şi a evenimentului asociat) este considerată a fi un eveniment instantaneu, care ia zero unităţi de timp, iar apariţia a două evenimente simultan nu este posibilă. Evenimentele modelate se numesc evenimente primare; evenimentele primare sunt instantanee şi nu sunt simultane. (Se afirmă uneori că timpul este o variabilă reală continuă. De aceea, dacă asociem un timp de apariţie fiecărui eveniment, probabilitatea ca două variabile reale continue alese separat să fie identic egale este zero, şi de aceea evenimentele nu sunt simultane.)

Un eveniment care nu este primar este un eveniment care nu ia zero unităţi de timp. Operaţiile care nu sunt primare pot fi simultane şi de aceea se pot suprapune în timp. Deoarece majoritatea evenimentelor din lumea reală durează, acestea sunt evenimente care nu sunt primare şi de aceea nu pot fi corect modelate prin tranziţii într-o reţea Petri. Totuşi, acest fapt nu cauzează

18

Page 19: Teoria Retelelor Petri Si Modelarea Sistemelor

probleme în modelarea unui sistem. Un eveniment care nu este primar poate fi descompus în două evenimente primare: „Începe evenimentul care nu este primar.” şi „Se termină evenimentul care nu este primar” şi o condiţie, „Se întâmplă evenimentul care nu este primar”. Acest lucru poate fi modelat aşa cum se arată în figura 3.4

Figura 3.4: Modelarea unui eveniment care nu este primar

Petri şi ceilalţi au sugerat că evenimentele care nu sunt primare ar trebui reprezentate într-o reţea Petri printr-un dreptunghi [Petri 1975], aşa cum se arată în figura 3.5, cu evenimentele primare reprezentate prin bare, ca şi mai înainte. Astfel se vor simplifica unele reţele Petri, cum este cea din figura 3.6, care este echivalentă cu reţeaua Petri din figura 3.3. Totuşi, deoarece conceptul sugerat poate, în principal, să fie explicat în termeni de construcţii mai simple, nu vom folosi notaţia cu dreptunghi în acest text. Notaţia cu dreptunghi poate fi considerată valoroasă în modelarea unui sistem complex cu câteva nivele ierarhice, deoarece permite tuturor subreţelelor să fie abstractizate la un singur element al reţelei. Este similar ca sens conceptelor de subrutină sau macro din limbajele de programare.

Declanşarea nedeterministă şi nesimultană a tranziţiilor în modelarea sistemelor concurente este indicată în figura 3.7. În această situaţie, cele două tranziţii posibile nu se afectează reciproc în nici un fel, şi secvenţele posibile de evenimente includ unele în care apare mai întâi una dintre tranziţii, şi altele în care apare mai întâi cealaltă tranziţie.

19

Se termină evenimentul care nu este primar

Începe evenimentul care nu este primar

Procesorul este neocupat

Iese un job

Un job aşteaptă la ieşire

Un job este procesat

Un job este în aşteptare

Un job este pus în coad de intrare

Intrări Ieşiri

Figura 3.6: Modelarea unui sistem de calcul folosind o tranziţie care nu este primară. Reţeaua este echivalentă cu cea din figura 3.3

tk

tj

Desfăşurarea unui eveniment care nu este primar

Figura 3.5: Pentru reprezentarea unui eveniment care nu este primar se foloseşte uneori un dreptunghi

Page 20: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 3.7: ConcurenţaAceste două tranziţii se pot declanşa în orice ordine.

Cealaltă situaţie în care simultaneitatea este mai dificil de mânuit şi care poate fi controlată prin definirea de evenimente care nu apar simultan, este ilustrată în figura 3.8. Aici, cele două tranziţii posibile sunt în conflict. Se poate declanşa numai o singură tranziţie, deoarece, prin declanşare, jetonul din intrarea comună este mutat şi dezactivează cealaltă tranziţie.

Figura 3.8: ConflictTranziţiile tj şi tk sunt în conflict deoarece prin declanşarea oricăreia dintre ele jetonul din pi va fi mutat, făcând imposibillă declanşarea celeilalte tranziţii.

Aceste consideraţii cer înţelegerea completă a sistemelor ce urmează a fi modelate cu ajutorul reţelelor Petri pentru a realiza o modelare corectă a comportamentului sistemului. Din nefericire, multe dintre cercetările asupra reţelelor Petri s-au axat asupra proprietăţilor unei reţele date sau ale unei clase de reţele.

Totuşi, sunt unele zone în care reţelele Petri par să fie instrumentul perfect pentru modelare: acele zone în care evenimentele apar asincron şi independent. Pentru a da o explicaţie asupra modelării cu ajutorul reţelelor Petri, vom arăta în acest capitol cum reţelele Petri pot fi folosite pentru a modela componenta hardware a calculatorului, componenta software a calculatorului şi alte sisteme.

3.3 Componenta hardware a calculatorului

Componenta hardware a calculatorului poate fi gândită pe câteva nivele, iar cu ajutorul reţelelor Petri se poate modela oricare dintre aceste nivele. La un prim nivel, computerele sunt construite din dispozitive de memorie şi circuite poartă; la un al doilea nivel, unităţi funcţionale şi regiştrii sunt folosite drept componente fundamentale ale sistemului. La un al treilea nivel, întregul sistem computaţional poate fi considerat ca o componentă într-o reţea cu mai multe calculatoare. Unul dintre punctele forte al reţelelor Petri este abilitatea acestora de a modela fiecare dintre aceste nivele. Vom demonstra această abilitate printr-o scurtă discuţie şi unele exemple.

3.3.1 Automate cu stări finite

La cel mai jos nivel, sistemul computaţional poate fi descris ca un automat cu stări finite. Un automat cu stări finite este un 5-tuplu (Q, , , , ), unde:Q este o mulţime finită de stări este un alfabet de intrare finit este un alfabet de ieşire finit: Q x Q este funcţia de tranziţie, care leagă starea curentă şi intrarea curentă de starea următoare: Q x este funcţie de ieşire, care leagă starea curentă şi intrarea curentă de simbolul de ieşire.

20

pi

tk

tj

Page 21: Teoria Retelelor Petri Si Modelarea Sistemelor

Un automat cu stări finite este deseori reprezentat printr-o diagramă de stare, precum cea din figura 3.9. Într-o diagramă de stare, stările sunt reprezentate prin cercuri care sunt nodurile grafului. Un arc de la starea qi la starea qj etichetat a/b spune că, din starea qi cu intrarea a, automatul va trece în starea qj şi va scoate la ieşire b. Formal vom avea: (qi,a) = qj şi (qi,a) = b. Alfabetul de intrare defineşte intrările în automat din lumea exterioară, în timp ce alfabetul de ieşire defineşte ieşirile din automat către lumea exterioară.

Figura 3.9: O diagramă de stare pentru un automat cu stări finite care calculează complementul în baza 2 a unui număr binar

De exemplu, vom considera automatul cu stări finite din figura 3.9. Acest automat converteşte un număr binar prezentat de la bitul cu cel mai mic ordin în complementul său negativ în baza 2. Alfabetul său de intrare şi cel de ieşire constă din trei simboluri: 0, 1 şi 2. Starea de start este starea q1. Simbolul de revenire (r) semnalează sfârşitul (sau începutul) unui număr şi readuce automatul în starea sa iniţială. Ieşirea automatului pentru simbolul de revenire este pur şi simplu un ecou al simbolului de revenire.

Un automat cu stări finite similar este prezentat în figura 3.10. Cu aceleaşi intrări, acest automat calculează paritatea numărului. Starea de start este starea q1. Ieşirea nu face altceva decât să copieze intrarea până când simbolul de intrare este un simbol de revenire. Ieşirea pentru simbolul de revenire este 0 pentru un număr impar şi 1 pentru un număr cu par.

Figura 3.10: O maşină de stare pentru calcularea parităţii unui număr binar dat ca intrare

Reprezentarea unui automat finit ca o reţea Petri necesită puţină gândire, deoarece nu s-a menţionat nici o cale de comunicare între reţelele Petri şi lumea exterioară. Reţelele Petri sunt în general studiate izolat. Modelarea interacţiunilor cu lumea exterioară se poate face în mai multe feluri. Pentru problema curentă, am modelat această interacţiune cu ajutorul unei mulţimi speciale de locaţii. Fiecare simbol de intrare va fi reprezentat printr-o locaţie. De asemenea, fiecare simbol de ieşire va fi reprezentat printr-o locaţie. Vom presupune că lumea exterioară va depozita un jeton în locaţia corespunzătoare unui simbol de intrare şi apoi va aştepta apariţia unui jeton într-o locaţie corespunzătoare unui simbol de ieşire care va fi apoi mutat. Această secvenţă se va repeta apoi de câte ori se doreşte. Figura 3.11 ilustrează schema generală.

21

0/0 0/1

1/1

1/0r/rr/r

q1 q2

0/0

r/1

0/01/1

1/1

r/r

q2q1

Ieşiri

Reprezentarea ca reţea Petri a unui automat cu stări finite

Intrări

Page 22: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 3.11: O abordare generală pentru a modela comunicrea dintre o reţea Petri şi lumea exterioară

Se observă că ne aflăm într-o situaţie în care pot apărea confuzii datorate notaţiei, de vreme ce locaţiile asociate cu simbolurile de intrare şi cele asociate cu simbolurile de ieşire se numesc locaţii de intrare şi locaţii de ieşire ale reţelei. Acestea nu trebuie confundate totuşi cu locaţiile de intrare şi cele de ieşire ale unei tranziţii. În ciuda acestei potenţiale confuzii, termenii sunt cei mai naturali pentru ambele concepte.

O abordare alternativă pentru modelarea intrărilor şi ieşirilor unei reţele ar fi folosind tranziţiile. Pentru a indica următorul simbol de intrare, lumea exterioară va selecta o tranziţie de intrare şi o va declanşa. Reţeaua Petri va răspunde declanşând (eventual) tranziţia dintr-o mulţime de tranziţii de ieşire, corespunzătoare ieşirii potrivite. Lumea exterioară va declanşa apoi următoarea tranziţie de intrare, şi tot aşa. Acest fapt este ilustrat în figura 3.12. Se poate arăta cu uşurinţă că aceste două abordări sunt echivalente, fapt pentru care vom folosi prima abordare, cu locaţii modelând simbolurile de intrare şi ieşire.

Figura 3.12: O abordare alternativă pentru a reprezenta comunicarea dintre o reţea Petri şi lumea exterioară, folosind tranziţii în loc de locaţii.

Dată fiind reprezentarea prin locaţii a simbolurilor de intrare şi ieşire, putem prezenta modelarea automatelor cu stări finite. Vom reprezenta fiecare stare a automatului printr-o locaţie în reţeaua Petri. Locaţia curentă este marcată cu un jeton; toate celelalte locaţii sunt goale. Acum pot fi definite tranziţiile pentru ca să schimbe starea şi să definească ieşirile. Pentru fiecare pereche formată dintr-o stare şi un simbol de intrare, definim o tranziţie ale cărei locaţii de intrare sunt locaţiile corespunzătoare stării şi simbolului de intrare şi ale cărei locaţii de ieşire sunt locaţiile corespunzătoare stării următoare şi ieşirii.

Pentru un automat cu stări finite (Q, , , , ), definim o reţea Petri (P, T, I, O) astfel:P = Q T = tq,, q Q şi I(tq,) = q, O(tq,) = (q,), (q,)

Această reţea Petri este un model pentru automatul cu stări finite. Figura 3.13 reprezintă reţeaua Petri corespunzătoare automatului cu stări finite din figura 3.9. Figura 3.14 reprezintă reţeaua Petri corespunzătoare automatului cu stări finite din figura 3.10.

22

Reprezentarea ca reţea Petri a unui automat cu stări finite

IeşiriIntrări

Page 23: Teoria Retelelor Petri Si Modelarea Sistemelor

Comparând reţelele Petri din figurile 3.13 şi 3.14 cu automatele echivalente din figurile 3.9, respectiv 3.10, se pot ridica câteva întrebări. Prima dintre ele este: „De ce este de preferat modelarea cu ajutorul reţelelor Petri descrierii cu ajutorul automatelor cu stări finite?”. Descrierea cu ajutorul automatelor cu stări finite este mai uşor de înţeles decât cea cu ajutorul reţelelor Petri, cu cele 6 tranziţii, 24 de arce şi 7 sau 8 locaţii. Admitem acest lucru.

Totuşi, am arătat că cu ajutorul reţelelor Petri poate fi reprezentat orice sistem care poate fi reprezentat ca un automat finit, ceea ce demonstrează puterea modelelor realizate cu ajutorul reţelelor Petri.

În plus, modelul realizat cu ajutorul reţelelor Petri are anumite avantaje evidente. De exemplu, observăm că alfabetul de ieşire al automatului din figura 3.13 este identic cu alfabetul de intrare al automatului din figura 3.14. Rulând ieşirea din figura 3.13 ca intrare în figura 3.14, putem construi o reţea compusă care calculează complementul negativ în baza 2 şi paritatea sa. Reprezentarea acestei combinaţii sub formă de automat cu stări finite este complexă, necesită o stare compusă cu componente ale ambelor automate, adică un automat cross-product. Pe de altă parte, pentru un model realizat cu ajutorul reţelelor Petri, compunerea înseamnă pur şi simplu suprapunerea locaţiilor de ieşire ale primei reţele cu locaţiile de intrare ale celei de-a doua reţele. În figura 3.15 este reprezentat automatul cross-product, în timp ce în figura 3.16 este reprezentat automatul compus din reţele Petri.

Figura 3.15: Automatul compus reprezentând compunerea serială a automatelor din figurile 3.9 şi 3.10.

23

rr

1

1

00 q1

q2

00

1

1

r

q1

q2

Figura 3.13: O reţea Petri echivalentă cu automatul din figura 3.9

Figura 3.14: O reţea Petri echivalentă cu automatul din figura 3.10

r/1

0/0

1/11/0

0/1

0/1

1/0

r/1

r/0

q21

q11 q22

Page 24: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 3.16: Reţeaua Petri compusă reprezentând compunerea serială a reţelelor Petri din figurile 3.13 şi 3.14

Figura 3.17: O compunere paralelă a reţelelor Petri din figurile 3.13 şi 3.14. Este necesară o subreţea care să ofere intrări pentru ambele reţele Petri componente

24

r

1

0 q1

q2

0

1

q1

q2

r

1

0

rr

1

1

00 q1

q2

00

1

1

r

q1

q2

Page 25: Teoria Retelelor Petri Si Modelarea Sistemelor

Un alt avantaj al reprezentării cu ajutorul reţelelor Petri apare în cazul altor compuneri. De exemplu, o compunere paralelă permite execuţia simultană a automatelor componente. Pentru un automat cu stări finite, acest fapt implică încă o dată automatele cross-product, în timp ce pentru o reţea Petri, presupune doar duplicarea jetoanelor de intrare care reprezintă simbolurile de intrare şi potrivirea acestora în fiecare reţea Petri componentă. În cele din urmă, pentru ieşire selectăm locaţia de ieşire potrivită. De exemplu, dacă dorim să combinăm paralel cele două automate reprezentate cu ajutorul reţelelor Petri în figurile 3.13 şi 3.14, vom obţine o reprezentare ca cea din figura 3.17, care calculează complementul negativ al unui număr negativ în baza 2 şi paritatea sa. Paritatea este ieşire când simbolul de revenire este intrare.

3.3.2 Calculatoare asamblate

Capacitatea de a modela paralelisme şi de a combina cu uşurinţă subsisteme modelate cu ajutorul reţelelor Petri, face modelarea cu ajutorul reţelelor Petri foarte utilă pentru modelarea de componente hardware mai complexe. Sistemele computaţionale sunt construite din multe componente, şi mulţi proiectanţi încearcă să crească viteza prin execuţia în paralel a anumitor funcţii. De aceea reţelele Petri sunt o reprezentare foarte potrivită pentru un asemenea sistem.

Un exemplu al acestei abordări în construirea unui computer de mare performanţă este folosirea benzilor de producţie [Chen 1971]. Această tehnică este similară cu operarea unei linii de asamblare şi este deosebit de utilă pentru procesarea vectorilor şi a tablourilor. O bandă de asamblare este compusă dintr-un număr de nivele, care pot fi în execuţie simultan. Când nivelul k se termină, transmite rezultatele sale nivelului k + 1 şi trece la nivelul k - 1 pentru o nouă lucrare. Dacă fiecare nivel consumă t unităţi de timp şi sunt n nivele, atunci terminarea operaţiei pentru un operand durează nt unităţi de timp. Totuşi, dacă banda de asamblare este alimentată continuu cu noi operanzi, poate întoarce rezultate cu rata de unu la t unităţi de timp.

Ca un exemplu, vom considera adunarea a două numere în virgulă mobilă. Principalii paşi sunt următorii:1. Extragerea exponenţilor celor două numere.2. Compararea exponenţilor şi interschimbarea, în cazul în care este necesar, pentru a ordona

corect cel mai mare şi cel mai mic exponent.3. Deplasarea celei mai mici fracţii pentru a egaliza exponenţii.4. Adunarea fracţiilor.5. Postnormalizarea.6. Considerarea depăşirii inferioare sau superioare a exponentului şi obţinerea exponentului şi

fracţiei rezultatului.Fiecare dintre aceşti paşi poate fi efectuat de o unitate computaţională separată, prin trecerea

unui operand particular de la o unitate la alta pentru terminarea operaţiei de adunare. Acest fapt va permite efectuarea simultană de până la 6 adunări.

Coordonarea diferitelor unităţi se poate face în diverse moduri. Tipic, controlul unei benzi de asamblare este sincron, iar timpul alocat pentru fiecare nivel al benzii de asamblare este o constantă de timp t fixată. La fiecare t unităţi de timp rezultatul fiecărei unităţi este deplasat în jos pe banda de asamblare pentru a deveni intrare pentru următoarea unitate. Abordarea sincronă poate să ţină inutil în loc procesarea, fiind necesară totuşi deoarece timpul trebuincios poate varia de la unitate la unitate, ba chiar şi în interiorul aceleiaşi unităţi, funcţie de intrări. De exemplu, pasul de postnormalizare în adunarea a două numere în virgulă mobilă poate consuma diferite cantităţi de timp în funcţie de cât de lungă trebuie să fie deplasarea de normalizare şi dacă se va face la dreapta sau la stânga. În acest context, de vreme ce timpul t trebuie selectat ca fiind timpul maxim necesar pentru cea mai înceată unitate a benzii de asamblare, ar putea apărea situaţia în care toate unităţile stau inactive cea mai mare parte a timpului aşteptând trecerea a ceea ce a mai rămas din cele t unităţi de timp.

25

Page 26: Teoria Retelelor Petri Si Modelarea Sistemelor

O bandă de asamblare asincronă poate mări viteza, în medie, anunţând când fiecare nivel al benzii de asamblare este complet şi gata să paseze operanzii săi şi să primească alţii noi. Rezultatul nivelului k al benzii de asamblare poate fi trimis la nivelul k + 1 imediat ce nivelul k s-a terminat şi nivelul k + 1 este liber. Vom considera un nivel arbitrar în banda de asamblare. Evident, trebuie să existe un loc unde să se depoziteze intrările şi ieşirile în vreme ce acestea sunt folosite sau produse. Tipic, se folosesc regiştrii: unitatea foloseşte valorile din registrul său de intrare (buffer) pentru a produce valori în registrul său de ieşire (buffer). Unitatea trebuie apoi să aştepte până când(1) registrul său de ieşire a fost golit prin copierea în registrul de intrare al următorului nivel, şi(2) o nouă intrare este disponibilă în registrul său de intrare.

Astfel, controlul pentru nivelul k al benzii de asamblare trebuie să ştie când următoarele propoziţii sunt adevărate:

Registru de intrare plin Registru de intrare gol Registru de ieşire plin Registru de ieşire gol Unitate ocupată Unitate neocupată Are loc copierea

Figurile 3.18 şi 3.19 arată cum poate fi modelată o bandă de asamblare asincronă de acest tip. Figura 3.18 reprezintă o diagramă bloc a unei benzi de asamblare care este apoi modelată ca o reţea Petri în figura 3.19.

Se observă că în acest model am modelat execuţia actuală a unităţilor benzii de asamblare ca evenimente care nu sunt primare. Acest fapt ne permite să ignorăm, la acest nivel, detaliile specifice despre ceea ce face fiecare unitate şi să ne concentrăm asupra modului în care interacţionează. Fiecare operaţie poate fi de asemenea modelată ca o reţea Petri. Reţelele Petri pentru fiecare unitate pot apoi să fie înlocuite în reţeaua Petri din figura 3.19, pentru a obţine o reţea Petri mai detaliată. Această abilitate de a modela un sistem la mai multe nivele diferite de abstractizare, într-o manieră ierarhică, poate fi foarte utilă.

26

Unitatea k-1

Registrul de ieşire k-1

Unitatea k

Registrul de intrare k

Registrul de ieşire k

Registrul de intrare k+1

Copiere k-1 în k

Unitatea k-1 ocupată

Unitatea k ocupată

Copiere k în k+1

Intrarea lui k vidă

Intrarea lui k+1 vidă

Ieşirea lui k plină

Ieşirea lui k-1 plină

Intrarea lui k+1 plină

Ieşirea lui k vidă

Intrarea lui k plină

Ieşirea lui k-1 vidă

Figura 3.18: Diagramă bloc pentru o bandă de asamblare asincronă

Figura 3.19: Un model de reţea Petri pentru o bandă de asamblare asincronă

Page 27: Teoria Retelelor Petri Si Modelarea Sistemelor

3.3.3 Unităţi funcţionale multiple

Structura de control a benzii de asamblare din secţiunea precedentă este o abordare folosită pentru a construi sisteme computaţionale foarte mari şi rapide. Altă abordare, folosită în CDC 6600 [Thornton 1970] şi IBM 360/91 [Anderson at. Al. 1967], de exemplu, este de a oferi multiple unităţi funcţionale. Pe 6600 sunt disponibile 10 unităţi funcţionale: o unitate de salt (pentru salturi condiţionale), o unitate booleană (pentru operaţii booleene), o unitate de deplasare, o unitate de adunare în virgulă mobilă, o unitate de adunare în punct fix, 2 unităţi de înmulţire, o unitate de împărţire şi două unităţi de incrementare (pentru indexare). În plus, sunt disponibili regiştrii multipli pentru a păstra intrările şi ieşirile unităţilor funcţionale. Unitatea de control a calculatorului încearcă să realizeze funcţionarea simultană a mai multor unităţi independente.

De exemplu, vom considera următoarea secvenţă de instrucţiuni pe un sistem computaţional CDC 6600.1. Înmulţirea lui x1 cu x1 dă x0

2. Înmulţirea lui x3 cu x1 dă x3

3. Adunarea lui x2 cu x4 dă x4

4. Adunarea lui x0 cu x3 dă x3

5. Împărţirea lui x0 la x4 dă x6

Când aceste instrucţiuni sunt executate, unitatea de control trimite prima instrucţiune către o unitate de înmulţire. Apoi, deoarece sunt două unităţi de înmulţire, a doua instrucţiune poate de asemenea să fie prelucrată. Observăm că ambele unităţi pot să citească conţinutul lui x1 fără să apară vreo problemă. Instrucţiunea 3 poate fi efectuată de unitatea de adunare. Acum, pentru a prelucra instrucţiunea 4, trebuie să aşteptăm până când instrucţiunile 1, 2 şi 3 se termine, deoarece instrucţiunea 4 foloseşte unitatea de adunare (care este ocupată de instrucţiunea 3) pentru a prelucra x0 (care este calculat de instrucţiunea 1) şi x3 (care este calculat de instrucţiunea 2). Instrucţiunea 5 trebuie să aştepte terminarea instrucţiunii 1 (care calculează x0) şi terminarea instrucţiunii 3 (care calculează x4).

Introducerea acestui tip de paralelism, prin care se execută simultan câteva instrucţiuni ale unui program, trebuie controlată astfel încât rezultatele executării programului cu sau fără paralelism să fie identice. Unele instrucţiuni în program vor cere ca rezultatele instrucţiunilor anterioare să fi fost corect calculate înainte de procesarea următoarelor instrucţiuni. Un sistem care introduce paralelismul într-un program secvenţial menţinând astfel rezultatele corecte se numeşte determinat. Condiţiile pentru menţinerea determinării au fost considerate de Bernstein [1966]. Acestea sunt următoarele: Pentru două operaţii a şi b astfel încât a o precede pe b în precedenţa liniară a programului, b poate să înceapă înaintea lui a dacă şi numai dacă b nu are nevoie de rezultatele lui a ca intrări şi rezultatele lui b nu modifică nici intrările, nici rezultatele lui a.

Un tabel de rezervare este o metodă de aplicare a acestor constrângeri la construcţia unei unităţi de control pentru procesarea instrucţiunilor de separare a unităţilor funcţionale. O instrucţiune pentru unitatea funcţională u ce foloseşte regiştrii i, j şi k poate fi procesată numai dacă toate cele patru componente ale sale nu sunt rezervate; când instrucţiunea este prelucrată, toate cele patru devin rezervate. Dacă instrucţiunea nu poate fi prelucrată la acest moment deoarece fie unitatea funcţională fie unul dintre regiştrii este în uz, unitatea de control aşteaptă până când instrucţiunea poate fi prelucrată înainte de a continua cu următoarea instrucţiune.

Acest tip de schemă poate fi modelat cu ajutorul unei reţele Petri. Fiecărei unităţi funcţionale şi fiecărui registru îi asociem o locaţie. Dacă fie unitatea, fie registrul sunt libere, un jeton se va afla în locaţie; dacă nu, în locaţie nu se va afla nici un jeton. Unităţi funcţionale multiple identice pot fi indicate prin jetoane multiple în locaţii. Figura 3.10 arată o porţiune a unei reţele Petri care poate fi folosită pentru a modela execuţia unei instrucţiuni folosind unitatea u şi regiştrii i, j şi k. Modelarea întregii unităţi de control va genera, desigur, o reţea Petri mult mai mare.

Schema descrisă mai sus este o metodă foarte simplă pentru introducerea paralelismului şi nu ia în considerare, de exemplu, faptul că unităţi funcţionale multiple pot folosi simultan acelaşi

27

Page 28: Teoria Retelelor Petri Si Modelarea Sistemelor

registru ca intrare. De aceea, această schemă nu poate produce programări cu paralelism maxim [Keller 1975b]. Totuşi, există alte scheme care pot face acest lucru. Aceste scheme (mai complicate) pot fi modelate de asemenea de reţele Petri (mai complicate), care pot fi foarte mari. Considerăm că CDC 6600 are 24 de regiştrii diferiţi şi 64 de instrucţiuni diferite. Dacă fiecare instrucţiune şi triplet de regiştrii are nevoie de o locaţie corespunzătoare „unităţii u care operează cu regiştrii i, j şi k”, atunci vor fi necesare o jumătate de milion de locaţii şi tranziţii. Problema principală aici este dificultatea modelării faptului că conţinutul unui registru intern poate specifica care unităţi şi regiştrii vor fi folosiţi (adică indexare). (Orice program dat nu va folosi toate combinaţiile posibile de regiştrii şi unităţi, totuşi acest fapt a permis lui Shapiro şi Saint [1970] să modeleze un sistem computaţional 6600 cu ajutorul unei reţele Petri. Acest model de reţea Petri a fost folosit pentru a optimiza generarea codului pentru un compilator FORTRAN, după cum se va vedea în secţiunea 3.5.)

3.4 Componenta software

La fel ca şi componenta hardware, şi componenta software poate fi modelată cu ajutorul reţelelor Petri. Aceasta este probabil cea mai obişnuită utilizare a reţelelor Petri şi are cel mai mare potenţial în obţinerea de rezultate folositoare. Multe sisteme au fost dezvoltate peste ani pentru descrierea şi modelarea componentei hardware, dar de abia în ultimii ani s-au făcut eforturi pentru realizarea unui model formal al componentei software. Multe dintre aceste eforturi s-au concentrat asupra analizei, specificării şi descrierii programelor secvenţiale; sistemele cu procese concurente constituie una dintre principalele direcţii de cercetare. În acest capitol vom arăta cum reţelele Petri pot modela cu succes multe modele cu procese concurente.

3.4.1 Scheme logice de program

Cazul degenerat al unui sistem cu procese concurente este un sistem cu exact un proces. Examinăm mai întâi cum un singur proces poate fi reprezentat printr-o reţea Petri şi apoi combinând reţelele Petri corespunzătoare proceselor vom obţine reţeaua Petri corespunzătoare sistemului cu procese concurente.

Un singur proces este descris printr-un program. Acest program poate fi scris în multe limbaje, dar pentru simplitate, vom considera un limbaj corespunzător scopului general, precum ALGOL, FORTRAN, DL/1, COBOL, Pascal, Basic, sau chiar limbaje de asamblare. Programul reprezintă două aspecte separate ale procesului; calculul şi controlul. Calculul se ocupă cu operaţiile aritmetice şi logice actuale, intrările şi ieşirile şi manipularea generală a locaţiilor de memorie şi a valorilor acestora. Controlul, pe de altă parte, nu se ocupă cu valorile sau calculele de efectuat, ci numai cu ordinea efectuării acestora.

Reţelele Petri pot să reprezinte cel mai bine structura de control a programelor. Reţelele Petri intenţionează să modeleze secvenţa de instrucţiuni şi fluxul de informaţii şi calculele şi nu valorile informaţiei. Un model al unui sistem, prin natura sa, este o abstractizare a sistemului de modelat. Detaliile specifice se ignoră pe cât posibil. Dacă s-ar modela toate detaliile, atunci modelul ar fi o dublură a sistemului de modelat, nu o abstractizare.

O reprezentare standard a structurii de control a unui program este cu ajutorul schemelor logice. O schemă logică reprezintă fluxul de control într-un program. De exemplu, programul din figura 3.20 este reprezentat prin schema logică din figura 3.22. Se observă că schema logică din figura 3.22 nu specifică calculele ce urmează a fi făcute, ci numai structura programului, fiind o schemă logică neinterpretată. Figura 3.23 ne arată cum poate fi aplicată o interpretare acţiunilor schemei logice de program pentru a reprezenta programul din figura 3.20.

Astfel, arătând cum o schemă logică de program poate fi reprezentată cu ajutorul unei reţele Petri, am arătat cum se reprezintă un program neinterpretat cu ajutorul unei reţele Petri.

28

Page 29: Teoria Retelelor Petri Si Modelarea Sistemelor

O schemă logică de program poate părea foarte asemănătoare cu o reţea Petri, deoarece este compusă din noduri (de două tipuri: de decizie, reprezentate prin romburi, şi de calcul, reprezentate prin dreptunghiuri) şi arce ce le unesc. O cale simplă de a executa o schemă logică de program este de a introduce un jeton care reprezintă instrucţiunea curentă. La executarea instrucţiunii, jetonul se mută în schemă. Similitudinea între această reprezentare grafică a unui program şi o reţea Petri pare să indice că putem înlocui nodurile schemei prin locaţii şi arcele prin tranziţii pentru a crea o reţea Petri echivalentă. Aceasta este metoda de convertire a unui automat cu stări finite într-o reţea Petri (vezi secţiunea 3.3.1).

Totuşi, considerăm că în modelul realizat cu ajutorul reţelelor Petri tranziţiile modelează acţiuni, în timp ce în modelul schemei logice a programului, nodurile modelează acţiuni. De asemenea, dacă jetonul de instrucţiune curentă dintr-o schemă logică de program vrea să meargă „la rest”, atunci se va opri între noduri, pe un arc, nu într-un dreptunghi.

De aceea, translatarea corectă dintr-o schemă logică de program într-o reţea Petri înlocuieşte nodurile schemei cu tranziţii în reţeaua Petri, şi arcele schemei cu locaţii în reţeaua Petri. Fiecare arc al schemei este reprezentat prin exact o locaţie în reţeaua Petri corespunzătoare. Nodurile schemei sunt reprezentate în diferite moduri, în funcţie de tipul lor (de decizie sau de calcul). Figura 3.23 ilustrează cele două metode de translatare. Figura 3.24 aplică această translatare schemei logice de program din figura 3.22 pentru a produce o reţea Petri echivalentă.

Figura 3.23: Translatarea nodurilor de decizie şi de calcul dintr-o schemă logică în tranziţii într-o reţea Petri

29

begin input (y1); input (y2); y3:=1; while y1>0 do begin if add(y1) then begin y3:=y3*y2; y1:=y1 – 1; end; y2:=y2*y2; y1:=y1/2; end; Output(y3);end;

a

f

e

d

c

b

F

T

T

F Acţiune Interpretare

a Input(y1); Input(y2); y3:=1;b y1>0?c add(y1)?d y3:=y3*y2; y1:=y1-1;e y2:=y2*y2;f Output(y3);

Figura 3.20: Un program simplu. Acest program este modelat ca schemă logică în figura 3.22 şi ca reţea Petri în figura 3.24

Figura 3.22: O schemă logică pentru programul din figura 3.21

Figura 3.22: O interpretare a acţiunilor schemei logice din figura 3.21 ce reprezintă programul din figura 3.20

FT

aj

Calcul r

aj

ai ai

aj

Calcul rDeciziie

ai

ak

ai

aj ak

Page 30: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 3.24: Reprezentarea sub formă de reţea Petri a figurii 3.21 derivată din schema logică din figura 3.22

Referitor la reţeaua Petri din figura 3.24 trebuie de asemenea de studiat semnificaţia componentelor. Care este semnificaţia locaţiilor? Cel mai simplu răspuns este de a considera programul numărător al fluxului jetoanelor. În acest sens, un jeton într-o locaţie semnifică faptul că programul numărător este poziţionat gata să execute următoarea instrucţiune.

Fiecare locaţie are o singură tranziţie de ieşire, cu excepţia locaţiilor care preced deciziile; aceste locaţii au două tranziţii de ieşire corespunzătoare valorilor fals sau adevărat pe care le poate lua predicatul de decizie.

Tranziţiile sunt evident asociate cu acţiunile programului: calcule şi decizii. Dacă dorim să interpretăm reţeaua Petri, trebuie să realizăm o interpretare pentru fiecare tranziţie. Se observă de asemenea că tranziţiile pentru acţiunile de calcul au o unică intrare şi o unică ieşire, şi că nu poate exista nici un conflict pentru o tranziţie reprezentând un calcul, de vreme ce locaţia sa de intrare nu mai este locaţie de intrare pentru nici o altă tranziţie. Acţiunile de decizie pot introduce conflicte în reţea, dar într-un fel foarte restrâns: se poate face orice alegere. Alegerea poate fi făcută fie nedeterminist (adică aleatoriu), fie poate fi controlată de aceeaşi forţă externă (adică de un agent) care calculează adevărul sau falsitatea deciziei şi forţează declanşarea tranziţiei corecte. Distincţia între aceste două interpretări ale rezolvării conflictelor este o chestiune de filozofie.

3.4.2 Paralelism

Paralelismul (concurenţa) poate fi introdus acum în câteva moduri. Vom considera cazul a două procese concurente. Fiecare proces poate fi reprezentat printr-o reţea Petri. De aceea, reţeaua Petri compusă, care este pur şi simplu uniunea reţelelor Petri pentru fiecare din cele două procese, poate reprezenta execuţia concurentă a celor două procese. Marcajul iniţial al reţelei Petri compuse are două jetoane, unul în fiecare locaţie, reprezentând programul de numărare iniţial al procesului. Acest fapt introduce un paralelism care nu poate fi reprezentat printr-o schemă logică şi pentru care reprezentarea ca reţea Petri reprezintă o soluţie foarte utilă.

O altă abordare este să considerăm cum paralelismul va fi introdus normal într-un proces într-un sistem computaţional. S-au făcut unele propuneri. Una din cele mai simple presupune operaţiile de ramificare (derivare)(FORK) şi uniune (JOIN) propuse iniţial de Dennis şi Van Horn [1966]. O operaţie de ramificare executată la locaţia i determină continuarea procesului curent la locaţia i + 1 şi crearea unui nou proces cu începerea execuţiei la locaţia j. O operaţie de uniune va recombina două procese într-unul (sau, echivalent, va distruge unul din două şi îl va lăsa pe celălalt să se efectueze). Aceste operaţii pot fi modelate de o reţea Petri, după cum se arată în figura 3.25.

30

bF

af

bT

cT

cF

d

Page 31: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 3.25: Modelarea operaţiilor FORK şi JOIN cu ajutorul reţelelor Petri

(a) FORK (executată la locaţia i, creează două noi procese la locaţiile j şi k)

(b) JOIN (unifică cele două procese care se termină la locaţiile i şi j într-un proces care continuă la locaţia k)

O altă sugestie pentru introducerea paralelismului este introducerea structurii de control parbegin .. parend [Dijkstra 1968]. Această structură de control a fost sugertă de Dijkstra şi are forma generală:

parbegin S1; S2; … Sn;parend

unde Si sunt descrieri de instrucţiuni în limbaj de programare. Semnificaţia structurii parbegin /parend este aceea că instrucţiunile S1, S2,…, Sn se execută în paralel. Această construcţie poate fi reprezentată ca o reţea Petri, după cum se arată în figura 3.26.

Figura 3.26: Modelarea structurii parbegin S1, S2,…, Sn parend sub formă de reţea Petri. Fiecare dintre pătratele din reţea reprezintă una din instrucţiunile S1, S2,…, Sn. Figura ilustrează de asemenea natura ierarhică a modelării cu ajutorul reţelelor Petri

3.4.3 Coordonare

Paralelismul este util de introdus în soluţionarea unei probleme numai dacă procesele concurente pot coopera în soluţionarea problemei. O astfel de cooperare presupune informaţii şi resurse comune pentru procese. Acest acces comun trebuie controlat pentru a asigura funcţionarea corectă a sistemului. O varietate de probleme de coordonare s-a propus în literatură pentru a ilustra tipurile de probleme care pot apărea între procesele ce cooperează.

Apar astfel următoarele probleme: problema excluziunii mutuale [Dijkstra 1965], problema producător /consumator [Dijkstra 1968], problema filozofilor care iau masa împreună [Dijkstra 1968], şi problema cititori /scriitori [Courtais at. Al. 1971].

Aceste probleme sunt probleme clasice de coordonare; orice nouă sugestie pentru un mecanism de coordonare trebuie să poată să rezolve trei probleme. Deşi reţelele Petri sunt o schemă de modelare şi nu un mecanism de coordonare, reţelele Petri trebuie cu siguranţă să poată modela mecanismele de coordonare care rezolvă aceste probleme. De aceea, vom prezenta aici soluţii la aceste probleme în modelarea cu ajutorul reţelelor Petri. Această prezentare se bazează parţial de lucrarea lui Cooprider [1976].

31

pi

pkpj

Ramificare

(a)

Uniune

(b)

pi pj

pk

Parbegin

S1 S2 Sn

Parend

Page 32: Teoria Retelelor Petri Si Modelarea Sistemelor

3.4.4 Problema excluziunii mutuale

Să presupunem că anumite procese au acces comun la o variabilă, înregistrare, fişier, sau altă dată internă. Această dată cu acces comun poate fi folosită în câteva moduri de către procese, dar această utilizare trebuie clasificată din punct de vedere al modului în care e folosită: fie citire a valorii datei la care se are acces comun, fie scriere a unei noi valori. Aceste două operaţii sunt de obicei numai operaţii primare, ccea ce înseamnă că pentru a modifica valoarea datei cu acces comun, un proces trebuie mai întâi să citească vechea valoare, apoi să calculeze noua valoare şi în cele din urmă să scrie în loc noua valoare. Pot părea probleme dacă două procese încearcă să execute în acelaşi timp această secvenţă de instrucţiuni. Poate apărea următoarea secvenţă:

1. Primul proces citeşte valoarea x din obiectul la care se are acces comun2. Al doilea proces citeşte valoarea x din obiectul la care se are acces comun3. Primul proces calculează o valoare nouă x’=f(x)4. Al doilea proces calculează o valoare nouă x’’=g(x)5. Primul proces scrie x’ în obiectul la care se are acces comun6. Al doilea proces scrie x’’ în obiectul la care se are acces comun, distrugând valoarea x’.

Prin urmare, rezultatul obţinut prin calculul efectuat de primul proces s-a pierdut, deoarece acum valoarea obiectului la care se are acces comun este g(x), în loc de g(f(x)), sau f(g(x)). [Considerăm cazul în care g(x) este „o retragere de 1000 $ din contul x”, iar f(x) este „o depunere de 1000 $ în contul x” şi procesele 1 şi 2 sunt funcţionari bancari.]

Pentru a preveni acest tip de probleme, este necesară folosirea unui mecanism pentru excluziunea mutuală. Excluziunea mutuală este o tehnică de a defini cod de intrare şi ieşire astfel încât un singur proces să poată avea acces la o resursă comună la un moment dat. Codul care accesează obiectul cu acces comun şi are nevoie de protecţie pentru a nu intra în interferenţă cu alte procese se numeşte secţiune critică. Ideea este aceea că atunci când un proces urmează să execute porţiunea sa critică, aşteaptă mai întâi ca nici un alt proces să nu mai execute această porţiune critică, apoi „blochează” accesul la aceasta, prevenind accesul altui proces în porţiunea sa critică. În cele din urmă intră în porţiunea sa critică, o execută şi atunci când o părăseşte o „deblochează” pentru a permite altor procese să o acceseze.

Această problemă poate fi rezolvată cu ajutorul unei reţele Petri ca cea din figura 3.27. Locaţia m reprezintă permisiunea de a intra în secţiunea critică. Pentru ca un proces să intre în secţiunea critică, trebuie să aibă un jeton în p1 sau p2, după caz, care să anunţe că se doreşte intrarea în secţiunea critică, şi de asemenea trebuie să existe un jeton în m care să semnalizeze permisiunea de a intra. Dacă ambele procese doresc să intre simultan, atunci tranziţiile t1 şi t2 sunt în conflict, şi numai una dintre ele se poate declanşa. Declanşarea lui t1 va dezactiva tranziţia t2 cerând procesului 2 să aştepte până când procesul 1 va ieşi din porţiunea sa critică şi va pune înapoi un jeton în locaţia m.

Figura 3.27: Excluziunea mutuală Accesul la secţiunea critică a celor două procese este controlat astfel încât cele două procese nu-şi pot executa simultan secţiunea critică

32

m

p1 p2

t1 t2

Secţiune criticăSecţiune critică

Proces 1 Proces 2

Page 33: Teoria Retelelor Petri Si Modelarea Sistemelor

3.4.5 Problema producător /consumator

Problema producător /consumator implică de asemenea un obiect la care se are acces comun, dar în acest caz acest obiect este specificat a fi un buffer. Procesul producător creează obiecte care sunt puse în buffer; procesul consumator aşteaptă până când un obiect a fost pus în buffer, îl ia de acolo şi îl consumă. Acest fapt poate fi modelat după cum se vede în figura 3.28. Locaţia B reprezintă bufferul; fiecare jeton reprezintă un articol care a fost produs dar nu a fost încă consumat.

Figura 3.28: Problema producător /consumator modelată ca o reţea Petri

O variantă la această problemă este problema multipli producători /multipli consumatori. În această variantă, mai mulţi producători produc articole care sunt plasate într-un buffer comun pentru mai mulţi consumatori. Figura 3.29 reprezintă reţeaua Petri soluţie a acestei probleme care coincide cu cea din figura 3.28, cu excepţia faptului că pentru a reprezenta s producători şi t consumatori am pornit sistemul cu s jetoane în locaţia iniţială a procesului producător şi t jetoane în locaţia iniţială a procesului consumator. Astfel am reprezentat s producători şi t consumatori ce execută fragmente de cod reentrant, comun. O alternativă ar fi duplicarea codului pentru procesele producător şi consumator, dar acest fapt provoacă acelaşi comportament cu cel al unei reţele mult mai mari.

Figura 3.29: Problema multipli producători /multipli consumatori. Sunt s producători şi t consumatori, cu s şi t fixate

O altă variantă este problema producător /consumator pentru un buffer finit. În această versiune a problemei producător /consumator, se cunoaşte că buffer-ul dintre producător şi consumator este finit, adică are numai n locaţii pentru articole. De aceea producătorul nu poate întotdeauna să producă atât de rapid pe cât doreşte, dar trebuie să aştepte dacă consumatorul este încet şi buffer-ul plin. Figura 3.30 este o soluţie la această problemă. Bufferul finit este reprezentat de două locaţii: B reprezintă numărul de articole care au fost produse dar nu au fost încă consumate (numărul de locaţii ocupate), iar B’ reprezintă numărul de locaţii libere în buffer. Iniţial B’ are n jetoane şi B nici unul. Dacă buffer-ul se umple, atunci B’ nu va avea nici un jeton, iar B va avea n jetoane. În acest punct, dacă producătorul încearcă să pună un alt articol în buffer, va fi oprit deoarece nu există nici un jeton în B’ pentru a valida această tranziţie.

33

Pune în buffer Consumator

Producător

Scoate din buffer

Producător Consumator

Pune în buffer Consumator

Producător

s t

Scoate din buffer

Producător Consumator

B

Page 34: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 3.30: Problema producător /consumator cu buffer finit. Bufferul, reprezentat prin locaţiile B şi B’ este limitat la cel mult n articole

3.4.6 Problema filozofilor care iau masa împreună

Problema filozofilor care iau masa împreună a fost sugerată de Dijkstra [1968] şi priveşte cinci filozofi care gândesc şi mănâncă alternativ. Filozofii sunt aşezaţi la o masă mare rotundă pe care se află o mare cantitate de preparate chinezeşti. Între fiecare filozof se află câte un beţişor. Totuşi, pentru a mânca mâncare chinezească, sunt necesare două beţişoare; de aceea fiecare filozof trebuie să ridice ambele beţişoare, adică atât pe cel situat în stânga sa, cât şi pe cel situat în dreapta sa. Problema, desigur, este că dacă toţi filozofii ridică beţişorul din stânga lor şi aşteaptă apoi pentru cel din dreapta, vor avea de aşteptat mult şi bine şi se vor înfometa (o situaţie de interblocare).

Figura 3.31 ilustrează reţeaua Petri soluţie a acestei probleme. Locaţiile C1,..,C5 reprezintă beţişoarele, şi de vreme ce fiecare este iniţial liber, se află un jeton în fiecare în marcajul iniţial. Fiecare filozof este reprezentat prin două locaţii, Mi şi Ei reprezentând stările de meditare, respectiv cea în care mănâncă. Pentru ca un filozof să treacă din starea de meditaţie în cea în care mănâncă, ambele beţişoare (cel din stânga şi cel din dreapta) trebuie să fie disponibile. Acest fapt este simplu modelat printr-o reţea Petri.

Figura 3.31: Problema filozofilor care iau masa împreună. Fiecare filozof este modelat prin două locaţii, meditare (Mi) şi mâncare (Ei).

34

B

Pune în buffer

Consumator

Producător Scoate din buffer

Producător Consumator

B’

c1

c2

c3

c4

M2

M1

M3 M4

M5

E1

E2

E3 E4

E5c5

Page 35: Teoria Retelelor Petri Si Modelarea Sistemelor

3.4.7 Problema cititori /scriitori

Există câteva variante ale problemei cititori /scriitori [Courtais at. al. 1971], dar structura de bază este aceeaşi. Există două tipuri de procese: procese cititor şi procese scriitor. Toate procesele au în comun o variabilă, un fişier sau un obiect. Procesele cititor nu modifică niciodată obiectul, în timp ce procesele scriitor îl modifică. De aceea, procesele scriitor trebuie să excludă mutual toate celelalte procese cititor şi scriitor, dar o aceeaşi dată poate fi simultan accesată de mai multe procese cititor. Problema este aceea de a defini o structură de control care nu duce la interblocare sau care nu produce violări ale criteriului de excludere mutuală.

Figura 3.32 ilustrează o soluţie când numărul de procese cititor este maxim n. Într-un sistem în care numărul de procese cititor nu este limitat, numai n cititori pot citi la un moment dat.

Apare totuşi o problemă în cazul în care numărul de cititori nu este limitat şi dorim să permitem unui număr nelimitat de cititori să citească simultan. În acest caz, poate fi demonstrat că va fi necesar pentru cititori să ţină evidenţa numărului de cititori ce citesc. Fiecare cititor adaugă unu la această numărătoare când începe citirea, şi scade unu la terminarea citirii. Acest fapt poate fi uşor modelat cu ajutorul unei locaţii ce conţine un număr de jetoane egal cu numărul de cititori. Totuşi, acum, pentru a permite unui scriitor să înceapă scrierea, este necesar ca această numărătoare să indice zero, adică locaţia corespunzătoare să fie goală, iar în reţelele Petri nu există nici un mecanism care să permită ca o locaţie nemărginită să fie testată pentru a nu fi zero. De aceea, problema cititori /scriitori cu număr nelimitat de cititori nu poate fi rezolvată cu ajutorul reţelelor Petri. Aceasta este prima oară când indicăm că reţelele Petri nu pot modela toate sistemele şi este un subiect care merită să fie studiat mai amănunţit (capitolul 7).

Figura 3.32: Problema cititori /scriitori când numărul de cititori este maxim n. Iniţial sunt s cititori şi t scriitori

3.4.8 Sisteme P şi V

Majoritatea problemelor de sincronizare nu vor fi rezolvate direct cu ajutorul de reţelelor Petri, ci mai întâi în termenii unui mecanism de sincronizare stabilit. În particular, unul dintre cele mai populare mecanisme de sincronizare îl constituie operaţiile P şi V pe semafoare, definite iniţial de Dijkstra [1968]. Un semafor este un tip de dată care poate să ia numai valori întregi nenegative. Operaţia V creşte valoarea cu 1, în timp ce operaţia P o micşorează cu 1. Operaţia P poate apărea numai atunci când valoarea semaforului va rămâne nenegativă după executare; dacă valoarea semaforului este zero, operaţia P va trebui să aştepte până ce un alt proces execută o operaţie V. Amândouă operaţiile P şi V sunt definite pentru a fi primare; nici o altă operaţie nu poate modifica simultan valoarea semaforului.

Aceste operaţii pot fi cu uşurinţă modelate cu ajutorul reţelelor Petri, aşa cum se arată în figura 3.33. Fiecare semafor este modelat cu ajutorul unei locaţii; numărul de jetoane din această locaţie indică valoarea semaforului. O operaţie P foloseşte locaţia semaforului ca intrare; o operaţie V foloseşte locaţia semaforului ca ieşire. Avantajul acestei abilităţi de a modela operaţiile P şi V este acela că multe sisteme sunt scrise sau proiectate folosind operaţiile P şi V. De exemplu,

35

Citire Scrieren

s t

Cititori Scriitori

Page 36: Teoria Retelelor Petri Si Modelarea Sistemelor

sistemul de operare Venus [Liskov 1972] foloseşte operaţiile P şi V ca principal mecanism de comunicare între procese. De aceea, aceste sisteme pot fi modelate cu ajutorul reţelelor Petri.

Figura 3.33: Modelarea operaţiilor P şi V pe un semafor S

3.5 Alte sisteme

Sistemele care au fost descrise până acum sunt tipice pentru modelarea cu ajutorul reţelelor Petri. Dar, acest “tipic” este, în mare parte, rezultatul faptului că reţelele Petri au fost definite şi dezvoltate în special pentru acest scop. Reţelele Petri pot fi, de asemenea, aplicate direct în modelarea unui mare număr de alte sisteme, unele complet diferite de sistemele computaţionale. În această secţiune, vom trece în revistă sumar unele dintre aceste sisteme pentru care reţelele Petri au fost aplicate sau ar putea să fie aplicate.

Graficele PERT au fost îndelung folosite în planificarea şi programarea proiectelor de amploare. Un grafic PERT este o reprezentare grafică a relaţiilor dintre diferitele activităţi care alcătuiesc un proiect de amploare. Un proiect constă dintr-un anumit număr de activităţi; unele activităţi trebuie să se termine înainte ca alte activităţi să poată să înceapă. În plus, la fiecare activitate este asociat un timp indicând durata activităţii. (Uneori, fiecărei activităţi i se asociază trei timpi – timpul minim, timpul mediu, timpul maxim). Activităţile sunt reprezentate grafic sub formă de noduri; arcele sunt folosite pentru a conecta nodurile-activităţi în scopul de a indica precedenţele.

Graficele Petri au acelaşi tip de constrângeri de programare ca şi reţelele Petri. Putem cu uşurinţă să convertim un grafic PERT la o reţea Petri. Fiecare activitate într-un grafic PERT este reprezentată printr-o locaţie, în timp ce constrângerile de precedenţă sunt reprezentate de tranziţii. Graficul PERT din figura 3.34 poate fi convertit la reţeaua Petri echivalentă din figura 3.35.

36

P(S)

V(S)

S

Page 37: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 3.34: Un grafic PERT al construcţiei unei case (Din “Introducere în metoda drumurilor critice în programarea industrială” , de F. Levy, G. Thompson şi G. Wiest, 1963)

37

Start

Săpare

Fundaţie

Terminare

Zugrăvire

Terminare instalaţie electrică

Schelet de lemn

Zidărie

Terminare acoperiş

Streaşini, burlane

Încălzire

a,0

b,4

c,2

d,4

i,2

f,1

g,2e,6

v,8

x,0

s,2

o,3

u,1

r,1

q,1

p,2

h,3

n,2

t,3

m,1

l,3

k,10

j,4

w,5

b,4

Timpul necesar jjobului

Identificatorul jjobului

Legendă:

Page 38: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 3.35: O reţea Petri reprezentând graficul PERT din figura 3.34. Se observă că au fost adăugate câteva noduri suplimentare, necesare pentru o reflectare corectă a constrângerilor de precedenţă şi pentru o referire corectă a situaţiilor în care trebuie să apară aşteptarea

Reţelele Petri sunt un instrument perfect pentru reprezentarea concurenţei şi a constrângerilor de precedenţă ale graficelor PERT, dar graficele PERT oferă, de asemenea, informaţii despre timp care sunt necesare pentru determinarea timpului minim necesar pentru terminarea proiectului, a celui mai târziu timp pentru începerea unei activităţi astfel încât proiectul să nu fie întârziat şi aşa mai departe. O reţea Petri nu oferă nici o informaţie de acest tip. Adăugarea de informaţie despre timp poate oferi o nouă facilitate importantă reţelelor Petri, dar nu este posibilă

38

a

b

c

d

i

j

m

l

k

g

f

no

e

p

q

r

v

w

t

u

s

x

Start

h

Terminare

Page 39: Teoria Retelelor Petri Si Modelarea Sistemelor

dacă considerăm reţelele Petri în forma lor actuală. Se fac cercetări pentru a extinde în această direcţie reţelele Petri.

Banda de asamblare din capitolul 3.3.2 este un caz special de sistem de producţie [Hack 1972]. O linie de producţie este un alt exemplu de sistem de producţie. Sistemele de producţie şi liniile de asamblare pot fi modelate cu ajutorul reţelelor Petri.

Una dintre primele aplicaţii pentru reţelele Petri a fort o unealtă pentru generarea de cod optim pentru un compilator CDC 6600 FORTRAN. Abordarea sugerată de Shapiro şi Saint [1970] a fost aceea de a modela programul FORTRAN ca o reţea Petri, într-o manieră similară cu modelarea schemelor logice în capitolul 3.4.1. Apoi se trece la examinarea instrucţiunilor individuale ale programului pentru a determina numărul minim de constrângeri de precedenţă între instrucţiuni, permiţând eliminarea din reţelele Petri a unor secvenţe de constrângeri artificiale ale programului. Aceste constrângeri artificiale sunt introduse deoarece programatorul în FORTRAN trebuie să exprime instrucţiunile din program într-o ordine totală, deşi este necesară doar una parţială. De exemplu, vom considera următoarele trei instrucţiuni:

10 x = x + 120 y = y + 130 z = x + yInstrucţiunile 10 şi 20 sunt scrise “instrucţiunea 10 înaintea instrucţiunii 20”, dar această

constrângere nu este necesară. Instrucţiunile 10 şi 20 pot fi executate în orice ordine (sau concurent), fără nici un efect asupra programului. Instrucţiunea 30, totuşi, este constrânsă de a urma ambelor instrucţiuni: 10 şi 20. Controlul fluxului trebuie şi el considerat în acest cadru al cerinţelor de secvenţiere. Această analiză este aplicarea condiţiilor Bernstein pentru asigurarea determinării.

Rezultatul acestei analize este o reţea Petri care reprezintă programul cu număr minim de constrângeri de secvenţiere, adică un program ce permite un paralelism maxim. Acum problema este de a compila acest program. Pentru aceasta este necesară reprezentarea variabilelor în regiştri şi ordonarea instrucţiunilor pentru a produce o secvenţă complet ordonată de instrucţiuni în limbaj maşină. 6600 este un computer cu regiştri multipli şi unităţi funcţionale multiple, după cum a fost descris în capitolul 3.3.3. Deoarece unităţile funcţionale pot executa în paralel instrucţiuni separate, este foarte importantă generarea instrucţiunilor într-o ordine ce maximizează paralelismul în execuţia unităţilor funcţionale. Paralelismul este de asemenea afectat de reprezentarea variabilelor în regiştri. Modelul de reţea Petri al constrângerilor programului este combinat cu un model de reţea Petri al unităţii de control CDC 6600, reprezentând constrângerile impuse de componenta hardware. Această reţea compusă reprezintă acum toate secvenţele posibile de instrucţiuni care se pot executa cu componenta hard existentă şi care să efectueze algoritmul programului. Această reţea este apoi executată pentru a produce toate aceste secvenţe de instrucţiuni. Două (sau mai multe secvenţe) sunt create de fiecare dată când două (sau mai multe) tranziţii sunt simultan activate. Declanşarea unei tranziţii va produce o secvenţă; declanşarea alteia va produce o altă secvenţă. De exemplu, reţeaua Petri din figura 3.36 reprezintă secvenţele a b c d e f, b a c d e f, a b c e d f şi b a c e d f. Pe măsură ce aceste secvenţe sunt produse, este calculată cantitatea de timp necesară pentru executarea fiecăreia, iar secvenţa cea mai rapidă este generată mai târziu de compilator pentru actuala execuţie.

Figura 3.36: O reţea Petri care reprezintă câteva secvenţe de execuţii de instrucţiuni

39

c

e

d

b

a

f

Page 40: Teoria Retelelor Petri Si Modelarea Sistemelor

Sistemele chimice sunt un alt exemplu de sisteme care pot fi modelate cu ajutorul reţelelor Petri. Ecuaţiile chimice sunt modelate prin tranziţii; reactanţii sunt modelaţi prin locaţii. Numărul de jetoane dintr-o locaţie indică cantitatea din acel reactant în sistem. De exemplu, reţeaua Petri din figura 3.37 reprezintă următoarele două ecuaţii chimice:

H2C2O4 2CO2 + 2H+ + 2e-

2e- + 2H+ + H2O2 2H2O

Figura 3.37: O reţea Petri reprezentând oxido-reducerea acidului oxalic şi a peroxidului de hidrogen în dioxid de carbon şi apă

Reacţiile catalitice pot fi, de asemenea, reprezentate. Combinaţia de hidrogen şi etilen pentru a forma etan (H2 + C2H4 C2H6) se execută numai în prezenţa platinei.. Diagrama din figura 3.38 reprezintă această situaţie.

Figura 3.38: Producerea etanului din hidrogen şi etilen în prezenţa catalizatorului platină

Meldman şi Holt [1971] au sugerat că sistemele legale pot fi modelate cu ajutorul reţelelor Petri. În aceste sisteme, unii actori (judecători, avocaţi, inculpaţi, funcţionari, şi aşa mai departe) pot efectua concurent activităţi în funcţie de un anumit aspect legal. Activităţile şi relaţiile dintre ele pot fi reprezentate cu ajutorul unei reţele Petri.

O altă utilizare posibilă a reţelelor Petri a fost în modelarea şi analiza protocoalelor de comunicaţie [Merlin 1975]. Reţelele de calculatoare şi sistemele cu procese distribuite trebuie să aibă abilitatea de a transmite informaţii între computere. Aceasta implică intrinsec paralelismul şi de aceea se situează în clasa de probleme pentru care reţelele Petri au fost definite. Farber şi studenţii săi [Merlin 1974, Pastel 1974, Merlin şi Farber 1976, Pastel şi Farber 1976] au dezvoltat metodologii pentru specificarea, proiectarea şi analiza protocoalelor simple de comunicaţie folosind reţelele Petri şi alte modele similare.

Alte sisteme care pot fi modelate cu ajutorul reţelelor Petri includ reţelele de servire /aşteptare (unde cozile de aşteptare vor fi reprezentate prin locaţii şi job-urile prin jetoane), modelele neuronale (declanşările neuronale vor fi modelate prin declanşări de tranziţii), calcule propoziţionale [Genrich 1975, Genrich şi Lantenbach 1972] (locaţiile reprezintă literali şi tranziţiile îi combină pentru a defini clauze în forma normală conjuctivă), şi multe altele. Lista este mărginită în general de timp şi imaginaţia modelatorului, şi nu de proprietăţile reţelelor Petri. Totuşi, am văzut cel puţin un exemplu (problema cititori/scriitori) care nu poate fi modelat cu ajutorul unei reţele Petri. De asemenea, deşi modelarea ca reţea Petri poate ajuta la descrierea sistemului, este necesar

40

H2O

CO2

e-

H2C2O4

H+

H2O2

H2

C2H2

C2H6

pt

Page 41: Teoria Retelelor Petri Si Modelarea Sistemelor

să dezvoltăm instrumente de analiză care ne vor permite să examinăm o reţea Petri şi să- i determinăm proprietăţile. Aceasta ne conduce la următorul capitol, în care prezentăm metode de analiză pentru reţelele Petri.

3.6 Alte studii

Multe dintre cercetările asupra reţelelor Petri s-au făcut mai mult asupra analizei, nu modelării. Cercetări asupra aplicabilităţii reţelelor Petri în modelare au apărut în [Peterson 1977, Agerwola 1978]. Modelarea componentei hard a fost considerată în [Denis 1970a, Huen şi Siewarek 1975]. Studiul lui Shapiro şi Saint [1970] combină modelarea componentelor hard şi soft pentru a implementa un compilator. Studiile lui Cooprider sunt concentrate asupra modelării sistemelor software cu ajutorul reţelelor Petri. Teza de masterat a lui Hack [Hack 1972] se referă la modelarea schemelor de producţie care includ sisteme de tip linie de asamblare.

Baer şi Ellis [1977] au folosit reţelele Petri pentru a modela un compilator, în timp ce Nee [1971] şi Best [1976] au folosit reţelele Petri pentru a modela sisteme de operare. Nee şi Kahl [1975] au modelat componenta hardware a unui sistem computaţional. Azena şi ceilalţi [1975], Azena şi ceilalţi [1976] şi Too şi Musgrave [1975] au sugerat folosirea reţelelor Petri pentru proiectarea automatelor.

Munca de cercetare a lui Nee şi Nutt este în special îndreptată asupra modelării sistemelor pentru a determina proprietăţile de performanţă. Munca lor [Nee 1971, Nutt 1972a, Nutt 1972b, Nee şi Nutt 1973], conduce eventual la dezvoltarea unui model, E-nets, care este legat de reţelele Petri.

41

Page 42: Teoria Retelelor Petri Si Modelarea Sistemelor

4 Analiza reţelelor Petri

În ultimul capitol am demonstrat puterea de modelare a reţelelor Petri. Reţelele Petri sunt capabile să modeleze o mare varietate de sisteme, reprezentând corect interacţiunile între diferitele tipuri de acţiuni care pot apărea. Marele avantaj al reţelelor Petri este, desigur, utilizarea în modelarea sistemelor concurenţiale; concurenţa este modelată într-un mod natural şi convenabil. Un model de reţea Petri poate fi folosit pentru a reprezenta şi comunica proiectarea unui sistem concurent

Totuşi, modelarea ca atare are o utilitate mărginită. Este necesară analiza sistemului modelat. Această modelare va conduce către concluzii importante asupra comportamentului sistemului modelat. De aceea, vom prezenta în acest capitol tehnici de analiză pentru reţelele Petri. Deşi s-au dezvoltat tehnici pentru analiza reţelelor Petri, multe probleme sunt încă deschise. Pentru o mai bună evaluare a utilităţii tehnicilor de analiză care au fost dezvoltate, vom considera mai întâi ce tip de probleme necesită rezolvare în cazul reţelelor Petri. Obiectivul analizei reţelelor Petri este determinarea răspunsului la o întrebare despre reţelele Petri: ce tip de întrebări pot fi puse despre reţelele Petri?

4.1 Probleme de analizat pentru reţelele Petri

Următoarele proprietăţi şi întrebări au fost considerate în literatură despre reţelele Petri. Vom defini şi ilustra aceste proprietăţi în prima parte a acestui capitol şi vom arăta tehnicile potrivite de analiză în a doua parte a acestui capitol.

4.1.1 Siguranţa

Pentru o reţea Petri care modelează un dispozitiv hard real, una dintre cele mai importante proprietăţi este siguranţa. O locaţie din reţeaua Petri este sigură dacă numărul de jetoane din acea locaţie nu este niciodată mai mare ca 1. O reţea Petri este sigură dacă toate locaţiile din reţea sunt sigure.

Definiţia 4.1:O locaţie pi a unei reţele Petri C = (P, T, I, O) cu marcajul iniţial este sigură dacă pentru toate’ R(C, ), ’ 1. O reţea este sigură dacă fiecare locaţie din reţea este sigură.

Siguranţa este o proprietate foarte importantă pentru dispozitivele hard. Dacă o locaţie este sigură, atunci numărul de jetoane din acea locaţie este fie 0, fie 1. astfel locaţia poate fi influenţată de o singură basculare (flip-flop).

Reţelele Petri originale erau sigure prin definiţie, de vreme ce o tranziţie nu putea să se declanşeze decât dacă toate locaţiile sale de ieşire erau goale (şi nu erau permise arce multiple). Acest fapt a fost motivat prin interpretarea unei locaţii ca reprezentând o condiţie. O condiţie, fiind o instrucţiune logică, este fie adevărată (atunci când în locaţie se află un jeton), fie falsă (atunci când în locaţie nu se află nici un jeton), iar jetoanele multiple nu au nici o interpretare. De aceea, marcajul fiecărei locaţii ar trebui să fie sigur într-o interpretare în termeni de condiţii şi evenimente.

Atâta timp cât o locaţie nu este o intrare multiplă sau o ieşire multiplă a unei tranziţii, este posibilă forţarea acelei locaţii de a fi sigură. O locaţie pi care va fi forţată să fie sigură va fi suplimentată printr-o altă locaţie . Tranziţiile care folosesc pi

ca intrare sau ieşire, se modifică după cum urmează:

– Dacă pi I(tj) şi pi O(tj) atunci se adaugă la O(tj).

– Dacă pi O(tj) şi pi I(tj) atunci se adaugă la I(tj).

42

Page 43: Teoria Retelelor Petri Si Modelarea Sistemelor

Scopul acestei noi locaţii este acela de a reprezenta condiţia “pi este goală”. De aceea, pi

şi sunt complementare, adică pi are un jeton numai dacă nu are nici unul, şi viceversa. Orice

tranziţie care mută un jeton din pi trebuie să depoziteze unul în , şi orice tranziţie care mută un

jeton din trebuie să depoziteze unul în pi. Marcajul iniţial trebuie şi el să fie modificat pentru a

oferi exact un jeton fie lui pi, fie lui (Presupunem că marcajul iniţial este sigur.) Observăm că această forţare a siguranţei este posibilă numai pentru locaţiile care sunt sigure în marcajul iniţial şi a căror multiplicitate de intrare şi de ieşire este 0 sau 1, pentru toate tranziţiile. O locaţie care are o multiplicitate de doi pentru o tranziţie va primi două jetoane la declanşarea tranziţiei respective, şi de aceea nu poate să fie sigură. Figura 4.1 este o reţea Petri simplă care a fost forţată să fie sigură în figura 4.2.

4.1.2 Mărginire

Siguranţa este un caz special al proprietăţii mai generale de mărginire. Gândindu-ne la limitările reale în implementarea locaţiilor pentru componenta hard observăm că nu este necesar să cerem siguranţă. Siguranţa permite unei locaţii să fie influenţată de o basculare (flip-flop), dar, mai general, ar putea fi folosit un dispozitiv de numărare. Totuşi, orice astfel dispozitiv de numărare va fi limitat de numărul maxim care poate să fie reprezentat. O locaţie este k-sigură, sau k-mărginită dacă numărul de jetoane din acea locaţie nu poate fi mai mare de k.

Definiţia 4.2:O locaţie pi P a unei reţele Petri C = (P, T, I, O) cu un marcaj iniţial este k-sigură dacă pentru fiecare ’ R(C, ), ’ k.

O locaţie care este 1-sigură este simplu numită sigură. Observăm că limita k a numărului de jetoane care se pot afla într-o locaţie poate fi o funcţie a locaţiei (exp: locaţia p1 este 3-sigură, în timp ce locaţia p2 este 8-sigură). Totuşi, dacă o locaţie pi este k-sigură, atunci este, de asemenea, k’- sigură, pentru toţi k’ k. De vreme ce există numai un număr finit de locaţii, putem alege k ca fiind maximul limitelor fiecărei locaţii şi să definim o reţea Petri ca fiind k-sigură de vreme ce fiecare locaţie a reţelei este k-sigură.

Uneori ne poate preocupa numai dacă numărul de jetoane dintr-o locaţie este mărginit sau nu, şi nu numărul exact ce reprezintă această limită. O locaţie este mărginită dacă este kj-sigură pentru unii kj. O reţea Petri este mărginită dacă toate locaţiile sunt mărginite. O reţea Petri mărginită poate fi realizată în componenta hardware, în timp ce o reţea Petri cu o locaţie nemărginită nu poate fi în general implementată pe componenta hardware (Vă amintim că aceste definiţii sunt independente de interpretare. În implementare, o locaţie poate să reprezinte o entitate care este mărginită, deşi structura reţelei nu reflectă acest fapt.)

4.1.3 Conservativitatea

43

p2p1

t1 t2

p3

t3

p2p1

t1 t2

t3

Figura 4.1: O reţea Petri.Această reţea nu este sigură

Figura 4.2: Reţeaua Petri din figura 4.1 poate fi forţată să fie sigură după cum se arată aici

Page 44: Teoria Retelelor Petri Si Modelarea Sistemelor

Reţelele Petri pot fi folosite pentru a modela sisteme de alocare a resurselor. Spre exemplu, o reţea Petri poate modela cererile, alocările şi eliberările pentru dispozitivele de intrare /ieşire dintr-un sistem computaţional. În aceste sisteme unele jetoane pot reprezenta resursele. O mulţime de trei imprimante este reprezentată printr-o locaţie cu un marcaj iniţial cu trei jetoane. O cerere pentru o imprimantă este o tranziţie care are această locaţie ca intrare; imprimanta este mai târziu eliberată de o tranziţie cu o ieşire la locaţia asociată imprimantei.

Pentru aceste tipuri de reţele Petri, printre altele, conservativitatea este o proprietate importantă. Am vrea să arătăm că jetoanele care reprezintă resursele nu sunt nici create nici distruse. Cel mai simplu mod de a face aceasta este să cerem ca numărul total de jetoane din reţea să rămână constant.

Definiţia 4.3:O reţea Petri C = (P, T, I, O) cu marcajul iniţial este strict conservativă dacă pentru toate

’ R(C, ), .

Conservativitatea strictă este o relaţie foarte puternică. De exemplu, putem arăta imediat că numărul de intrări pentru fiecare tranziţie trebuie să fie egal cu numărul de ieşiri, adică |I(tj)| = |O(tj)|, deoarece în caz contrar declanşarea tranziţiei tj ar modifica numărul de jetoane din reţea.

Pentru o vedere mai largă, totuşi, vom considera figura 4.3 ce reprezintă o reţea strict conservativă deoarece declanşarea oricăreia dintre tranziţiile t1 sau t2 va micşora numărul de jetoane cu 1, în timp ce declanşarea oricăreia dintre tranziţiile t3 sau t4 va adăuga un jeton la marcaj. Am putea, totuşi, să convertim reţeaua Petri din figura 4.3 la reţeaua Petri din figura 4.4 , care este strict conservativă.

O reţea Petri ar trebui să conserve resursa pe care o modelează. Totuşi, nu există o corespondenţă de 1 la 1 între jetoane şi resurse. Unele jetoane reprezintă programe sau alte articole; alte jetoane pot reprezenta resurse reprezentate printr-un jeton. Acest jeton este folosit mai târziu pentru a crea jetoane multiple (unul pentru fiecare resursă) prin declanşarea unei tranziţii cu mai multe ieşiri decât intrări. În general, am vrea să definim o pondere a jetoanelor. Suma ponderilor pentru toate marcajele accesibile ar trebui să fie constantă. Jetoanelor care nu sunt importante li se poate ataşa o pondere 0; altor jetoane li se pot ataşa ponderi de 1, 2, 3 sau orice alt întreg. (Numerele raţionale vor fi acceptate de vreme ce ponderile pot fi înmulţite cu un numitor comun pentru a defini o pondere întreagă. Ponderile iraţionale nu par a fi necesare.)

Un jeton este definit de locaţia sa în reţea, iar toate jetoanele dintr-o locaţie sunt identice. De aceea, ponderile sunt asociate cu fiecare locaţie a reţelei Petri. Un vector de ponderi w = (w1, … ,wn) defineşte o pondere wi pentru fiecare locaţie pi P.Definiţia 4.4:

44

p5

t4

p2

p4

t3

t1 t2

p1

p3

p5

t4

p2

p4

t3

t1 t2

p1

p3

Figura 4.3: O reţea Petri care nu este strict conservativă

Figura 4.4: O reţea Petri strict conservativă care este echivalentă cu reţeaua din figura 4.3

Page 45: Teoria Retelelor Petri Si Modelarea Sistemelor

O reţea Petri C = (P, T, I, O) cu marcajul iniţial este conservativă cu respectarea unui vector de ponderi w, w = (w1, … , wn), n = |P|, wi 0, dacă pentru toate ’ R(C, ),

.

O reţea Petri strict conservativă este conservativă cu respectarea vectorului de ponderi (1,…,1). Toate reţelele Petri sunt conservative cu respectarea vectorului de ponderi (0,…,0). Ultima observaţie ne deranjează deoarece am vrea să definim o reţea Petri ca fiind conservativă dacă este conservativă cu respectarea aceluiaşi vector de ponderi, şi deoarece fiecare reţea Petri este conservativă cu respectarea vectorului zero, condiţia dată nu este satisfăcătoare. Astfel, o reţea Petri este conservativă dacă este conservativă cu respectarea aceluiaşi vector nenegativ de ponderi, w > 0 (cu ponderi pozitive diferite de zero wi > 0).

De aceea, reţeaua Petri din figura 4.3 este conservativă, fiind conservativă cu respectarea vectorului de ponderi (1, 1, 2, 2, 1). Reţeaua Petri din figura 4.5 nu este conservativă.

Figura 4.5: O reţea Petri neconservativă

4.1.4 Viabilitatea

Motivaţia pentru considerarea conservativităţii într-o reţea Petri a fost alocarea resurselor într-un sistem de operare computaţional. O altă problemă care poate apărea în alocarea resurselor pentru un sistem computaţional este interblocarea. Interblocarea a fost subiectul a numeroase studii în ştiinţa calculatoarelor [Hebalker 1970]. Un exemplu simplu poate să ilustreze cel mai bine această problemă. Considerăm un sistem cu două resurse diferite q şi r şi două procese a şi b. Dacă ambele procese au nevoie de ambele resurse, va fi nevoie să le folosească în comun. Pentru a realiza aceasta, vom cere fiecărui proces să ceară o resursă şi mai târziu să o elibereze. Procesul a cere mai întâi resursa q şi apoi resursa r, eliberând în final atât resursa q cât şi resursa r. Procesul b este similar, doar că cere mai întâi resursa r şi apoi resursa q. Figura 4.6 ilustrează aceste două procese şi alocarea resurselor cu ajutorul unei reţele Petri.

Figura 4.6: Alocarea resurselor pentru două procese (a şi b ) şi două resurse (q modelată de p4 şi r modelată de p5)

45

t1

t2

t3

t4

t5

t6

p2

p1

p3

p6

p7

p8

Page 46: Teoria Retelelor Petri Si Modelarea Sistemelor

Iniţial, indicatoarele de marcaj q (p4) şi r (p5) sunt disponibile şi procesele a şi b sunt pregătite. O execuţie a acestei reţele este t1 t2 t3 t4 t5 t6; o alta este t4 t5 t6 t1 t2 t3 . Nici una dintre aceste execuţii nu generează interblocare. Totuşi, dacă considerăm secvenţa t1 t4, procesul a are q şi cere r, iar procesul b are r şi cere q, prin urmare sistemul este interblocat şi nici un proces nu poate continua.

O interblocare într-o reţea Petri desemnează faptul că există o tranziţie (sau o mulţime de tranziţii) care nu se poate declanşa. În figura 4.6, interblocarea apare dacă tranziţiile t2 şi t5 nu se pot declanşa. O tranziţie este activă dacă nu este interblocată, şi aceasta nu înseamnă că tranziţia este executată, ci că poate fi executată. O tranziţie tj a unei reţele Petri C este potenţial declanşabilă într-un marcaj , dacă există un marcaj ’ R(C, ) astfel încât tj este posibilă în ’. O tranziţie este activă într-un marcaj dacă este potenţial declanşabilă în fiecare marcaj din R(C, ). Astfel, dacă o tranziţie este activă, atunci este întotdeauna posibil să manevrăm reţeaua Petri din marcajul său curent către un marcaj care va permite tranziţiei să se declanşeze.

Mai sunt şi alte concepte legate de viabilitate care au fost considerate în studiile despre interblocare [Commoner 1972]. Acestea pot fi grupate pe nivele de viabilitate şi pot fi definite pentru o reţea Petri C cu marcajul după cum urmează:Nivelul 0: O tranziţie tj este activă la nivelul 0 dacă nu poate fi niciodată declanşată.Nivelul 1: O tranziţie tj este activă la nivelul 1 dacă este potenţial declanşabilă; adică, dacă există

un marcaj ’ R(C, ) astfel încât tj să fie posibilă în ’.Nivelul 2: O tranziţie tj este activă la nivelul 2 dacă pentru fiecare întreg n există o secvenţă de

declanşare în care tj apare de cel puţin n ori.Nivelul 3: O tranziţie tj este activă la nivelul 3 dacă există o secvenţă de declanşare infinită în care

tj se petrece de un număr infinit de ori.Nivelul 4: O tranziţie tj este activă la nivelul 4 dacă pentru fiecare marcaj ’ R(C, ) există o

secvenţă de declanşare astfel încât tj să fie posibilă în (’, ).O tranziţie care este activă la nivelul 0 este blocată (dead). O tranziţie care este activă la

nivelul 4 este activă. O reţea este activă la nivelul i dacă fiecare tranziţie este activă la niveluli = 1…4.

Pentru a exemplifica aceste nivele de viabilitate, considerăm figura 4.7. Tranziţia t0 nu se poate declanşa niciodată, deci este blocată. Tranziţia t1 se poate declanşa o singură dată, deci este activă la nivelul 1. tranziţia t2 poate fi făcută să se declanşeze de un număr arbitrar de ori, dar acest număr este dependent de numărul de declanşări ale lui t3. Dacă dorim să declanşăm t2 de cinci ori, atunci declanşăm t3 de cinci ori, apoi t1 şi apoi t2 de cinci ori. Totuşi, odată ce t1 se declanşează (şi t1

trebuie să se declanşeze înainte să se poată declanşa t2), t2 poate declanşa de un număr de ori fixat. Astfel, t2 este activă la nivelul 2, dar nu la nivelul 3. Tranziţia t3, pe de altă parte, poate fi declanşată de un număr infinit de ori, de aceea este activă la nivelul 3, dar nu la nivelul 4, deoarece o dată declanşată t1, t3 nu mai poate fi declanşată.

Figura 4.7: O reţea Petri ce ilustrează diferitele nivele de viabilitate

46

t0

t1

t2t3

Page 47: Teoria Retelelor Petri Si Modelarea Sistemelor

4.1.5 Accesibilitate şi acoperire

Multe dintre problemele care au fost menţionate până acum se concentrează asupra marcajelor accesibile. Probabil cea mai simplă problemă (de stabilit) este problema accesibilităţii.

Definiţia 4.5:Problema accesibilităţii. Dată fiind o reţea Petri cu marcajul şi un marcaj ’, ’ R(C, )?

Problema accesibilităţii este probabil cea mai simplă problemă de analiză asupra reţelelor Petri; multe alte probleme pot fi stabilite în termeni de accesibilitate. De exemplu, pentru reţeaua Petri din figura 4.6, interblocarea poate apărea dacă starea (0, 1, 0, 0, 0, 0, 1, 0) este accesibilă.

Figura 4.8 ilustrează o reţea Petri care îşi propune să rezolve problema excluziunii mutuale: locaţiile p4 şi p9 se aşteaptă să se excludă mutual. Dorim să ştim dacă orice stare este accesibilă cu p4 1 şi p9 1. Această problemă este similară cu accesibilitatea, dar este uşor diferită şi se numeşte problema acoperii. Un marcaj ’’ acoperă un marcaj ’ dacă ’’ ’.

Figura 4.8: O reţea Petri reprezentând soluţia lui Hyman pentru problema excluziunii mutuale [Hyman 1966]. Datorită folosirii repetate a poziţiilor k0, k1, b1 şi b0, acestea sunt repetate în graf pentru a-l face mai uşor de citit. Toate poziţiile etichetate k0 desemnează o singură locaţie.

47

t1

t8

t9

t7

t6

t5

t4

b1

p2

b0

p3

p5

k1 k0

k0

p1

k0b0

p6

b1

b1

k1

p4

b0

k1

k0

t3

t2

t13

t12

t11

p10

k0

p11

b0

b0

k0

k0

k1

p8

t10

k1

k1

p9

b0

p7

b1

Page 48: Teoria Retelelor Petri Si Modelarea Sistemelor

Definiţia 4.6:Problema acoperirii. Dată fiind o reţea Petri C cu marcajul iniţial ’, există un marcaj accesibil ’’

R(C, ) astfel încât ’’ ’?

O altă posibilă utilizare a problemelor de tip accesibilitate ar fi să ridicăm la pătrat conţinutul unor locaţii, concentrându-ne numai asupra potrivirilor sau acoperind conţinutul unor câteva locaţii importante. De exemplu, în reţeaua din figura 4.8, interesul nostru este concentrat asupra locaţiilor p4 şi p9; marcajele celorlalte locaţii nu sunt importante. Astfel, putem considera accesibilitatea sau acoperirea modulo o mulţime de locaţii. Astfel apar problema accesibilităţii submarcajului şi problema acoperii submarcajului.

Aceste probleme pot fi complicate în continuare dacă vom dori să ştim accesibilitatea sau acoperirea pentru o mulţime de marcaje. Problemele rezultate astfel se numesc problema accesibilităţii mulţimii şi problema acoperirii mulţimii. Totuşi, dacă mulţimea este finită, aceste probleme pot fi rezolvate prin soluţionări repetate ale unor probleme de accesibilitate şi acoperire pentru un marcaj.

4.1.6 Secvenţe de declanşare

O altă abordare a analizei care a fost sugerată se concentrează mai mult asupra secvenţelor de tranziţii ce se declanşează decât asupra stărilor. Această abordare este legată de viabilitate, de vreme ce ne putem întreba: poate tranziţia tj să fie declanşată (adică, este blocată)? Mai general, putem dori să determinăm dacă o secvenţă anume de tranziţii ce se declanşează este posibilă, sau dacă este posibilă orice secvenţă dintr-o mulţime de secvenţe ce se declanşează. În figura 4.8, spre exemplu, excluziunea mutuală va fi violată dacă poate apărea una din secvenţele t3 t9 sau t4 t10, sau mai general t3 t9, unde este orice secvenţă de declanşări ce nu conţine t4. Aceste întrebări de analiză introduc conceptul de limbaj al reţelelor Petri ce va fi investigat în detaliu în capitolul 6.

4.1.7 Probleme de echivalenţă şi submulţime

O ultimă clasă de probleme apare din consideraţii legate de optimizare. Dacă o reţea Petri dă dovadă de un anumit comportament, după cum indică mulţimea sa de secvenţe ce se declanşează şi mulţimea sa de accesibilitate, poate reţeaua Petri să fie schimbată (optimizată) fără a- i afecta comportamentul? Această optimizare poate presupune ştergerea tranziţiilor blocate (dead – care nu pot fi niciodată declanşate) şi a locaţiilor moarte (care nu pot fi niciodată marcate), sau poate redefinirea unor tranziţii. Putem noi arăta că două reţele Petri diferit marcate cu acelaşi număr de tranziţii (dar probabil număr diferit de locaţii) vor genera aceeaşi secvenţă de tranziţii ce se declanşează sau că două reţele Petri marcate diferit cu acelaşi număr de locaţii (dar probabil număr diferit de tranziţii) vor genera aceeaşi mulţime de accesibilitate? Acese consideraţii ne-ar putea permite să modificăm reţelele Petri pentru a creşte paralelismul, scădea costul implementării, sau alte optimizări.

În acest caz, suntem preocupaţi să stabilim dacă două reţele Petri sunt echivalente, sau dacă una este o submulţime a celeilalte. Trebuie să fim atenţi cu aceste probleme, pentru a defini corect noţiunea de echivalenţă sau incluziune. Dacă definim echivalenţa ca reţele egal accesibile, atunci nu putem schimba numărul de locaţii, în vreme ce dacă cerem egalitatea mulţimilor de secvenţe de tranziţii care se declanşează, s-ar putea să nu putem schimba tranziţiile. Definirea problemei este de aceea foarte importantă.

48

Page 49: Teoria Retelelor Petri Si Modelarea Sistemelor

4.2 Tehnici de analiză

Mai sunt şi alte probleme care pot fi considerate, dar cele prezentate aici sunt problemele cel mai des întâlnite în literatură; vom menţiona altele pe măsură ce va deveni necesar să le introducem. Se va putea vedea că există, pentru reţelele Petri, o serie de probleme care necesită soluţii.

Se pune întrebarea dacă putem dezvolta tehnici de analiză pentru a rezolva aceste probleme, şi se doreşte, desigur, ca aceste tehnici să poată fi uşor implementate pe un computer, pentru a permite analiza automată a sistemelor modelate.

Au fost sugerate două tehnici majore de analiză a reţelelor Petri, care vor fi prezentate în această secţiune. Aceste tehnici oferă mecanisme de soluţionare pentru câteva dintre problemele anterioare. Tehnica principală care s-a folosit pentru analiza reţelelor Petri este arborele de accesibilitate. Cealaltă tehnică presupune ecuaţii cu matrice. Le vom discuta pe fiecare din acestea pe rând.

4.2.1 Arbore de accesibilitate

Arborele de accesibilitate reprezintă mulţimea de accesibilitate a unei reţele Petri. Pentru exemplificare, vom considera reţeaua Petri marcată din figura 4.9. Marcajul iniţial este (1 0 0). În acest marcaj iniţial două tranziţii sunt posibile t1 şi t2. Deoarece dorim să considerăm întreaga mulţime de accesibilitate, definim noi noduri în arborele de accesibilitate pentru marcajele (accesibile) care rezultă din declanşarea ambelor tranziţii. Un arc etichetat de tranziţia declanşată, merge de la marcajul iniţial la fiecare dintre noile marcaje (figura 4.10). Acest arbore (parţial) arată toate marcajele care sunt direct accesibile din marcajul iniţial.

Acum trebuie să considerăm toate marcajele accesibile din aceste noi marcaje. Din marcajul (1 1 0) putem declanşa din nou t1 [rezultând (1 2 0)] şi t2 [rezultând (0 2 1)], iar din marcajul (0 1 1) putem declanşa t3 [rezultând (0 0 1)]. Astfel rezultă arborele din figura 4.11.

Figura 4.11: Al doilea pas în construirea unui arbore de accesibilitate

Cu cele trei noi marcaje, trebuie să repetăm procesul, producând noi marcaje ce se adaugă la arbore, care va arăta acum ca în figura 4.12. Se observă că marcajul (0 0 1) este blocat (dead), deoarece nici o tranziţie nu este posibilă şi astfel nici o tranziţie nu mai este produsă în arbore de către acest marcaj mort (dead). De asemenea, observăm că marcajul produs prin declanşarea

49

t1

t2

t3

p1

p2

p3

t2t1

(1 0 0)

(0 1 1)(1 1 0)

Figura 4.9: O reţea Petri marcată pentru a ilustra construcţia unui arbore de accesibilitate

Figura 4.10: Primul pas în construirea unui arbore de accesibilitate

(1 0 0)

(0 0 1)

(0 1 1)

(1 2 0) (0 2 1)

(1 1 0)

t1 t2

t3t1 t2

Page 50: Teoria Retelelor Petri Si Modelarea Sistemelor

tranziţiei t3 în (0 2 1) este (0 1 1), care a fost, de asemenea, produs direct din marcajul iniţial prin declanşarea tranziţiei t2.

Figura 4.12: Al treilea pas în construirea unui arbore de accesibilitate

Dacă această procedură este repetată la infinit, fiecare marcaj accesibil va fi eventual produs. Totuşi, arborele de accesibilitate rezultat s-ar putea foarte bine să fie infinit. Dacă fiecare marcaj este în mulţimea de accesibilitate, atunci s-ar putea ca arborele de accesibilitate corespunzător să fie de asemenea infinit. Chiar şi o reţea Petri cu o mulţime de accesibilitate finită poate avea un arbore infinit (figura 4.13). Arborele reprezintă toate secvenţele posibile de secvenţe care se declanşează. Fiecare drum în arbore, pornind de la rădăcină, corespunde unei secvenţe legale de tranziţii. Deoarece arborele s-a dovedit a fi un bun instrument de analiză, trebuie să găsim o cale să-l limităm la o dimensiune finită. (Observăm că dacă reprezentarea unei mulţimi infinite este finită, atunci un număr infinit de marcaje trebuie să apară pe aceeaşi reprezentare. Aceasta va determina, în general, o pierdere de informaţie, care poate însemna că unele proprietăţi ale reţelelor Petri nu pot fi determinate, dar aceasta depinde de cum este realizată reprezentarea.)

Figura 4.13: O reţea Petri simplă cu un arbore infinit de accesibilitate

Reducerea la o reprezentare finită poate fi realizată prin mai multe metode. Trebuie să găsim o metodă de a limita noile marcaje (numite noduri de frontieră) introduse la fiecare pas. Această operaţie este facilitată de nodurile moarte (dead), adică acele marcaje în care nici o tranziţie nu este posibilă. Aceste marcaje moarte (dead) sunt cunoscute sub numele de noduri terminale. O altă clasă de marcaje sunt acele marcaje care au apărut anterior în arbore. Aceste marcaje duplicate sunt cunoscute ca noduri duplicate, şi nu este necesar să se considere nici un succesor al unui astfel de nod, deoarece toţi succesorii vor fi produşi de la prima apariţie în arbore a marcajului. De aceea, în arborele din figura 4.12 marcajul (0 1 1) care rezultă din secvenţa t1 t2 t3 nu produce noduri

50

(1 0 0)

(0 0 1)

(0 1 1)

(1 2 0) (0 2 1)

(1 1 0)

t1 t2

t3t1 t2

(0 1 1)(1 3 0) (0 3 1)

t3

t1 t2

t2t1

1 0

0 1

1 0

0 1

1 0

t1

t1

t2

t1

t2

Page 51: Teoria Retelelor Petri Si Modelarea Sistemelor

următoare în arbore, de vreme ce a mai apărut mai devreme în arbore ca rezultat al secvenţei t2 din marcajul iniţial.

Mai există o metodă care poate fi folosită pentru a reduce arborele de accesibilitate la o reprezentare finită. Pentru aceasta considerăm o secvenţă de tranziţii care se declanşează care începe cu un marcaj şi se sfârşeşte cu un marcaj ’, astfel încât ’ > . Marcajul ’ este acelaşi cu marcajul , cu excepţia faptului că are câteva jetoane “suplimentare” în unele locaţii, ceea ce înseamnă că ’ = + (’ - ) şi ’ - > 0. Acum, deoarece declanşările tranziţiilor nu sunt afectate de jetoanele suplimentare, secvenţa poate fi declanşată din nou, începând din ’ şi terminând în ’’. Deoarece efectul secvenţei de tranziţii a fost să adauge ’ - jetoane la marcajul , la această nouă declanşare va mai adăuga încă ’’ - jetoane la marcajul ’, astfel încât ’’ = ’ + (’ - ) [sau ’’ = + 2(’ - )]. În general, putem să declanşăm secvenţa de n ori pentru a produce un marcaj + n(’ - ). Astfel, pentru acele locaţii care au câştigat jetoane de la secvenţa putem crea un număr arbitrar de mare de jetoane doar prin repetarea secvenţei de câte ori dorim. În reţeaua Petri din figura 4.9, de exemplu, putem declanşa tranziţia t1 de câte ori este nevoie pentru a construi un număr arbitrar de jetoane în p2.

Reprezentăm numărul infinit de marcaje care rezultă din aceste tipuri de bucle folosind un simbol special w, pe care îl putem gândi ca “infinit” şi care reprezintă un număr de jetoane care poate fi făcut arbitrar de mare. Pentru orice constantă a, definim operaţiile : w + a = w; w – a = w; a < w; w w, singurele necesare pentru construirea arborelui de accesibilitate.

Actualul algoritm pentru construirea arborelui de accesibilitate poate fi acum precizat exact. Fiecărui nod i din arbore i se asociază un marcaj extins [i], pentru a permite astfel ca numărul de jetoane dintr-un marcaj să fie fie un întreg nenegativ, fie simbolul w. Fiecare nod este clasificat, de asemenea, ca nod de frontieră, terminal, duplicat, sau interior. Nodurile de frontieră sunt nodurile care nu au fost încă procesate de algoritm; ele sunt convertite de algoritm în noduri terminale, duplicate sau interioare.

Algoritmul începe prin definirea marcajului iniţial ca rădăcină a arborelui, şi iniţial, nod de frontieră. Atâta timp cât există noduri de frontieră, ele sunt procesate de algoritm.

Fie x un nod de frontieră ce urmează să fie procesat.1. Dacă există un alt nod y în arbore care nu este nod de frontieră şi are acelaşi marcaj asociat,

adică (x) = (y), atunci nodul x este un nod duplicat.2. Dacă nici o tranziţie nu este posibilă pentru marcajul [x] (adică, ([x], tj) nu este definită

pentru nici un tj T), atunci x este nod terminal.3. Pentru toate tranziţiile tj T care sunt posibile în [x] (adică, ([x], tj) este definită),

creează un nou nod z în arborele de accesibilitate. Marcajul [z] asociat cu acest nou nod este, pentru fiecare locaţie pi:a) Dacă [x]j = w, atunci [z]i = w.b) Dacă există un nod y pe drumul de la rădăcină la nodul x cu [y] < ([x], tj) şi

[y]i < ([x], tj)i, atunci [z]i = w.c) Altfel, [z]i < ([x], tj)i.

Un arc, etichetat tj, este direcţionat de la nodul x la nodul z. Nodul x este redefinit ca un nodinterior; nodul z devine un nod de frontieră. Când toate nodurile au fost clasificate ca terminale, duplicate sau interioare, algoritmul se opreşte.

Figura 4.14 reprezintă arborele de accesibilitate al reţelei Petri din figura 4.9. Arborele de accesibilitate al reţelei Petri din figura 4.15 este arătat în figura 4.16.

51

(1 0 0)

(0 0 1)

(0 1 1)

(1 w 0) (0 w 1)

(1 w 0)

t1 t2

t3t1 t2

(0 w 1)

t3

Page 52: Teoria Retelelor Petri Si Modelarea Sistemelor

t3

t3

t2

t2

t1

(1 0 1 0)

(1 0 0 1)

(1 1 0)

(1 w 1 0)

(1 w 1 0)(1 w 0 0)

Figura 4.14: Arborele de accesibilitate pentru reţeaua Petri din figura 4.9.

Figura 4.15: O reţea Petri pentru a ilustraconstrucţia arborelui de accesibilitate.

O proprietate foarte importantă a algoritmului pentru construirea arborelui de accesibilitate este faptul că se termină. Pentru a demonstra aceasta trebuie să arătăm că algoritmul nu poate continua să creeze la infinit noi noduri de frontieră. Demonstrarea acestei proprietăţi necesită trei leme.

Lema 1:În orice arbore direcţionat infinit în care fiecare nod are numai un număr finit de succesori direcţi, există un drum infinit ce porneşte de la rădăcină.

Demonstraţie:Începem de la rădăcină cu nodul x0. Deoarece există numai un număr finit de succesori direcţi ai lui x0, dar numărul total de noduri din arbore este infinit, cel puţin unul dintre succesorii direcţi ai lui x0

trebuie să fie rădăcina unui subarbore infinit (dacă toţi subarborii având ca rădăcini succesorii direcţi ai lui x0 ar fi finiţi, atunci arborele cu rădăcina x0 ar fi finit.) Se alege un nod x1 care este un succesor direct al lui x0 şi rădăcină a unui subarbore infinit. Acum, unul dintre succesorii săi direcţi este, de asemenea, rădăcina unui subarbore infinit; alegem x2 un astfel de succesor direct. Continuând în această manieră, obţinem un drum infinit x0, x1, x2 … în arbore.

Lema 2:

52

p1

p2

p3

p4

t1

t2

Figura 4.16: Arborele de accesibilitate pentru reţeaua Petri din figura 4.15

Page 53: Teoria Retelelor Petri Si Modelarea Sistemelor

Fiecare secvenţă infinită de întregi nenegativi conţine o secvenţă infinită care nu este descrescătoare.

Demonstraţie:Apar două cazuri:1. Dacă un element al secvenţei apare de o infinitate de ori, atunci fie x0 un astfel de element.

Secvenţa infinită x0, x0, … este o subsecvenţă infinită care nu este descrescătoare.2. Dacă nici un element nu apare de o infinitate de ori, atunci fiecare element apare numai de

un număr finit de ori. Fie x0 un element arbitrar al secvenţei. Sunt cel mult x0 întregi care sunt nenegativi şi mai mici decât x0 [0, 1,…, x0 - 1], şi fiecare dintre aceştia apare în secvenţă numai de un număr finit de ori. Astfel, mergând suficient de departe în secvenţă, trebuie să întâlnim un element x1 cu x1 x0. Similar, trebuie să existe un x2 mai departe în secvenţă, cu x2 x1, şi aşa mai departe. Definim astfel o secvenţă infinită care nu este descrescătoare: x0, x1, x2, ….În fiecare dintre aceste două cazuri, există o secvenţă infinită care nu este descrescătoare.

Lema 4.3:Fiecare secvenţă infinită de vectori de dimensiune n peste întregii nenegativi extinşi (întregi nenegativi plus simbolul w) conţine o subsecvenţă infinită care nu este descrescătoare.

Demonstraţie:Prin inducţie după n, dimensiunea spaţiului vectorial:1) Verificare:(n=1)

Dacă există un număr infinit (w) de vectori în secvenţă, atunci aceştia formează o secvenţă infinită care nu este descrescătoare. Dacă nu, secvenţa infinită formată prin ştergerea unui număr finit de vectori (v) conţine o subsecvenţă infinită care nu este descrescătoare, conform lemei 4.2.

2) Ipoteza de inducţie:(Presupunem că lema este adevărată pentru n şi demonstrăm că este adevărată şi pentru n+1)

Considerăm prima coordonată. Dacă există un număr infinit de vectori cu w prima coordonată, atunci selectăm această subsecvenţă infinită care nu este descrescătoare (este constantă) în prima coordonată. Dacă există numai un număr finit de vectori cu w prima coordonată, atunci considerăm secvenţa infinită de întregi care au prima coordonată ca în lema 4.2. Această secvenţă conţine o subsecvenţă infinită care nu este descrescătoare. Astfel, definim o subsecvenţă infinită de vectori care nu sunt descrescători în prima coordonată.

În fiecare caz, avem o secvenţă de vectori care nu sunt descrescători în prima coordonată. Aplicăm ipoteza de inducţie pe secvenţa de vectori de dimensiune n, care rezultă prin ignorarea primei componente a fiecărui vector. Subsecvenţa infinită care se obţine astfel nu este descrescătoare în nici o coordonată.

Acum putem demonstra următoarea teoremă:Teorema 4.1:Arborele de accesibilitate al unei reţele Petri este finit.

Demonstraţie:Vom face demonstraţia prin reducere la absurd.Presupunem prin absurd că există un arbore de accesibilitate infinit. Atunci, conform lemei 4.1, există un drum infinit x0, x1, x2, … de la rădăcina x0. (Numărul de succesori pentru fiecare nod din arbore este limitat de m, numărul de tranziţii.) Apoi, [x0], [x1], [x2], … este o secvenţă infinită de vectori de dimensiune n peste H {w} şi, conform lemei 4.3, conţine o subsecvenţă

. Dar, din construcţie, nu putem avea [xi] = [xj], deoarece astfel unul ar

fi un nod duplicat şi nu ar avea succesori. Astfel, trebuie să avem o secvenţă infinită strict

crescătoare . Dar, din nou din construcţie, deoarece [xi] < [xj], ar trebui

să înlocuim cel puţin o componentă a lui [xi] printr-un w în [xj]. Astfel, are cel puţin o

53

Page 54: Teoria Retelelor Petri Si Modelarea Sistemelor

componentă care este w, are cel puţin două componente care sunt w, iar are cel puţin n

componente care sunt w. Deoarece marcajele sunt n-dimensionale, are toate componentele w.

Dar apoi nu poate fi mai mare decât . Aceasta este o contradicţie, ceea ce

demonstrează că presupunerea noastră că ar exista un arbore de accesibilitate infinit era incorectă.

Construcţia arborelui de accesibilitate a fost mai întâi descrisă de Karp şi Miller [1968]. O variantă a fost dată de Keller [1972]. Demonstraţia dată aici a faptului că arborele de accesibilitate este finit a fost dată de Hack [1974a], care s-a bazat în demonstraţia sa pe demonstraţia formulată de Miller [1968].

Arborele de accesibilitate este un instrument extrem de util pentru analiza reţelelor Petri, şi de aceea vom arăta, în următoarele secţiuni, cum poate fi folosit pentru rezolvarea câtorva din problemele prezentate în secţiunea 4.1

4.2.1.1 Siguranţă şi mărginire

O reţea Petri este sigură dacă numărul de jetoane din fiecare locaţie este cel mult 1; o reţea Petri este mărginită dacă există un întreg k astfel încât numărul de jetoane din fiecare locaţie să nu fie mai mare de k. Fiecare dintre aceste proprietăţi poate fi testată folosind arborele de accesibilitate. O reţea Petri este mărginită dacă şi numai dacă simbolul w nu apare niciodată în arborele său de accesibilitate. Apariţia simbolului w ca parte a unui arbore de accesibilitate arată că numărul de jetoane este “potenţial nelimitat”; există o secvenţă de tranziţii ce se declanşează care poate fi repetată de un număr arbitrar de ori pentru a creşte numărul de jetoane la un număr arbitrar, nelimitat . Astfel, dacă apare simbolul w, reţeaua nu este mărginită. În plus, simbolul w indică prin poziţia sa care locaţie nu este mărginită.

Desigur, dacă reţeaua Petri nu este mărginită, atunci numărul de marcaje accesibile este infinit. Deoarece arborele de accesibilitate este finit, simbolul w trebuie să apară pentru a reprezenta numărul infinit de marcaje accesibile.

Dacă reţeaua Petri este mărginită şi simbolul w nu apare în arborele de accesibilitate, atunci reţeaua Petri reprezintă un sistem cu stări finite. În acest caz, arborele de accesibilitate este esenţial un graf de stări şi va conţine un nod corespunzător fiecărui marcaj accesibil. Aceasta permite ca fiecare altă problemă de analiză să fie rezolvată printr-o simplă examinare exhaustivă a mulţimii finite de marcaje accesibile. De exemplu, pentru a determina mărginirea unei locaţii anume, se generează arborele şi apoi se parcurge căutându-se cea mai mare valoare a componentei marcajelor corespunzătoare acelei locaţii. Aceasta este limita numărului de jetoane pentru acea locaţie. Dacă limita pentru toate locaţiile este 1, atunci reţeaua este sigură.

Figura 4.17 demonstrează folosirea arborelui de accesibilitate pentru determinarea mărginiriiObservăm că, chiar şi pentru reţelele Petri care nu sunt mărginite (deoarece unele locaţii sunt nemărginite) este posibil să determinăm limitele pentru acele locaţii din arborele de accesibilitate care sunt mărginite. De aceea, arborele de accesibilitate rezolvă efectiv analiza reţelelor Petri pentru a determina mărginirea şi siguranţa pentru locaţii independente din întreaga reţea.

54

Page 55: Teoria Retelelor Petri Si Modelarea Sistemelor

p1

p2

p3

p4

t1

t2

t3

t4

t5

t6

t6

t4

t3

t5

t4

t1 t2

1 0 0 0

0 1 1 00 1 0 0 0 0 1 0

0 0 1 0 0 0 2 0

0 0 0 1

1 0 0 0

Figura 4.17: Determinarea mărginirii pentruo reţea Petri folosind arborele de accesibilitate

4.2.1.2 Conservativitate

O reţea Petri este conservativă dacă nu pierde sau câştigă jetoane, ci doar le mută. De aceea, două jetoane pot fi interpretate ca un jeton care mai târziu determină o tranziţie să se declanşeze, creând două jetoane, un vector de ponderi defineşte valoarea unui jeton în fiecare locaţie; ponderile sunt nenegative. O reţea Petri este conservativă cu respectarea unui vector de ponderi dacă suma ponderilor jetoanelor este constantă peste toate marcajele accesibile.

Conservativitatea poate fi efectiv testată folosind arborele de accesibilitate. Deoarece arborele de accesibilitate este finit, suma ponderilor poate fi calculată pentru fiecare marcaj. Dacă sumele sunt aceleaşi pentru fiecare marcaj accesibil, atunci reţeaua este conservativă cu respectarea ponderilor date. Dacă sumele nu sunt egale, reţeaua nu este conservativă.

Simbolul w trebuie să fie considerat cu atenţie în evaluarea conservării. Dacă un marcaj are w ca marcaj pentru locaţia pi, atunci ponderea locaţiei trebuie să fie “0” pentru ca reţeaua să fie conservativă. Vă reamintim că simbolul w reprezintă o mulţime infinită de valori. Deoarece toate ponderile sunt nenegative, ponderea trebuie să fie zero (indicând faptul că valoarea numărului de jetoane din locaţie nu este importantă), sau pozitivă: “Dacă ponderea este pozitivă, atunci suma va varia pentru două marcaje care diferă în componenta care este w.” De aceea, dacă există un marcaj cu ponderea nonzero w, atunci reţeaua nu este conservativă.

Consideraţiile de mai sus se referă la conservativitatea cu respectarea unor ponderi definite. O reţea Petri este conservativă dacă este conservativă cu respectarea unui vector de ponderi w, cu wj > 0. Arborele de accesibilitate poate fi folosit pentru a determina dacă o reţea Petri este conservativă prin găsirea unui vector pozitiv de ponderi w, dacă există un astfel de vector. Pentru a determina un vector pozitiv de ponderi în raport cu care reţeaua Petri să fie conservativă, observăm mai întâi că reţeaua trebuie să fie mărginită. După cum am arătat anterior, o locaţie care nu este mărginită trebuie să aibă o pondere zero, lucru care nu este posibil într-o reţea cu un vector de ponderi pozitiv. (Dacă dorim să permitem componente zero, setăm ponderile tuturor locaţiilor nemărginite la zero şi considerăm mai departe numai componentele rămase.) Acum, dacă reţeaua este conservativă, există o sumă a ponderilor, notată cu S şi un vector de ponderi w = (w1, w2,…, wn). Pentru fiecare marcaj [x] al arborelui de accesibilitate trebuie să avem:

w1[x]1 + w2[x]2 + … + wn[x]n = S.

55

Page 56: Teoria Retelelor Petri Si Modelarea Sistemelor

Aceasta defineşte, pentru k noduri din arborele de accesibilitate, o mulţime de k ecuaţii liniare cu n + 1 necunoscute. Dacă adăugăm la acestea constrângerile wi 0, i = 1…n, avem definite constrângerile pentru vectorul de ponderi.

Soluţionarea acestui sistem de ecuaţii liniare este o problemă bine cunoscută, cu mulţi algoritmi de rezolvare. Putem considera o problemă de programare liniară sau pur şi simplu un sistem de ecuaţii liniare. În oricare dintre aceste cazuri, dacă există o soluţie, aceasta poate fi calculată. (În general, soluţiile pentru aceste sisteme vor fi numere raţionale, nu întregi, dar ponderile pot fi înmulţite cu un numitor comun pentru a produce o soluţie întreagă.)

Dacă ponderile au prea multe constrângeri şi de aceea nu există nici un vector de ponderi, acest fapt va fi determinat. În fiecare caz se poate determina dacă reţeaua Petri este sau nu conservativă, şi dacă este, se produce un vector de ponderi.

4.2.1.3 Acoperabilitatea

O ultimă problemă care poate fi rezolvată cu ajutorul arborelui de accesibilitate este problema acoperirii. Pentru această problemă, dorim să determinăm, pentru un marcaj dat ’ dacă un marcaj ’’ ’ este accesibil. Dat fiind un marcaj iniţial , construim arborele de accesibilitate. Apoi, putem căuta orice nod x, cu [x] ’. Dacă nu se găseşte nici un astfel de nod, marcajul ’

nu este acoperit de nici un marcaj accesibil; dacă este găsit un astfel de nod, [x] dă un marcaj accesibil care acoperă.

Drumul de la rădăcină la marcajul acoperitor defineşte secvenţa de tranziţii care conduce de la marcajul iniţial la marcajul acoperitor, iar marcajul asociat cu acel nod defineşte marcajul acoperitor. Din nou, desigur, simbolul w trebuie tratat ca reprezentând o mulţime infinită de valori. Dacă o componentă a marcajului acoperitor este w, atunci va exista o buclă în drumul de la rădăcină la marcajul acoperitor. Va fi necesar să parcurgem această buclă de un număr de ori suficient de mare pentru a creşte componentele corespunzătoare astfel încât să nu fie mai mici decât marcajul dat.

Observăm că dacă în marcajul acoperitor sunt mai multe componente care sunt w, s-ar putea să apară o interacţiune între schimbările din marcaj care rezultă prin parcurgerea buclelor. Considerăm reţeaua Petri din figura 4.12 şi arborele său de accesibilitate dat în figura 4.19. În concordanţă cu algoritmul de analiză dat, marcajul (0 14 1 7) este acoperit în mulţimea de accesibilitate. Drumul pentru generarea marcajului acoperitor constă din mai multe declanşări ale t1, urmate de o declanşare a lui t2, şi apoi mai multe declanşări ale lui t3. Problema este să determinăm de câte ori t1 şi de câte ori t3. De vreme ce vrem 14 jetoane în p2 şi t1 pune un jeton în p2, putem încerca t1 de 14 ori. Totuşi, avem nevoie de t3 de 7 ori, şi fiecare t3 mută un jeton din p2, aşa că de fapt avem nevoie de t1 de cel puţin 21 de ori, apoi t2 şi în cele din urmă de t3 de cel puţin 7 ori (dar nu atât de mulţi t3 astfel încât să golim p2 de prea multe ori). Karp şi Miller [1968] dau un algoritm care va determina numărul minim de declanşări de tranziţii necesare pentru a acoperi un marcaj dat.

4.2.1.4 Limitări ale arborelui de accesibilitate

După cum am văzut, arborele de accesibilitate poate fi folosit pentru a rezolva problema siguranţei, a mărginirii, a conservării şi pe cea a acoperabilităţii. Din nefericire nu poate, în general, să rezolve problema accesibilităţii şi a viabilităţii sau să definească sau să determine care secvenţe de declanşare sunt posibile. Aceste probleme sunt mărginite de existenţa simbolului w. Simbolul w reprezintă o pierdere de informaţie.

Considerăm, de exemplu, reţelele Petri din figurile 4.20 şi 4.21, pentru care arborele de accesibilitate este dat în figura 4.20. Acelaşi arbore de accesibilitate reprezintă acolo două reţele Petri similare (dar diferite). Mulţimile de accesibilitate nu sunt aceleaşi, totuşi. În reţeaua Petri din figura 4.18, numărul de jetoane din locaţia p2 este întotdeauna un număr par (până când se declanşează t1), în timp ce în figura 4.19 poate fi un întreg oarecare. Simbolul w nu permite acestui

56

Page 57: Teoria Retelelor Petri Si Modelarea Sistemelor

tip de informaţie să fie detectată, făcând imposibilă folosirea arborelui de accesibilitate în rezolvarea problemei accesibilităţii.

Figura 4.20: Arborele de accesibilitate al reţelelor Petri din figurile 4.20 şi 4.21

O problemă similară există pentru problema viabilităţii. Figurile 4.23 şi 4.24 sunt două reţele Petri pentru care arborele de accesibilitate este dat în figura 4.23. Totuşi, reţeaua din figura 4.21 se poate interbloca (secvenţa t1 t2 t3 spre exemplu), în timp ce reţeaua din figura 4.22 nu. Din nou, totuşi, arborele de accesibilitate nu poate distinge între aceste două cazuri.

57

p1

p2

p3

p4

t1

t3

p1

p2

p3

p4

t1

t3

Figura 4.18: O reţea Petri cu arborele de accesibilitate cel din figura 4.20

Figura 4.19: O a doua reţea Petri cu arborele de accesibilitate cel din figura 4.20. Reţeaua Petri din figura 4.20 al cărei arbore de accesibilitate este cel din figura 4.20 are numai un număr par de jetoane în locaţia p2, în timp ce această reţea are ca marcaj pentru locaţia p2 un întreg arbitrar.t3

t3

t2

t2

t1

(1 0 1 0)

(1 0 0 1)

(1 w 1 0)

(1 w 1 0)

(1 w 0 1)(1 w 0 0)

t4

p3

t1 t3

p1 p2

t2

t1

t2

t3

p1

p3

p2

t4

Figura 4.21: O reţea Petri cu o interblocare posibilă

Figura 4.22: O reţea Petri care nu se poate interbloca. Această reţea este activă, şi, cu toate acestea, arborele său de accesibilitate (figura 4.23) este identic cu arborele de accesibilitate al reţelei Petri neactive din figura 4.21

Page 58: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 4.23: Arborele de accesibilitate al reţelelor Petri din figurile 4.23 şi 4.24

Observăm că deşi arborele de accesibilitate nu conţine neapărat suficientă informaţie pentru a rezolva întotdeauna problemele accesibilităţii şi viabilităţii, o reţea al cărei arbore de accesibilitate conţine un nod terminal (un nod fără succesori) nu este activă (deoarece unele marcaje accesibile nu au succesori). Similar, un marcaj ’ al unei probleme de accesibilitate poate să apară în arborele de accesibilitate, şi dacă se întâmplă aşa, acesta este accesibil. De asemenea, dacă un marcaj nu este acoperit de un nod al arborelui de accesibilitate, atunci nu este accesibil.

Aceste condiţii sunt suficiente pentru a rezolva unele probleme de accesibilitate şi viabilitate, dar ele nu rezolvă aceste probleme în general. De aceea, pentru a rezolva aceste două probleme, sunt necesare alte abordări.

4.2.2 Ecuaţii matriceale

O a doua abordare în analiza reţelelor Petri se bazează pe o vedere matricială a reţelelor Petri. O alternativă la definirea (P, T, I, O) a reţelelor Petri este să definim două matrice D-- şi D+

pentru a reprezenta funcţiile de intrare şi ieşire. (Acestea sunt echivalente cu funcţiile F şi B din definiţia reţelelor Petri a lui Hack, prezentate în secţiunea 2.6). Fiecare matrice are m linii (una pentru fiecare tranziţie) şi n coloane (una pentru fiecare locaţie). Definim D--(j,i) = #(pi, I(tj)) şi D+

(j,i) = #(pi, O(tj)). D— defineşte intrările tranziţiilor şi D+ defineşte ieşirile.Această formă de definire matricială a unei reţele Petri, (P, T, D--, D+), este echivalentă cu

forma standard pe care am utilizat-o, dar permite exprimarea ei în termeni de vectori şi matrice. Fie e[j] un vector unitate de dimensiune m care este zero peste tot cu excepţia componentei j. Tranziţia tj este reprezentată de vectorul unitar m-dimensional e[j].

Acum, o tranziţie tj este posibilă într-un marcaj dacă e[j] D--, şi rezultatul declanşării tranziţiei tj în marcajul , dacă este posibilă, este:(, ti) = - e[j] D-- + e[j] D+ = + e[j] (-D-- +D+) = + e[j] D, unde am definit matricea de schimbare compusă D = D+ - D--.

Acum, pentru o secvenţă de tranziţii ce se declanşează = , avem:

(,) = (, ) = - e[j1] D + e[j2] D + … + e[jk] D = + (e[j1] + e[j2] + … + e[jk]) D = + f() D.

Vectorul f() = e[j1] + e[j2] + … + e[jk] se numeşte vector de declanşări al secvenţei = . Al i-ulea element al lui f(), f()i, reprezintă numărul de declanşări ale tranziţiei ti

în secvenţa . Astfel, vectorul de declanşări este un vector de întregi nenegativi. (Vectorul f() este reprezentarea Parikh a secvenţei [Parikh, 1966]).

Pentru a da un exemplu de utilitate a abordării matriciale a reţelelor Petri, considerăm problema conservării: dată fiind o reţea Petri marcată, este ea conservativă? Pentru a arăta conservativitatea, este necesar să găsim un vector de ponderi diferit de zero pentru care suma

58

t3

t2t1

1 0 0

1 0 w

0 1 w1 0 w

t4t3

1 0 w0 1 w

Page 59: Teoria Retelelor Petri Si Modelarea Sistemelor

ponderilor peste toate marcajele accesibile este constantă. Fie w un vector coloană de dimensiune n x 1. Apoi, dacă este marcajul iniţial şi ’ este un marcaj accesibil arbitrar, trebuie ca: w = ’w.

Acum, deoarece ’ este accesibil, există o tranziţie de tranziţii care se declanşează şi care trece reţeaua de la marcajul la marcajul ’. Astfel, ’ = (,) = + f() D.

De vreme ce această relaţie trebuie să fie adevărată pentru toţi f(), rezultă că trebuie să avem Dw = 0.

Deci, o reţea Petri este conservativă dacă şi numai dacă există un vector pozitiv w astfel încât Dw = 0, oferindu-se astfel un test simplu pentru conservativitate. Se produce, de asemenea, vectorul w al ponderilor.

Dezvoltarea acestei teorii matriciale a reţelelor Petri oferă un instrument folositor pentru a ataca problema accesibilităţii. Să presupunem că un marcaj ’ este accesibil dintr-un marcaj . Există astfel o secvenţă (posibil nulă) de tranziţii ce se declanşează, care ne conduce din spre ’. Aceasta înseamnă că f() este o soluţie în întregi nenegativi în următoarea ecuaţie matricială în x:

(4.1)Astfel, dacă ’ este accesibil din , ecuaţia 4.1 are o soluţie în întregi nenegativi. Dacă

ecuaţia 4.1 nu are nici o soluţie, atunci ’ nu este accesibil din .Spre exemplu, vom considera reţeaua Petri marcată din figura 4.24.

Figura 4.24: O reţea Petri pentru a ilustra analiza cu ajutorul ecuaţiilor matriciale

Matricele D— şi D+ sunt

şi , deci matricea D este .

Cu un marcaj iniţial = (1, 0, 1, 0), tranziţia t3 este posibilă şi conduce la marcajul ’, unde

.Secvenţa = t3 t2 t3 t2 t1 este reprezentată de vectorul de declanşări f() = (1 2 2) şi produce

marcajul:

.Pentru a determina dacă marcajul (1 8 0 1) este accesibil din marcajul (1 0 1 0), avem

ecuaţia:

,

care are o soluţie x = (0, 4, 5) care corespunde secvenţei = t3 t2 t3 t2 t3 t2 t3 t2 t3.Arătăm mai departe că marcajul (1 7 0 1) nu este accesibil din marcajul (1 0 1 0), deoarece

ecuaţia matricială:59

t2

p1

p2

p3

p4

t1

t3

Page 60: Teoria Retelelor Petri Si Modelarea Sistemelor

n

u are soluţii.Abordarea matricială a analizei reţelelor Petri este promiţătoare, dar de asemenea creează

câteva probleme. Mai întâi observăm că matricea D nu reflectă corect structura reţelei Petri. Tranziţiile care au atât intrări cât şi ieşiri în /din aceeaşi locaţie (bucle) vor fi reprezentate pe aceeaşi poziţie în matricile D— şi D+, şi astfel se vor anula în matricea D = D+ - D--. Acest lucru s-a reflectat în exemplul anterior pentru locaţia p1 şi tranziţia t1.

O altă problemă este pierderea de informaţie reprezentativă în vectorul de declanşări. Considerăm reţeaua Petri din figura 4.25.

Figura 4.25: O altă reţea Petri pentru analiza cu ajutorul ecuaţiilor matriciale

Presupunem că dorim să determinăm dacă marcajul (0 0 0 0 1) este accesibil din (1 0 0 0 0). Singura ecuaţie este:

. Această ecuaţie nu are o

soluţie unică, dar reduce mulţimea soluţiilor la { / f() = (1, x2, x6 – 1, 2x6, x6 – 1, x6)}. Aceasta defineşte relaţiile între declanşările de tranziţii. Dacă luăm x6 = 1 şi x2 = 1, avem f() = (1 1 0 2 0 1), secvenţele t1 t2 t4 t4 t6 şi t1 t4 t2 t4 t6 corespunzând acestui vector de declanşări. Astfel, deşi cunoaştem numărul de declanşări ale tranziţiilor, nu cunoaştem ordinea în care se produc aceste declanşări.

O altă problemă este aceea că deşi o soluţie pentru ecuaţia 4.1 este necesară pentru accesibilitate, ea nu este şi suficientă. Considerăm pentru aceasta reţeaua Petri din figura 4.26.

Figura 4.26: O reţea Petri care arată că o soluţie a ecuaţiei matriciale este o condiţie necesară, dar nu suficientă pentru accesibilitate

60

p2

p3

p4p5p1

t2

t3

t4

t5

t6

t1

p1

p2

p3

p4

t1 t2

Page 61: Teoria Retelelor Petri Si Modelarea Sistemelor

Dacă dorim să determinăm dacă (0 0 0 1) este accesibil pentru (1 0 0 0) trebuie să rezolvăm ecuaţia:

.

Această ecuaţie are soluţia f() = (1, 1), corespunzătoare reprezentărilor t1 t2 şi t2 t1, dar nici una dintre aceste două secvenţe de tranziţii nu este posibilă, deoarece nici t1 nici t2 nu este activă în (1 0 0 0). Astfel, o soluţie a ecuaţiei 4.1 nu este suficientă pentru a demonstra accesibilitatea.

Posibilitatea de soluţii false (aparente) pentru ecuaţia 4.1 – soluţii care nu corespund secvenţelor de tranziţii posibile – a rezultat numai la cercetarea mărginită asupra reţelelor Petri în cazul reprezentării matriciale.

4.3 Alte studii

Holt at al. [1968] şi Holt şi Commoner [1970] au definit unele dintre primele probleme de analiză asupra reţelelor Petri – viabilitatea şi siguranţa – care au continuat apoi să fie tratate ca probleme fundamentale de analiză. Viabilitatea a fost studiată de Commoner [1972], Lautenbach [1973] şi Lien [1976 a]. Keller [1972] a considerat de asemenea viabilitatea împreună cu alte probleme. Lien [1976 a] a definit problema conservării.

Karp şi Miller [1968] au descris mai întâi modul de construcţie al arborelui de accesibilitate şi au dovedit că este finit. Problemele acoperabilităţii şi accesibilităţii au fost definite de ei, la fel şi problemele echivalenţei şi incluziunii. Aceste probleme au fost subiectul pentru [Baker 1973 b], în vreme ce [Hash 1973] este o scurtă prezentare a problemei accesibilităţii. Hack [1974] pune majoritatea acestor probleme împreună şi arată cum arborele de accesibilitate poate fi folosit pentru unele dintre ele.

Abordarea matriceală a fost considerată de Peterson [1973], dar s-a descoperit că utilitatea sa este mărginită. Murata, cu o bază algebrică mai solidă, a realizat ceva mai mult cu această abordare [Murata şi Church 1975; Murata 1975; Murata at al 1975; Murata 1977 a; Murata 1977 b].

61

Page 62: Teoria Retelelor Petri Si Modelarea Sistemelor

5 Complexitate şi decidabilitate

În capitolul 4 am prezentat un număr de probleme care au fost definite pentru reţelele Petri. Aceste probleme privesc diverse proprietăţi ale structurii şi comportamentului reţelelor Petri care, în anumite circumstanţe, sunt de interes pentru utilizatorii reţelelor Petri.

Au fost prezentate de asemenea două tehnici de soluţionare: arborele de accesibilitate şi abordarea cu ecuaţii matriciale. Aceste tehnici permit determinarea pentru reţelele Petri a proprietăţilor de siguranţă, mărginire, conservare şi acoperabilitate. De asemenea, a fost stabilită o condiţie necesară pentru accesibilitate. Totuşi, aceste tehnici de analiză nu sunt suficiente pentru a rezolva câteva alte probleme, în special problema viabilităţii, a accesibilităţii şi a echivalenţei. În acest capitol studiem aceste probleme, fie pentru a găsi soluţii la ele, fie pentru a învăţa măcar mai multe despre proprietăţile reţelelor Petri.

5.1 Reducere între probleme de analiză

Un concept fundamental pe care noi îl folosim este reducerea [Karp 1972]. Rezolvarea unei probleme implică reducerea ei la o altă problemă pe care deja ştim cum să o rezolvăm. De exemplu, în capitolul anterior, problema determinării dacă o reţea Petri este conservativă a fost redusă la rezolvarea unui sistem de ecuaţii liniare. Problema rezolvării sistemului de ecuaţii liniare a fost redusă la o secvenţă definită de operaţii algebrice (adunare, scădere, înmulţire, împărţire şi comparări). Astfel, de vreme ce operaţiile aritmetice de bază pot fi calculate, conservarea poate fi determinată.

Un alt exemplu priveşte problema egalităţii şi problema submulţimii pentru mulţimi de accesibilitate.

Definiţia 5.1:Problema egalităţii. Date fiind două reţele Petri marcate Ci = (Pi, Ti, Ii, Oi), i = 1…2, cu marcajele i, i = 1… 2, avem R(C1, 1) = R(C2, 2)?

Definiţia 5.2:Problema submulţimii. Date fiind două reţele Petri marcate Ci = (Pi, Ti, Ii, Oi), i = 1…2, cu marcajele i, i = 1…2, avem R(C1, 1) R(C2, 2)?

Aceste două probleme pot fi foarte importante dacă reţelele Petri urmează să fie optimizate sau dacă urmează să se facă compararea între reţelele a două sisteme. Totuşi, observăm că dacă se poate găsi o soluţie la problema submulţimii, problema egalităţii este de asemenea rezolvată. Dacă dorim să determinăm dacă R(C1, 1) = R(C2, 2), putem să folosim mai întâi algoritmul pentru problema submulţimii pentru a determina dacă R(C1, 1) R(C2, 2), şi apoi să folosim acelaşi algoritm pentru a determina dacă R(C2, 2) R(C1, 1).

R(C1, 1) = R(C2, 2) dacă şi numai dacă R(C1, 1) R(C2, 2) şi R(C2, 2) R(C1, 1). Astfel putem reduce problema egalităţii la problema submulţimii.

Mai există două alte consideraţii importante atunci când considerăm probleme de analiză şi reducere. În primul rând, în încercarea de găsire a unei soluţii, trebuie să considerăm posibilitatea ca o problemă să nu aibă nici o tehnică de soluţionare; spunem despre o astfel de problemă că nu este decidabilă. În al doilea rând, dacă există tehnici de soluţionare, trebuie să considerăm costul acestora: cât timp şi memorie sunt necesare? Pentru ca reţelele Petri să poată fi larg utilizate, problemele de analiză trebuie să poată fi rezolvate şi acest lucru trebuie să fie realizat de către algoritmi care nu sunt excesiv de costisitori de spaţiu şi timp (pentru calculator).

Reducerea joacă un rol important în ambele probleme. Reducerea problemelor una la alta este des folosită pentru a arăta că o problemă este sau nu decidabilă. Abordarea noastră asupra teoriei decidabilităţii [Davis 1958, Minsky 1967] se bazează în principal pe studiile lui Turing şi pe modelul său de calcul: maşina Turing. Importanţa maşinii Turing este aceea că se poate arăta că nu

62

Page 63: Teoria Retelelor Petri Si Modelarea Sistemelor

există nici un algoritm care să poată rezolva anumite probleme despre maşini Turing, în special problema opririi. Pornind de la acestea, s-a găsit o colecţie de probleme care nu sunt decidabile. Importanţa acestei teorii este aceea că nu este posibilă crearea unui program pentru un calculator care să rezolve aceste probleme. Astfel, pentru analize practice, problemele nedecidabile trebuie evitate, sau întrebările puse vor rămâne fără răspuns (este important de subliniat aici că problemele nedecidabile produc întrebări la care nu că nu s-a găsit încă un răspuns, şi nu se poate găsi un răspuns). Întrebările pot fi fără răspuns încă, deşi există posibilitatea să se găsească un răspuns; aceasta înseamnă, în principal, că nimeni nu a găsit încă un răspuns, dar că acesta există.

Acum presupunem că o problemă A este reductibilă la o problemă B: o instanţă a problemei A poate fi transformată într-o instanţă a problemei B. Dacă problema B este decidabilă, atunci problema A este decidabilă şi algoritmul pentru problema B poate fi folosit pentru a rezolva problema A. O instanţă a problemei A poate fi rezolvată transformând-o într-o instanţă a problemei B şi aplicând algoritmul pentru problema B pentru a determina soluţia. Astfel, dacă problema A se reduce la problema B şi problema B este decidabilă, atunci problema A este decidabilă.

Negaţia este de asemenea adevărată: dacă problema A se reduce la problema B şi problema A este nedecidabilă, atunci problema B este nedecidabilă; dacă problema B ar fi fost decidabilă, procedura de mai sus este o tehnică de decizie pentru problema A, ceea ce contrazice nedecibilitatea sa. Aceste două fapte controlează cele mai multe tehnici de decidabilitate. Pentru a arăta că o problemă este decidabilă, se reduce la o problemă despre care se ştie că este decidabilă.; pentru a arăta că o problemă este nedecidabilă, se reduce la o problemă despre care se ştie că este nedecidabilă.

Trebuie să folosim corect această abordare pentru a reduce cantitatea de muncă pe care trebuie să o depunem. De exemplu, deoarece problema egalităţii pentru mulţimi de accesibilitate se reduce la problema submulţimii, vrem să dezvoltăm fie(1) o procedură de soluţionare pentru problema submulţimii, fie(2) a demonstraţie a faptului că problema egalităţii este nedecidabilă.

Dacă putem să arătăm (1), avem o tehnică de soluţionare a ambelor probleme, iar dacă arătăm (2) vom şti că ambele probleme sunt nedecidabile.

În unele cazuri, putem obţine chiar rezultate mai bune. Două probleme sunt echivalente dacă se pot reduce reciproc una la alta. Aceasta înseamnă că problema A este echivalentă cu problema B dacă problema A se poate reduce la problema B şi problema B se poate reduce la problema A. În acest caz, fie ambele probleme sunt decidabile, fie ambele sunt nedecidabile, şi putem lucra pe una singură. (Observăm că toate acestea nu sunt valabile în general. De exemplu, dacă vrem să arătăm că problema submulţimii pentru mulţimi de accesibilitate este nedecidabilă, aceasta nu ne va spune nimic despre decidabilitatea sau nedecidabilitatea problemei egalităţii.)

A doua consideraţie pentru investigarea problemelor de analiză este aceea că dacă există o tehnică de soluţionare, ea trebuie să fie şi rezonabilă din punctul de vedere al eficienţei, adică timpul şi spaţiul de memorie necesare algoritmului pentru a rezolva o instanţă a problemei să nu fie excesive. Studiul costului executării unui algoritm este o parte a teoriei complexităţii. Teoria complexităţii se ocupă cu cantitatea de timp şi spaţiu necesare pentru rezolvarea unei probleme. Evident, cantitatea de timp şi spaţiul nu vor fi constante, dar vor varia odată cu mărimea problemei de rezolvat. Pentru reţelele Petri, cerinţele de timp şi spaţiu vor fi probabil funcţie de numărul de locaţii şi tranziţii. Alţi factori care pot influenţa lucrurile sunt numărul de jetoane din marcajul iniţial, sau numărul de intrări şi ieşiri pentru fiecare tranziţie şi locaţie (numărul de arce din graf).

Timpul şi spaţiul necesare vor varia în funcţie de instanţa particulară a problemei de rezolvat. De aceea, rezultatele de complexitate se pot referi la cel mai bun rezultat (limita inferioară) sau la cea mai proastă realizare (limita superioară) a unui algoritm. Deoarece nu se cunoaşte dinainte dacă o instanţă va fi o realizare bună sau proastă, se presupune de obicei cazul celei mai proaste realizări, şi complexitatea unui algoritm este cea mai mare cantitate de timp sau spaţiu necesară, funcţie de mărimea intrării.

Analiza complexităţii se concentrează în principal asupra complexităţii problemei de bază şi nu asupra unei anume implementări a unui algoritm particular. De aceea, teoria complexităţi ignoră

63

Page 64: Teoria Retelelor Petri Si Modelarea Sistemelor

factorii constanţi. Complexitatea pentru o problemă de dimensiune n este determinată a fi de ordin n2, sau sau ignorând termenii mai mici şi factorii constanţi. În particular, sunt importante două clase generale de algoritmi: algoritmii cu complexitate polinomială (n, n2, , nq, şi aşa mai departe) şi aceia cu complexitate nepolinomială (în special exponenţială, 2n, şi factorială (n!)).

Analiza complexităţii se aplică în general la algoritmi specifici, dar se poate de asemenea aplica şi la probleme generale. În acest caz, se determină o limită inferioară a complexităţii tuturor algoritmilor de rezolvare a problemei. Astfel se obţine un rezultat de complexitate independent de algoritm, care poate fi util pentru a arăta că un anume algoritm este optim (în interiorul unei constante) şi pentru a semnala cazul în care un marcaj ulterior produce un algoritm de rezolvare a problemei nesemnificativ mai bun. De exemplu, este bine cunoscut faptul că sortarea a n numere este de complexitate . Astfel, algoritmii de complexitate nu pot fi semnificativ îmbunătăţiţi.

Reducerea poate fi utilă în determinarea complexităţii. Dacă o problemă A poate fi redusă la o problemă B şi B are o complexitate fB(n), atunci complexitatea lui A este cel mult complexitatea lui B plus costul transformării de la A la B (Ţinând minte că dimensiunea problemei se poate de asemenea schimba în transformare.) Complexitatea transformărilor este în general constantă sau liniară şi de aceea este des ignorată. Astfel, reducerea problemei A la problema B ne dă fie o limită superioară pentru complexitatea lui A (dacă complexitatea lui B este cunoscută), fie o limită inferioară pentru B (dacă complexitatea lui A este cunoscută). Folosind din nou ca exemplu problemele egalităţii şi submulţimii, cantitatea de muncă necesară pentru a rezolva problema egalităţii nu este mai mare decât de două ori cantitatea de muncă pentru problema submulţimii. Deoarece aceasta este un factor constant, complexitatea problemei submulţimii ar trebui să fie aceeaşi cu complexitatea problemei egalităţii.

Aceste două proprietăţi ale analizei reţelelor Petri – decidabilitatea şi complexitatea – sunt de importanţă majoră pentru folosirea reţelelor Petri. În acest capitol sunt prezentate unele rezultate care au fost obţinute. Una dintre tehnicile folosite este reducerea unei probleme de reţele Petri la o alta.

5.2 Probleme de accesibilitate

Problema accesibilităţii este una dintre cele mai importante probleme în analiza reţelelor Petri. S-au pus următoarele patru probleme de accesibilitate pentru o reţea Petri C = (P, T, I, O) cu marcajul iniţial .

Definiţia 5.3:Problema accesibilităţii. Dat fiind marcajul ’, avem ’ R(C, )?

Definiţia 5.4:Problema accesibilităţii submarcajului. Pentru o submulţime P’ P şi un marcaj ’, există ’’ R(C, ) astfel încât ’’ (pi) = ’ (pi) pentru toţi pi P’?

Definiţia 5.5:Problema zero-accesibilităţii.Există ’ R(C, ) astfel încât ’(pi) = 0 pentru toţi pi P? [0 R(C, )?]

Definiţia 5.6:Problema zero-accesibilităţii pentru o singură locaţie. Pentru o poziţie dată pi P, există ’ R(C, ) cu ’(pi) = 0?

Problema accesibilităţii submarcajului restricţionează problema accesibilităţii la a considera numai o submulţime de locaţii, fără a ţine seama de marcajele altor locaţii. Problema zero-accesibilităţii se întreabă dacă marcajul cu zero jetoane în toate poziţiile este accesibil. Problema

64

Page 65: Teoria Retelelor Petri Si Modelarea Sistemelor

zero-accesibilităţii pentru o singură poziţie se întreabă dacă este posibilă golirea unei poziţii anume de toate jetoanele.

Deşi aceste patru probleme sunt toate diferite, sunt, de asemenea, toate echivalente. Anumite relaţii sunt evidente. Problema zero-accesibilităţii este reductibilă la problema accesibilităţii. Luăm ’ = 0 pentru problema accesibilităţii. Similar, problema accesibilităţii este reductibilă la problema accesibilităţii submarcajului, considerând submulţimea P’ = P. Problema zero-accesibilităţii pentru o singură locaţie este reductibilă la problema accesibilităţii submarcajului considerând P’ = {pi} şi ’ = 0. Mai dificil de arătat este că problema accesibilităţii submarcajului este reductibilă la problema zero-accesibilităţii şi că problema zero-accesibilităţi este reductibilă la problema zero-accesibilităţii pentru o singură locaţie. Această întreagă mulţime de relaţii este ilustrată în figura 5.1.

Figura 5.1: Reducerea problemelor de accesibilitate. Un arc de la o problemă la alta indică faptul că prima se reduce la a doua

Mai întâi arătăm că problema accesibilităţii submarcajului se reduce la problema zero-accesibilităţii. Presupunem dată o reţea Petri C1 = (P1, T1, I1, O1) cu marcajul iniţial 1, o submulţime de locaţii P’ P1, şi un submarcaj ’. Vrem să ştim dacă există ’’ R(C1, 1) cu ’’

(pi) = ’ (pi) pentru toate pi P’. O abordare este crearea unei noi reţele Petri C2 = (P2, T2, I2, O2) cu marcajul iniţial 2 astfel încât să existe ’’ R(C1, 1) cu ’’ (pi) = ’ (pi) pentru toate pi P’ dacă şi numai dacă 0 R(C2, 2).

Construcţia lui C2 pornind de la C1 este descrisă în continuare.Începem cu C2 la fel cu C1. Pentru a permite oricărei locaţii pi care nu este în P’ să se

golească adăugăm o tranziţie cu intrarea {pi} şi ieşirea nulă. Această tranziţie se declanşează de fiecare dată când există un jeton în pi, pentru a goli această locaţie de orice jeton care s-ar putea afla aici. Acest fapt ne permite să ignorăm aceste poziţii, fiind siguri că ele pot întotdeauna să ajungă la un marcaj zero.

Presupunem că în locaţia pi din P’ sunt exact ’(pi) jetoane. Pentru a ne asigura de aceasta, creăm o nouă locaţie pentru fiecare pi P’ cu un marcaj iniţial de ’(pi) jetoane şi o tranziţie cu

intrarea {pi, } şi ieşirea nulă. Dacă în pi sunt exact ’(pi) jetoanei, atunci tranziţia corespunzătoare

se poate declanşa de exact ’(pi) ori, reducând marcajele lui pi şi la zero. Dacă numărul de

jetoane din pi nu este ’(pi), atunci tranziţia poate să se declanşeze de un număr de ori egal cu

minimul dintre cele două marcaje, şi astfel vor rămâne jetoane fie în pi, fie în , fapt care împiedică ajungerea la un marcaj zero.

Figura 5.2 ilustrează cele două tipuri de tranziţii introduse.

Figura 5.2: O reţea Petri ce arată că problema accesibilităţii submarcajului poate fi redusă la

65

Problema accesibilităţii

Problema zero-accesibilităţii

Problema accesibilităţii submarcajului

Problema zero-accesibilităţii pentru o singură locaţie

'it

'it

Reţea Petri originală

pi P’

pi P’

’(pi)

Page 66: Teoria Retelelor Petri Si Modelarea Sistemelor

problema zero-accesibilităţii. Submulţimea de poziţii P’ va avea marcajul ’ în reţeaua originală dacă şi numai dacă marcajul zero este accesibil în reţea aşa cum este modificată aici.

Formal, definim C2 astfel:P2 = P1 { / pi P’}

T2 = T1 { / P1}I2(tj) = I1(tj) pentru tj T1

I2( ) = {pi} pentru pi P’ = {pi, } pentru pi P’

O2(tj) = O1(tj) pentru tj T1

O2( ) = {} pentru pi P1,

cu un marcaj iniţial 2(pi) = 1(pi), pi P1, 2( ) = ’(pi), pi P’.

Teorema 5.1:Problema accesibilităţii submarcajului este reductibilă la problema zero-accesibilităţii.

Demonstraţie:Arătăm că pentru reţeaua Petri C2 construită mai sus din C1, 0 R(C2, 2) dacă şi numai

dacă ’’ R(C1, 1), cu ’’(pi) = ’(pi), pentru toate pi P’.Pentru a arăta că 0 R(C2, 2) dacă şi numai dacă există un marcaj ’’ R(C1, 1), cu ’’(pi)

= ’(pi), pentru toate pi P’, presupunem mai întâi că există ’’ în R(C1, 1). Apoi, în C2, putem de asemenea ajunge la marcajul ’’ din locaţiile pi P1, declanşând numai tranziţiile din T1. Acum, pentru fiecare pi P’, putem să declanşăm de exact ’(pi) ori, reducând atât pe pi cât şi pe la

zero. Apoi putem să declanşăm pentru fiecare pi P’ de câte ori este nevoie pentru a ajunge aici la zero jetoane, adică să avem 0 R(C2, 2).

Acum presupunem 0 R(C2, 2), deci presupunem că există o secvenţă de tranziţii care se declanşează care ne conduce de la 2 la 0. Această secvenţă va conţine exact ’(pi) declanşări ale lui

pentru pi P’ (pentru a elimina jetoanele din ) şi un număr de declanşări ale lui pentru pi P’. Observăm că prin declanşarea tranziţiilor doar sunt mutate jetoane din C1 şi deoarece (’, tj) este definită de fiecare dată când (, tj) este definită, pentru ’ (jetoane suplimentare nu strică niciodată), secvenţa cu toate declanşate eliminate este de asemenea legală şi va conduce la un marcaj ’’ cu exact ’(pi) jetoane în pi, pentru pi P’. Astfel, dacă 0 R(C2, 2), atunci ’’ R(C1, 1), cu ’’(pi) = ’(pi), pentru toate pi P’.

Următoarea noastră sarcină este să arătăm că problema zero-accesibilităţii este reductibilă la problema zero-accesibilităţii pentru o singură locaţie. Demonstraţia acestei afirmaţii implică din nou o construcţie. Dată fiind o reţea Petri C1 = (P1, T1, I1, O1) cu marcajul iniţial 1, vrem să determinăm dacă 0 R(C1, 1). Pornind de la C1 construim o nouă reţea Petri C2 cu o locaţie suplimentară (P2

= P {}) astfel încât să existe un marcaj ’ R(C2, 2) cu ’() = 0 dacă şi numai dacă 0 R(C1, 1).

Construcţia lui C2 defineşte astfel încât la orice moment numărul de jetoane din este egal cu suma numărului de jetoane din toate poziţiile lui C1. Astfel, dacă ’() = 0, atunci sunt 0 jetoane în toate locaţiile lui C1 şi viceversa. Definim marcajul iniţial 2 prin 2(pi) = 1(pi) pentru pi P1, cu

(Acum, fiecare tranziţie tj T1 este completată în C2 cu arce către locaţia .)

Definim . Astfel, dj înregistrează modificarea numărului de

jetoane care rezultă prin declanşarea tranziţiei tj. Dacă dj > 0, atunci dj jetoane trebuie adăugate locaţiei s, şi de aceea adăugăm dj arce de la tj la s; dacă dj < 0, atunci -dj jetoane trebuie scoase din locaţia s prin -dj arce de la s la tj.

Dacă dj > 0 atunci #(s, I(tj)) = 0 şi #(s, O(tj)) = dj.

66

Page 67: Teoria Retelelor Petri Si Modelarea Sistemelor

Dacă dj < 0 atunci #(s, I(tj)) = -dj şi #(s, O(tj)) = 0.Dacă dj = 0 atunci #(s, I(tj)) = 0 şi #(s, O(tj)) = 0.Cu această construcţie, orice secvenţă de tranziţii care se declanşează şi care conduce C1

către marcajul 0, va conduce C2 către un marcaj ’ cu ’(s) = 0 [’(pi) = 0, de asemenea] şi viceversa.

Teorema 5.2:Problema zero-accesibilităţii este reductibilă la problema zero-accesibilităţii pentru o singură locaţie.

Demonstraţie:Demonstraţia formală, bazată pe construcţia de mai sus, este uşor de redactat.

Cu aceste două teoreme, şi observaţiile evidente, putem acum concluziona următoarele:

Teorema 5.3:Următoarele probleme de accesibilitate sunt echivalente:

1. Problema accesibilităţii2. Problema zero-accesibilităţii3. Problema accesibilităţii submarcajului4. Problema zero-accesibilităţii pentru o singură locaţie.

Aceste teoreme şi demonstraţiile lor se datorează în special lui Hack [1975c].

5.3 Structuri mărginite de reţele Petri

Primele studii asupra reţelelor Petri, şi unele contemporane, au definit reţelele Petri mairestrictiv decât cum s-a făcut aici în capitolul 2. În particular, sunt uneori forţate următoarele două restricţii.

Restricţia 5.1:Multiplicitatea oricărei locaţii este întotdeauna mai mică sau egală cu 1. Deci, #(pi, I(tj)) 1 şi #(pi, O(tj)) 1 pentru toţi pi P şi tj T. Aceasta restricţionează categoriile de intrare şi ieşire la a fi mulţimi.

Restricţia 5.2:Nici o locaţie nu poate fi atât intrare cât şi ieşire a aceleiaşi tranziţii, adică I(tj) O(tj) = . Acest fapt se scrie de obicei #(pi, I(tj)) #(pi, O(tj)) = 0 pentru toţi pi şi tj.

Reţelele Petri care satisfac restricţia 1 se numesc reţele Petri ordinare. Reţelele Petri care satisfac cea de-a doua restricţie se numesc reţele Petri nereflexive. Reţelele Petri care satisfac ambele restricţii se numesc reţele Petri restricţionate. Relaţiile dintre aceste clase de reţele Petri sunt ilustrate în figura 5.3

Figura 5.3: Relaţiile dintre clasele de reţele Petri. Un arc indică includerea; arcele pentru indicarea reductibilităţii vor fi direcţionate în direcţia opusă

67

Reţele Petri generale

Reţele Petri ordinare(fără arce multiple)

Reţele Petri fără bucle

Reţele Petri restricţionate(fără arce multiple sau bucle)

Page 68: Teoria Retelelor Petri Si Modelarea Sistemelor

Aceste subclase ale modelului general de reţea Petri au fost considerate pentru câteva motive. Un motiv important este acela că propagarea conceptelor despre reţelele Petri a fost informativă în teoria iniţială. Nevoia de arce multiple sau bucle nu a apărut de la bun început în modelare. De asemenea, s-a simţit probabil că teoria ar fi mai uşoară fără aceste complicaţii suplimentare. Totuşi, cum teoria s-a dezvoltat, a devenit evident că nu este mult mai dificil să se lucreze cu definiţii mai generale. Munca contemporană folosind modele cu aceste restricţii este, de aceea, fie rezultatul unei timidităţi exagerate din partea cercetătorilor, sau rezultatul necesităţii unei expuneri mai rapide, care conduce la definiţii mai simple.

Totuşi, aceste definiţii nu adaugă nimic la abilitatea noastră de a analiza reţelele Petri. Vom considera problema accesibilităţi pentru aceste clase de reţele. Pentru a arăta echivalenţa esenţială a acestor patru clase de reţele Petri, vom demonstra următoarele.

Teorema 5.4:Problemele accesibilităţii pentru următoarele clase de reţele Petri sunt echivalente:

1. Reţele Petri generale2. Reţele Petri ordinare3. Reţele Petri fără bucle4. Reţele Petri restricţionateDemonstraţie:Următoarele reduceri sunt evidente din definiţii:

1) Problema accesibilităţii pentru reţele Petri ordinare este reductibilă la problema accesibilităţii pentru reţele Petri generale.

2) Problema accesibilităţii pentru reţele Petri fără bucle este reductibilă la problema accesibilităţii pentru reţele Petri generale.

3) Problema accesibilităţii pentru reţele Petri restricţionate este reductibilă atât la problema accesibilităţii pentru reţele Petri ordinare cât şi la problema accesibilităţii pentru reţele Petri fără bucle.

Arătăm că reţelele Petri generale pot fi transformate în reţele Petri restricţionate în sensul că putem reduce problema accesibilităţii pentru reţele Petri generale la problema accesibilităţii pentru reţele Petri restricţionate. Astfel se demonstrează că cele patru probleme de accesibilitate sunt echivalente.

Pentru a transforma o reţea Petri generală într-o reţea Petri restricţionată folosim următoarea abordare fundamentală prin care fiecare locaţie din reţeaua Petri generală este înlocuită de un inel de locaţii în reţeaua Petri restricţionată. Figura 5.4 arată forma generală a unui inel de locaţii. Observăm că o colecţie de jetoane plasate în inel se poate mişca liber prin acesta în orice poziţie la orice moment; ele se pot toate grupa în locaţia pi,1 sau se pot răspândi uniform pentru a acoperi toate cele ki locaţii din inel. Astfel, o tranziţie care are nevoie de trei jetoane din locaţia pi poate lua câte

unul din pi,1, pi,2, şi pi,3, mai degrabă decât pe toţi trei din pi. Similar, o tranziţie care foloseşte pi atât ca intrare cât şi ca ieşire (o buclă) poate intra prin pi,1 şi ieşi prin pi,1, eliminând bucla.

Figura 5.4: Un inel de locaţii pentru a fi folosit într-o reţea Petri restricţionată pentru a reprezenta o locaţie într-o reţea Petri generală.

68

pi,1

pi,2

pi,3

pi,4

ikip ,

Page 69: Teoria Retelelor Petri Si Modelarea Sistemelor

Numărul ki de locaţii reprezentând o locaţie pi este determinat de suma multiplicităţilor maxime ale locaţiei

Formal, pentru o reţea Petri generală C1 = (P1, T1, I1, O1) cu marcajul 1 definim o reţea Petri restricţiontă C2 = (P2, T2, I2, O2) cu marcajul 2 după cum urmează. Mai întâi definim pentru fiecare pi P1 un întreg ki prin:

Reţeaua Petri restricţionată C2 este definită prin:P2 = {pi,h / pi P1, h 1..ki}T2 = T1 {ti,h / pi,h P2}Funcţiile de intrare şi ieşire pentru tranziţiile “normale” sunt definite astfel:

1, dacă h = 1 .. #(pi, I1(tj))#(pi,h, I2(tj)) =

0, altfel 1, dacă h = #(pi, I1(tj)) + 1 .. #(pi, I1(tj)) + #(pi, O1(tj))

#(pi,h, O2(tj)) = 0, altfel

în timp ce pentru tranziţiile inel avem: I2(ti,h) = {pi,h}, O2 = {pi,h / n = 1 + (h mod ki)}Marcajul 2 este definit prin:2(pj,1) = 1(pi) pentru pi P1

2(pi,h) = 0 pentru h > 1Prin construcţie, pentru orice marcaj care este accesibil în C2, există un marcaj ’ al lui C2

astfel încât:

pentru toţi pi P1.

În particular, este posibil să se mute în C2 toate jetoanele din pi,h în pi,1, la orice moment. Astfel putem defini un marcaj ’ după cum urmează:

’(pi,1) = (pi) pentru pi P1

’(pi,h) = 0 pentru h > 1 şi ’ este accesibil în reţeaua Petri restricţionată C2 dacă şi numai dacă este accesibil în C1.

Astfel, din punctul de vedere al analizelor, reţelele Petri generale şi aceste trei clase restricţionate ale reţelelor Petri generale – reţele Petri ordinare, reţele Petri fără bucle şi reţele Petri restricţionate – sunt echivalente, deoarece fiecare poate fi transformată într-o reţea similară a unei

alte clase, permiţând ca o problemă de accesibilitate dintr-una să fie redusă la o problemă de accesibilitate din cealaltă. Construcţiile din acest capitol se datorează lui Hack [1974a].

69

Reţele Petri generale

Reţele Petri ordinare(fără arce multiple)

Reţele Petri fără bucle

Reţele Petri restricţionate(fără arce multiple sau bucle)

Page 70: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 5.5: Reductibilitatea problemei accesibilităţii pentru clasele de reţele Petri mărginite

5.4 Viabilitate şi accesibilitate

Accesibilitatea este o problemă importantă, dar nu singura problemă rămasă pentru reţelele Petri. Viabilitatea este o altă problemă care a primit multă atenţie în literatura de specialitate. Aşa cum s-a arătat în capitolul 4.1.4, viabilitatea este legată de noţiunea de interblocare. Sunt considerate aici două probleme de viabilitate pentru reţeaua Petri C = (P, T, I, O) cu marcajul iniţial . O reţea Petri este activă dacă fiecare tranziţie este activă. O tranziţie tj este activă într-un marcaj dacă pentru fiecare ’ R(C, ) există o secvenţă astfel încât tj este posibilă în (’, ). O tranziţie tj este moartă (blocată) într-un marcaj dacă nu există nici un marcaj accesibil în care să se poată declanşa.

Definiţia 5.7:Problema viabilităţii. Pentru toate tranziţiile tj T, este tj activă?

Definiţia 5.8:Problema viabilităţii pentru o singură tranziţie. Dată tranziţia tj T, este aceasta activă?

Problema viabilităţii este evident reductibilă la problema viabilităţii pentru o singură tranziţie. Pentru a rezolva problema viabilităţii, rezolvăm problema viabilităţii pentru o singură tranziţie pentru fiecare tj T; dacă |T| = m, atunci trebuie să rezolvăm m probleme de viabilitate pentru o singură tranziţie.

Problema accesibilităţii poate de asemenea fi redusă la problema viabilităţii. Deoarece multele variante ale problemei accesibilităţii sunt echivalente, vom folosi problema zero-accesibilităţii pentru o singură locaţie. Dacă avem oricare dintre celelalte probleme de accesibilitate, acestea pot fi reduse la problema zero-accesibilităţii pentru o singură locaţie, aşa cum s-a arătat în capitolul 5.2. Acum, dacă dorim să determinăm dacă locaţia pi poate fi zero în orice marcaj accesibil pentru o reţea Petri C1 = (P1, T1, I1, O1) cu marcajul iniţial 1, construim o reţea Petri C2 = (P2, T2, I2, O2) cu un marcaj iniţial 2, care este activă dacă şi numai dacă marcajul zero nu este accesibil din 1.

Reţeaua Petri C2 este construită din C1 prin adăugarea a două locaţii, r1 şi r2, şi a trei tranziţii, s1, s2 şi s3. Mai întâi modificăm toate tranziţiile lui T1 pentru a include r1 atât ca intrare cât şi ca ieşire. Marcajul iniţial 2 va include un jeton în r1. Locaţia r1 este o locaţie de rulare, deoarece atâta timp cât jetonul rămâne în r1, tranziţiile din T1 se pot declanşa normal. Astfel, orice marcaj care este accesibil în locaţiile lui P1 în C1 este de asemenea accesibil şi în C2. Tranziţia s1 este definită ca având r1 ca intrare şi o ieşire nulă. Aceasta permite mutarea jetonului din r1, dezactivarea tuturor tranziţiilor din T1 şi “îngheţarea” marcajului lui P1. (Observăm că toate tranziţiile din T1 sunt în conflict şi, prin construcţie, dacă nu prin definiţie, nu se poate declanşa mai mult de o tranziţie la un anumit moment.)

Locaţia r1 şi tranziţia s1 permit reţelei C1 să atingă orice marcaj accesibil şi apoi, pentru s1, să declanşeze şi să îngheţe reţeaua la acest marcaj. Acum avem nevoie să vedem dacă locaţia pi este zero. Introducem o nouă locaţie r2 şi o tranziţie s2 care are pi ca intrare şi r2 ca ieşire. Dacă pi poate să devină vreodată zero, această tranziţie nu este activă; de fapt, întreaga reţea este blocată (moartă) dacă tranziţia s1 se declanşează în acest marcaj. Din acest motiv, dacă pi poate fi zero, reţeaua nu

70

Page 71: Teoria Retelelor Petri Si Modelarea Sistemelor

este activă. Dacă pi nu poate fi zero, atunci s2 se poate declanşa întotdeauna, punând un jeton în r2. În acest caz trebuie să punem înapoi un jeton în r1 şi să ne asigurăm că toate tranziţiile din C2 sunt active. Trebuie să ne asigurăm că C2 este activă, chiar dacă C1 nu este. Acest fapt este realizat de o tranziţie s3 care “inundă” reţeaua C2 cu jetoane, asigurându-ne că fiecare tranziţie este activă, dacă întotdeauna este pus un jeton în r2. Tranziţia s3 are r2 ca intrare şi fiecare locaţie a lui C2 (toate pi din C1 plus r1 şi r2) este ieşire. Această construcţie este ilustrată în figura 5.6.

Figura 5.6: O construcţie ce converteşte problema zero-accesibilităţii într-o singură locaţie (este un marcaj accesibil cu (pi) = 0?) la problema viabilităţii(este această reţea activă?)

Acum, dacă un marcaj este accesibil în R(C1, 1) cu (pi) = 0, atunci reţeaua C2 poate, de asemenea, atinge acest marcaj pe locaţiile din P1 executând aceeaşi secvenţă de tranziţii care se declanşează. Astfel, s1 se poate declanşa, îngheţând submulţimea C1. Atâta vreme cât (pi) = 0, tranziţia s2 nu se poate declanşa şi C2 este blocată (moartă). Prin urmare, dacă pi poate deveni zero, atunci C2 nu este activă.

Reciproc, dacă C2 nu este activă, atunci un marcaj trebuie să fie accesibil în fiecare (r2) = 0 şi nu există nici o stare accesibilă în care r2 să conţină un jeton. (Dacă r2 are un jeton, s3 este posibilă şi s3 poate fi declanşată în mod repetat de suficient de multe ori pentru a face posibile anumite (sau toate) tranziţii, şi astfel reţeaua este activă.) Dacă r2 nu are nici un jeton şi nu poate primi nici unul, atunci marcajul lui pi trebuie, de asemenea, să fie zero. Astfel, dacă C2 nu este activă, atunci un marcaj este accesibil acolo unde marcajul lui pi este zero.

Pe baza acestei construcţii s-a obţinut următorul rezultat:

Teorema 5.5:Problema accesibilităţii este reductibilă la problema viabilităţii.

Acum avem nevoie să arătăm următoarele.

Teorema 5.6:Problema viabilităţii pentru o singură tranziţie este reductibilă la problema accesibilităţii.

Demonstraţia că problema viabilităţii pentru o singură tranziţie este reductibilă la problema accesibilităţii se rezumă la testarea accesibilităţii pentru fiecare mulţime finită de submarcaje maximale tj-blocate. O reţea Petri nu este activă pentru o tranziţie tj dacă şi numai dacă un marcaj este accesibil acolo unde tranziţia tj nu se poate declanşa şi nu poate deveni declanşabilă. Un marcaj de acest tip se numeşte tj-blocat. Pentru orice marcaj putem testa dacă este tj-blocat construind arborele de accesibilitate cu rădăcina şi testând dacă tranziţia tj se poate declanşa oriunde în

71

p4

pi

p2

p1

s1r1tj

s2

r2p3

Reţeaua Petri C1

Page 72: Teoria Retelelor Petri Si Modelarea Sistemelor

arbore. Dacă nu poate, atunci este tj-blocat. Astfel, pentru a se verifica dacă tranziţia tj este viabilă, trebuie să se verifice dacă vreun marcaj tj-blocat este accesibil.

În general, totuşi, s-ar putea să existe un număr infinit de marcaje tj-blocate şi o mulţime infinită de marcaje în care să găsim marcaje tj-blocate. Mulţimea de marcaje care trebuie verificate pentru accesibilitate se reduce la un număr finit cu ajutorul a două proprietăţi. În primul rând, dacă un marcaj este tj-blocat, atunci orice marcaj ’ este de asemenea tj-blocat. (Orice secvenţă de declanşare posibilă din ’ este, de asemenea, posibilă şi din , astfel că dacă ’ poate conduce la declanşarea lui tj, acelaşi lucru îl poate face şi .) În al doilea rând, marcajele anumitor locaţii nu vor afecta tj-interblocarea unui marcaj, şi astfel marcajele din aceste locaţii sunt “nu-mi pasă”; ele pot fi arbitrare. Împrumutând de la construcţia arborelui de accesibilitate, înlocuim aceste componente “nu-mi pasă” cu w pentru a indica faptul că în această locaţie se poate afla un număr arbitrar de mare de jetoane fără a afecta tj-interblocarea marcajului. Acum, de vreme ce orice ’ este tj-blocat dacă este tj-blocat, nu trebuie să considerăm aceste locaţii pi cu (pi) = w. Aceasta înseamnă că folosim problema accesibilităţii submarcajului cu P’ = {pi / (pi) 20}.

Pentru a exemplifica, considerăm reţeaua Petri din figura 5.7. Marcajele (2, 0), (1, 0), (0, 0), (0, 1), (0, 2), (0, 3), . . . sunt tj-blocate, dar ele pot fi finit reprezentate prin mulţimea {(2, 0), (1, 0), (0, 20)}.

Figura 5.7: O reţea Petri Pentru a ilustra marcajele tj-blocate (moarte)

Hack [1974c, 1975c] arată că pentru o reţea Petri C (extinsă pentru a include w) există o mulţime finită de marcaje Dt astfel încât C este activă dacă şi numai dacă nici un marcaj din Dt nu este accesibil. Dacă un marcaj din Dt conţine w, este implicată accesibilitatea submarcajului.

Mai departe, Dt poate fi efectiv calculată. De vreme ce Dt este finită, componentele diferite de w ale marcajelor au o margine superioară b. Marginea b este caracterizată ca cel mai mic număr astfel încât pentru orice marcaj cu (pi) b + 1 pentru toate pi, dacă este tj-blocat, atunci submarcajul ’, cu ’(pi) = (pi), este tj-blocat dacă (pi) b şi ’(pi) = w dacă (pi) = 1 + b. Cu această caracterizare a lui b, vom construi Dt după cum urmează:4) Calculez b. Pornesc cu b = 0‚ şi îl măresc până când găsesc o valoare a lui b care să satisfacă

caracterizarea de mărginire definită mai sus. Testarea pentru b necesită verificarea tuturor celor (b + 2)n marcaje cu componente mai mici sau egale cu b + 1.

5) Calculez Dt prin testarea tuturor marcajelor şi submarcajelor cu componente mai mici sau egale cu b, sau egale cu w. Dt este mulţimea de marcaje tj-blocate din această mulţime de (b + 1)n

marcaje.Odată ce am construit Dt, aplicăm problema accesibilităţii submarcajului pentru fiecare

element al lui Dt. Dacă există un element al lui Dt din marcajul iniţial care este accesibil, reţeaua Petri nu este activă; dacă nici un element al lui Dt nu este accesibil, reţeaua Petri este accesibilă.

Din aceste două teoreme avem următoarele:

Teorema 5.7:Următoarele probleme sunt echivalente.

1. Problema accesibilităţii2. Problema viabilităţii3. Problema viabilităţii pentru o singură tranziţie.

72

p1

p2

t1

t2

Page 73: Teoria Retelelor Petri Si Modelarea Sistemelor

Demonstraţii mai formale ale reducerii viabilităţii la accesibilitate pot fi găsite în [Hack 1974c; Hack 1975c].

5.5 Rezultate nedecidabile

În secţiunea 5.4 am arătat că o serie de probleme de accesibilitate şi viabilitate sunt echivalente, dar nu s-a obţinut încă nici un rezultat referitor la decidabilitatea acestor probleme. Pentru a arăta decidabilitatea este necesară reducerea unei probleme cu reţele Petri la o problemă pentru care se cunoaşte o metodă de soluţionare. Pentru a arăta nedecidabilitatea este necesară reducerea unei probleme despre care se ştie că este nedecidabilă la o problemă cu reţele Petri. Primul rezultat important de acest gen a fost cel al lui Robin [Baker 1973b]. Robin a arătat că pentru două reţele Petri C1 cu marcajul 1 şi C2 cu marcajul 2 nu se poate decide dacă R(C1, 1) R(C2, 2).

Mai târziu Hack [1975a] a întărit acest rezultat arătând că nu se poate decide dacă R(C1, 1) = R(C2, 2). Demonstraţia acestor afirmaţii se bazează pe a zecea problemă a lui Hilbert (în 1900, D. Hilbert a prezentat 23 de probleme la o conferinţă a matematicienilor, iar aceasta a fost a zecea pe lista sa).

Definiţia 5.9:Dat un polinom P cu n variabile şi coeficienţi întregi, există un vector (x1, …, xn) de întregi astfel încât P(x1, …, xn) = 0?

Ecuaţia P(x1, …, xn) = 0 se numeşte ecuaţie diofantică. În general, va fi o sumă de termeni:

, .

Ecuaţiile diofantice includ x1 = 0, 3x1x2 + 6x3 = 0, şi aşa mai departe.În 1970, Matijasevic a demonstrat că a zecea problemă a lui Hilbert era nedecidabilă [Davis

1973; David şi Hersh 1973]. Nu există un algoritm general pentru a determina dacă o ecuaţie diofantică arbitrară are o rădăcină (o mulţime de valori pentru care polinomul este zero). Acest lucru a stat la baza demonstraţiei faptului că problema egalităţii pentru mulţimi de accesibilitate pentru reţele Petri este nedecidabilă. Strategia este de a construi pentru un polinom diofantic o reţea Petri care (într-un sens) calculează toate valorile polinomului.

5.5.1 Problema incluziunii grafurilor polinomiale

Demonstraţia nedecidabilităţii problemei egalităţii se face în trei paşi (figura 5.8). Mai întâi, a zecea problemă a lui Hilbert este redusă la problema incluziunii grafurilor polinomiale. Apoi, problema incluziunii grafurilor polinomiale este redusă la problema submulţimii pentru mulţimi de accesibilitate ele reţelelor Petri. În cele din urmă, problema submulţimii pentru mulţimi de accesibilitate ele reţelelor Petri este redusă la problema egalităţii pentru mulţimi de accesibilitate ele reţelelor Petri. Aceasta arată că a zecea problemă a lui Hilbert, despre care se ştie că este nedecidabilă, este reductibilă la problema egalităţii, despre care tragem astfel concluzia că este tot nedecidabilă.

Problema a zecea a lui Hilbert

Problema incluziunii grafurilor polinomiale

Problema submulţimii pentru mulţimi de accesibilitate pentru reţele Petri

Problema egalităţii pentru mulţimi de accesibilitate pentru reţele Petri

73

Page 74: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 5.8: Reduceri arătând că problemele egalităţii (şi a submulţimii) pentru mulţimi de accesibilitate pentru reţele Petri sunt nedecidabile

Definiţia 5.10:Graful G(P) al unui polinom diofantic P(x1, …, xn) cu coeficienţi nenegativi este mulţimea:

G(P) = { (x1, …, xn, J) / J P(x1, …, xn) cu 0 x1, …, xn}.

Definiţia 5.11:Problema incluziunii grafurilor polinomiale este de a determina pentru polinoamele A şi B dacă G(A) G(B).

Arătăm mai întâi că a zecea problemă a lui Hilbert se reduce la problema incluziunii grafurilor polinomiale. Aceasta va demonstra următoarele.

Teorema 5.8:Problema incluziunii grafurilor polinomiale este nedecidabilă.

Demonstraţie:1) Reducem demonstraţia noastră la probleme cu soluţii nenegative. Dacă (x1,…, xn) este o

soluţie pentru P(x1,…, xn) = 0, cu xi < 0, atunci (x1,…, -xi,…, xn) este soluţie pentru P(x1,…, -xi,…, xn) = 0. Astfel, pentru a determina soluţia unui polinom arbitrar, trebuie doar să testăm fiecare dintre cele 2n polinoame care rezultă din schimbarea semnului unei submulţimi de variabile pentru soluţiile nenegative.

2) Similar, de vreme ce P2(x1,…,xn) = 0 dacă şi numai dacă P(x1,…,xn) = 0, avem nevoie să considerăm numai polinoamele unde valoarea este nenegativă.

3) Acum putem separa orice polinom P(x1,…,xn) în două polinoame Q1(x1,…,xn) şi Q2(x1,…,xn) astfel încât P(x1,…,xn) = Q1(x1,…,xn) – Q2(x1,…,xn) punând toţi termenii cu coeficienţi pozitivi în Q1 şi toţi termenii cu coeficienţi negativi în Q2. Deoarece P(x1,…,xn) 0 (conform punctului (2) de mai sus), avem Q1(x1,…,xn) Q2(x1,…,xn) şi P(x1,…,xn) = 0 dacă şi numai dacă Q1(x1,…,xn) = Q2(x1,…,xn).

4) Considerăm două grafuri polinomiale:G(Q1) = {(x1,…,xn, y) / y Q1(x1,…,xn)}G(1 + Q2) = {(x1,…,xn, y) / y 1 + Q2(x1,…,xn)}Acum, G(1 + Q2) G (Q1) dacă şi numai dacă pentru toate x1,…, xn nenegative şi y, y 1 + Q2(x1, …,xn) implică y Q1(x1, …,xn). Această relaţie este adevărată dacă şi numai dacă nu există x1,…,xn şi z astfel încât Q1(x1, …,xn) < y 1 + Q2(x1, …,xn).Dar, din punctul (3) de mai sus Q1 Q2, astfel încât Q1(x1, …,xn) < y 1 + Q2(x1, …,xn) 1 + Q1(x1, …,xn) şi, deoarece toţi cuantificatorii sunt întregi, y = 1 + Q2(x1,…,xn) =1 + Q1(x1,…,xn) este adevărată dacă şi numai dacă Q1 = Q2. Astfel, vedem că G(Q2 + 1) G(Q1) dacă şi numai dacă nu există x1, …, xn astfel încât Q1(x1, …,xn) = Q2(x1, …,xn), adică nu există x1, …, xn astfel încât P(x1, …,xn) = 0.

5) De aceea, pentru a determina că ecuaţia P(x1, …,xn) = 0 are o soluţie, trebuie să arătăm numai că nu suntem în cazul în care G(Q2 + 1) G(Q1).

5.5.2 Calcule slabe (weak computation)

Acum avem nevoie să arătăm că reţelele Petri pot calcula (într-un sens) valoarea unui polinom Q(x1, …, xn). Am mărginit cu atenţie polinomul Q astfel încât să aibă o valoare nenegativă, coeficienţi nenegativi şi variabile nenegative, pentru a putea codifica valorile variabilelor şi valoarea polinomului prin numărul de jetoane din locaţiile unei reţele Petri. Figura 5.9 arată schema generală. Valorile de intrare x1, …, xn sunt codificate de xi jetoane în pi, pentru i = 1…n. Iniţial, se află un jeton şi în locaţia de pornire. Execuţia reţelei se va termina prin plasarea unui jeton în locaţia “quit”(de terminare). În acest moment, locaţia “de ieşire” va avea y jetoane, unde y Q(x1,…xn).

74

Page 75: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 5.9: Structura de bază a unei reţele Petri pentru a calcula slab valoarea polinomului Q(x1, …xn)

Această reţea Petri va calcula slab valoarea Q(x1, …xn). Calcul slab înseamnă că deşi valoarea calculată nu va depăşi Q(x1, …xn), ea poate fi orice valoare nenegativă mai mică decât Q(x1, …xn). Acest tip de calcul este necesar pentru reţelele Petri datorită naturii permisive a declanşărilor de tranziţii; o reţea Petri nu poate fi forţată să se încheie. Definiţia unui graf polinomial G(Q) a fost dată ţinând cont de acest aspect.

Vom arăta acum că pot fi construite subreţele care calculează slab funcţia de înmulţire (binară). De aici, vom putea construi o reţea compusă care să calculeze slab valoarea fiecărui termen al unui polinom prin subreţele succesive de înmulţire. Ieşirea din fiecare subreţea corespunzătoare unui termen va fi depozitată în locaţia de ieşire pentru polinom. Astfel, numărul de jetoane din locaţia de ieşire va fi suma ieşirilor pentru fiecare termen.

Subreţeaua de înmulţire este cea în figura 5.10.

Figura 5.10: O subreţea pentru înmulţire. Această subreţea calculează slab produsul dintre x şi y

Această reţea va calcula slab produsul numerelor, x şi y, de jetoane din cele două locaţii de intrare şi va plasa tot atâtea jetoane în locaţia de ieşire. Funcţionarea reţelei este simplă. Pentru a calcula produsul dintre x şi y, se declanşează mai întâi tranziţia t1, mutând un jeton din px în p2. Acest jeton activează tranziţia t3, care poate acum să copieze y jetoane din poziţia py, punându-le în p3, şi punând y jetoane în poziţia pxy de ieşire. Acum se poate declanşa tranziţia t2, ce pune jetonul din p2 înapoi în p1. Se activează astfel tranziţia t1, care poate copia cele y jetoane din p3 înapoi în py. Acest întreg proces poate fi repetat de exact x ori, de fiecare dată punându-se y jetoane în pxy. Apoi, marcajul locaţiei px este redus la zero şi reţeaua trebuie să se oprească. Numărul total de jetoane din locaţia pxy este produsul dintre x şi y.

Cazul de mai sus surprinde situaţia cea mai bună, în sensul că numărul de jetoane din locaţia de ieşire este exact xy. Totuşi, jetoanele din locaţia p2 activează atât tranziţia t3 cât şi tranziţia t2, şi este posibil ca t2 să se declanşeze înainte ca toate cele y jetoane să fie copiate din py în p3 şi să fie adăugate la pxy. În acest caz, numărul de jetoane depozitate în pxy va fi mai mic decât xy. Deoarece t3

se poate declanşa de maximum y ori pentru fiecare declanşare a lui t1 şi t1 se poate declanşa de

75

pn

p2

p1

xn

x2

x1

Ieşire

Pornire Terminare

px

p3

py

pxy

t1

t2

t3t4

p2p1

Page 76: Teoria Retelelor Petri Si Modelarea Sistemelor

maximum x ori, putem fi siguri că numărul de jetoane din pxy nu depăşeşte niciodată xy, dar, datorită naturii permisive a declanşării tranziţiilor, nu putem fi siguri că numărul de jetoane din pxy va fi exact xy; s-ar putea să fie mai mic. Astfel, această reţea Petri calculează slab produsul dintre x şi y. Acum, pentru a calcula slab un termen Ri care este produsul construim o reţea Petri de forma celei din figura 5.11. Deoarece fiecare subreţea calculează slab produsul a doi termeni, întreaga subreţea calculează slab valoarea termenului Ri.

Figura 5.11: O structură de reţea Petri pentru a calcula slab un termen al unui polinom diofantic. Fiecare dreptunghi este o reţea de forma celei din figura 5.10.

În acest caz, figura 5.12 arată cum poate fi calculat slab un polinom P = R1 + … + Rk. Fiecare subreţea este de forma arătată în figura 5.11 şi calculează slab valoarea unui termen. Ieşirile celor k subreţele pentru fiecare termen au fost unite dând o valoare totală care este suma tuturor termenilor.

Pentru a crea mulţimile de accesibilitate specifice necesare sunt adăugate tranziţii şi locaţii de control. Mai întâi trebuie să putem produce o valoare arbitrară pentru fiecare din variabilele x1,…,xn şi să înregistrăm această valoare în locaţiile p1,…,pn.

Pentru fiecare pi este creată o tranziţie ti cu intrare nulă şi ieşire prin pi astfel încât fiecare locaţie care este o intrare corespunde lui xi într-un termen Rj care foloseşte xi.

De aceea, în polinomul x1 + x1x2 vom avea o tranziţie t1 cu ieşiri în p1 şi la cele t1 intrări ale celor doi termeni x1 şi x1x2 care folosesc x1; t2 va ieşi în p2 şi la cele x2 intrări ale termenului x1x2.

Figura 5.12: O reţea Petri pentru a calcula slab P(x1,…, xn) folosind o colecţie de subreţele de forma celor din figura 5.11

76

Ri = ai xS1 xS2 … xSh

ai

xS1

xS2

xSh

P = R1+ … Rk

Rk

R1

xS1

xSh

xt1

xtf

Ieşire

Page 77: Teoria Retelelor Petri Si Modelarea Sistemelor

Aceste tranziţii pot să se declanşeze de un număr arbitrar de ori, creând orice valoare în p1,…,pn. Astfel, pentru fiecare y P(x1, …,xn) este accesibil un marcaj cu (p1) = x1, …, (pn) = xn şi (ieşire) = y. Valoarea y = P(x1, …,xn) poate fi atinsă declanşând mai întâi t1 de x1 ori, punând x1

jetoane în p1, apoi declanşând t2 de x2 ori, şi aşa mai departe până când tn se declanşează de xn ori. Subreţeaua pentru fiecare termen Ri al polinomului se poate apoi executa, cu valoarea rezultată pentru polinom pusă în locaţia de ieşire.

Pentru a reduce problema incluziunii grafurilor polinomiale la problema submulţimii pentru mulţimi de accesibilitate pentru reţele Petri efectuăm următorii paşi. Pentru polinoamele A şi B, dorim să determinăm dacă G(A) G(B).(1) Construim reţeaua Petri CA care calculează slab A(x1, …,xn) şi reţeaua Petri CB care

calculează slab B(x1, …,xn).(2) Dacă numărul de locaţii din cele două reţele nu este egal, adăugăm locaţii în cea care are

mai puţine pentru a egaliza numărul de locaţii. Aceste locaţii sunt iniţial nemarcate şi nu sunt folosite de nici una din tranziţiile din reţea.

(3) Acum trebuie să eliminăm efectele tuturor locaţiilor interne mulţimilor de accesibilitate. Se pune în evidenţă o mulţime de n + 1 locaţii în fiecare dintre reţelele CA şi CB, locaţiile corespunzătoare valorilor x1, …,xn şi ieşirea pentru fiecare reţea. Toate celelalte locaţii sunt locaţii interne, ale căror marcaje nu sunt importante. Totuşi, putem găsi că pentru o locaţie internă pi din CA şi corespunzător din CB există un marcaj din R(CA, A) diferit de marcajul ’ din R(CB, B), deoarece (pi) ’’ (pi) pentru toate ’’ din R(CB, B).Pentru a preveni această problemă adăugăm la CA două noi locaţii, q şi r, (rezultând ), şi la

CB alte două locaţii, q’ şi r’, (rezultând ). În , q şi r nu sunt folosite pentru nici o tranziţie,

şi iniţial r este goală iar q este marcată cu un jeton. În , r’ este o locaţie de pornire care este

iniţial marcată. Fiecare tranziţie din este modificată pentru a include r’ atât ca intrare cât şi

ca ieşire. Astfel, atâta timp cât jetonul rămâne în r’, reţeaua poate funcţiona ca înainte. O

nouă tranziţie transferă jetonul de activare de la r’ la q’, dezactivând toate tranziţiile din şi

“îngheţând” marcajul. Acum adăugăm două noi tranziţii pentru fiecare locaţie internă din .Pentru fiecare locaţie internă pi unde marcajul este neimportant, o tranziţie are locaţiile p’ şi pi ca intrări şi numai pe q’ ca ieşire (permiţând marcajului din pi să fie decrementat cu 1), şi o altă tranziţie are q’ ca intrare şi atât q’ cât şi pi ca ieşiri (permiţând marcajului din pi să fie incrementat cu 1). Aceste tranziţii permit ca marcajul fiecărei locaţii interne să fie atins arbitrar de către o secvenţă potrivită de declanşări ce incrementează sau decrementează.

(4) Noua construcţie este ilustrată în figura 5.13. Pentru aceste două reţele Petri, şi cu

marcajele iniţiale , respectiv , G(A) G(B) dacă şi numai dacă R( , ) R( , ).

Mulţimile de accesibilitate ale lui şi sunt după cum urmează.

Pentru :

p1,…, pn Ieşire r q Locaţii internex1,…, xn y A(x1, …, xn) 0 1 Un marcaj arbitrar

Pentru :

p1,…, pn Ieşire r q Locaţii internex1,…, xn y B(x1, …, xn) 1 0 Un marcaj arbitrarx1,…, xn y B(x1, …, xn) 0 1 Toate marcajele arbitrare

Astfel, dacă G(A) G(B), atunci R( , ) R( , ) şi reciproc, dacă R( , ) R(

, ) atunci G(A) G(B).

77

Page 78: Teoria Retelelor Petri Si Modelarea Sistemelor

Astfel se încheie demonstraţia pentru următorul rezultat:

Teorema 5.9:Problema incluziunii grafurilor polinomiale este reductibilă la problema submulţimii pentru mulţimi de accesibilitate pentru reţele Petri.

Demonstraţia acestei teoreme a fost luată din [Hack 1975a, Hack 1975c].

Figura 5.13: Reţeaua Petri construită pentru a testa incluziunea grafurilor polinomiale

5.5.3 Problema egalităţii

Mai avem acum de arătat doar că problema submulţimii pentru mulţimi de accesibilitate pentru reţele Petri se reduce la problema egalităţii.

Presupunem că avem două reţele Petri A şi B şi dorim să determinăm dacă R(A, A) R(B, B) (problema submulţimii). Arătăm că două reţele Petri D şi E pot fi definite astfel încât R(A, A) R(B, B) dacă şi numai dacă R(D, D) = R(E, E). Ne bazăm în această demonstraţie pe următorul rezultat: R(A, A) R(B, B) dacă şi numai dacă R(B, B) = R(A, A) R(B, B). Atât D cât şi E sunt construite dintr-o subreţea comună, C. Reţeaua C codifică mulţimile de accesibilitate ale reţelelor A şi B astfel încât să producă uniunea lor. Figura 5.14 ilustrează construcţia de bază. Cele n locaţii p1, …,pn se comportă fie ca n locaţii ale reţelei A, fie ca n locaţii ale reţelei B. Iniţial ele sunt nemarcate. Se adaugă două noi locaţii, rA şi rB, ca locaţii de pornire pentru reţeaua A, respectiv pentru reţeaua B. Toate tranziţiile reţelei A sunt modificate pentru a include rA atât ca intrare cât şi ca ieşire, şi, de asemenea, toate tranziţiile reţelei B sunt modificate pentru a include rB atât ca intrare cât şi ca ieşire.

78

q

r

Ieşire

p1

p2

pn

CA

C’A

tj

q’

p’

Ieşire

p1

p2

pn

CB

C’B

pi

Page 79: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 5.14: Construcţia reţelelor Petri C, D şi E din A şi B. Această construcţie este folosită pentru a arăta că problema submulţimii se reduce la problema egalităţii pentru mulţimi de accesibilitate.

Se adăugă încă o locaţie, s, şi două noi tranziţii, tA şi tB. Marcajul iniţial pentru această întreagă reţea (incluzând A şi B ca subreţele cu locaţii comune, locaţiile rA, rB şi s şi tranziţiile tA şi tB) este format dintr-un jeton în s şi zero jetoane oriunde altundeva.

Tranziţia tA are locaţia s ca intrare şi produce la ieşire marcajul iniţial pentru reţeaua A plus un jeton în rA; tranziţia tB are locaţia s ca intrare şi produce la ieşire marcajul iniţial pentru reţeaua B plus un jeton în rB. Astfel, dacă se declanşează tA, subreţeaua A are marcajul său iniţial, şi oricare dintre tranzacţiile sale se poate declanşa normal de vreme ce în rA se află un jeton. Totuşi, subreţeaua B este complet dezactivată, deoarece în rB nu se află nici un jeton. Dacă se declanşează mai întâi tB, atunci subreţeaua B poate funcţiona şi A este dezactivată. Mulţimea de secvenţe care se declanşează pentru C este atunci orice secvenţă de forma:

tA, <orice secvenţă de declanşări din A>,sau orice secvenţă de forma:

tB, <orice secvenţă de declanşări din B>.Reţeaua D este obţinută din C prin adăugarea unei noi tranziţii qB. Tranziţia qB are locaţia rB

ca intrare şi nici o ieşire. Observăm că qB se poate declanşa numai dacă tranziţia tB s-a declanşat prima; dacă s-a declanşat prima tranziţia tA, atunci locaţia rB este goală şi qB nu se poate declanşa.

Reţeaua E este construită din D prin adăugarea unei noi tranziţii qA. Tranziţia qA are locaţia rA ca intrare şi nici o ieşire. Observăm că qA se poate declanşa numai dacă tranziţia tA s-a declanşat prima. Observăm că reţeaua E este construită din D, nu (direct) din C. Astfel, E conţine atât tranziţia qA cât şi tranziţia qB.

Acum să examinăm mulţimile de accesibilitate ale reţelelor Petri C, D şi E. În mulţimea de accesibilitate a lui C sunt toate marcajele de forma:

s rA rB p1,…, pn

1 0 0 0,…,00 1 0 Orice R(A, A) (dacă se declanşează tA)

79

E

D

C

AB

qA

qB

p1

pn

rA rB

tA tB

s

Page 80: Teoria Retelelor Petri Si Modelarea Sistemelor

0 0 1 Orice R(B, B) (dacă se declanşează tB)

Reţeaua Petri D adaugă o altă clasă de marcaje la mulţimea sa de accesibilitate:s rA rB p1,…, pn

1 0 0 0,…,00 1 0 Orice R(A, A) (dacă se declanşează tA)0 0 1 Orice R(B, B) (dacă se declanşează tB)0 0 0 Orice R(B, B) (dacă se declanşează qB)

Şi reţeaua Petri E mai adaugă o clasă la acestea:s rA rB p1,…, pn

1 0 0 0,…,00 1 0 Orice R(A, A) (dacă se declanşează tA)0 0 1 Orice R(B, B) (dacă se declanşează tB)0 0 0 Orice R(B, B) (dacă se declanşează qB)0 0 0 Orice R(A, A) (dacă se declanşează qA)

Acum, dacă R(A, A) R(B, B), atunci ultima clasă din R(E, E) [marcajele de forma (0, 0, 0, ) cu R(A, A)] este inclusă în ultima clasă din R(D, D) [marcajele de forma (0, 0, 0, ) cu R(B, B)]. De vreme ce toate celelalte marcaje sunt aceleaşi, R(D, D) = R(E, E) dacă R(A, A) R(B, B).

Similar, dacă R(D, D) = R(E, E), atunci trebuie să avem R(A, A) R(B, B), de vreme ce pentru fiecare marcaj (0, 0, 0, ) cu R(A, A) din R(E, E) trebuie să existe un marcaj egal în R(D, D). Dar, toate marcajele cu (s, rA, rB) = (0, 0, 0) sunt de forma (0, 0, 0, ) cu R(B, B), aşa că R(A, A) R(B, B).

Astfel, această construcţie conduce la următorul rezultat.

Teorema 5.11:Următoarele probleme sunt nedecidabile:

1. Problema incluziunii grafurilor polinomiale2. Problema submulţimii pentru mulţimi de accesibilitate pentru reţele Petri3. Problema egalităţii pentru mulţimi de accesibilitate pentru reţele Petri

Aceste teoreme şi demonstraţiile aferente se datorează lui Hack [1975a, 1975c].

5.6 Complexitatea problemei de accesibilitate

Nedecidabilitatea problemelor submulţimii şi egalităţii pentru mulţimi de accesibilitate pentru reţele Petri creează posibilitatea ca problema accesibilităţi însăşi să fie de asemenea nedecidabilă. Totuşi, la acest moment, decidabilitatea (sau nedecidabilitatea) problemei accesibilităţi este încă o problemă deschisă. În prezent nu există nici un algoritm care să rezolve problema accesibilităţii, şi de asemenea nu există nici o demonstraţie a faptului că un astfel de algoritm nu poate să existe.

În 1977, a fost prezentată o “demonstraţie” a decidabilităţii problemei accesibilităţi la simpozionul ACM de teorie computaţională [Sacordate şi Tenney 1977]. Totuşi, această demonstraţie avea câteva scăpări serioase, şi încercarea de a le corecta, pentru a produce o demonstraţie corectă, a eşuat. Totuşi, sentimentul predominant este că problema accesibilităţii este decidabilă – se crede că există un algoritm şi că acesta va fi descoperit în timp.

Presupunând că există un algoritm pentru rezolvarea problemei accesibilităţii, este foarte probabil ca acesta să fie foarte complex. Întrebarea evidentă este: Dacă există un algoritm pentru

80

Page 81: Teoria Retelelor Petri Si Modelarea Sistemelor

rezolvarea problemei accesibilităţii, cât de complex trebuie să fie? Unele limite ale complexităţii sale pot fi stabilite fără a se face referinţă la nici un algoritm specificat.

Lipton [1976] a arătat că orice algoritm pentru a rezolva problema accesibilităţii va necesita cel puţin o cantitate exponenţială (2cn) de spaţiu pentru depozitare şi o cantitate exponenţială de timp. Exponentul (n) este o măsură a dimensiunii problemei şi în cazul lui Lipton reflectă numărul de locaţii şi interconectările lor în tranziţii.

Lipton a demonstrat că este necesar un spaţiu exponenţial arătând că poate fi construită o reţea Petri în care o locaţie se comportă precum un program de numărare a numerelor 0, 1, …, .

Reprezentarea acestui fapt în algoritmul problemei accesibilităţii va necesita cel puţin log2( ) = 2n

biţi. La fel de important este că în construcţie se folosesc cel mult hn locaţii (pentru o anumită constantă h).

Demonstraţia lui Lipton se bazează pe posibilitatea de a crea o reţea cu numai hn locaţii care să poată număra până la . Parte din constrângeri rezultă din nevoia de a testa locaţiile sale pentru marcajul zero. Desigur, reţelele Petri au fost gândite astfel încât nu există o cale directă de a efectua acest test. Totuşi, o tehnică obişnuită folosită cu reţelele Petri pentru a permite testarea pentru marcajul zero este de a folosi două locaţii p şi p’ astfel încât (p) + (p’) să fie o constantă. Dacă ştim că (p) + (p’) = k, atunci putem testa dacă (p) este zero testând dacă (p’) are k jetoane; dacă (p’) are k jetoane, atunci (p) are zero jetoane şi viceversa. O locaţie poate fi testată pentru valori diferite de zero folosind-o într-o buclă. Observăm că pentru a menţine această abilitate trebuie să menţinem natura constantă a lui (p) + (p’); în acest context, reţeaua trebuie să fie conservativă, cel puţin cu respectarea acestor două locaţii.

Pentru numere k mici, putem testa dacă marcajul unei locaţii este k considerând locaţia ca fiind intrare pentru o tranziţie de k ori (figura 5.15).

Figura 5.15: Testarea unei locaţii mărginite pentru un marcaj 0, 1 sau 2. Toate tranziţiile trebuie să păstreze suma marcajelor

Totuşi, arcele contribuie la dimensiunea problemei, şi de aceea nu putem proceda în acest fel în general. Lipton a arătat că dacă suma constantă a două locaţii (pk, ) este k, şi k este un produs a doi factori întregi mai mici (k = k1k2) care sunt sumele constante a două alte perechi de locaţii (

şi ) şi putem testa dacă ( ) = 0 şi ( ) = 0, atunci putem testa dacă (pk) =

0. Acest fapt i-a permis lui Lipton să construiască subreţele de genul celor din figura 5.16. Aceste reţele le folosim mai târziu pentru a controla reţelele de înmulţire similar cu modul în care se calculează slab graful polinomial (vezi figura 5.10). Reţeaua testare-pentru-zero permite reţelei Petri să calculeze produsul exact (nu un produs slab care este de obicei mărginit de produsul real).

81

p’

(p) este 0

Test

(p) este 1

(p) este 2

p

Test pentru locaţia p

(p) = 0

(p) 0

Page 82: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 5.16: Forma reţelelor Petri pe care le foloseşte Lipton pentru a construi o reţea mai mare care poate testa o numărătoare mai mare pentru zero

Aceste reţele simple îi permit lui Lipton să construiască o reţea, pentru un n dat, care poate genera exact jetoane într-o locaţie (p), cu zero jetoane în p’ şi posibilitatea de a testa (p) pentru zero. Numărul de locaţii folosite este de numai n ori un factor constant. Existenţa unei astfel de reţele Petri arată că problema accesibilităţii necesită cantităţi de timp şi spaţiu cel puţin exponenţiale, deci rezolvarea ar fi foarte costisitoare.

Construcţia unei reţele Petri care să poată număra până la are, de asemenea, un corolar foarte important. Reţeaua Petri care se construieşte este mărginită, de vreme ce numărul de jetoane din orice locaţie dată nu poate fi mai mare de . Aceasta înseamnă că orice algoritm pentru determinarea limitei (mărginirii) unei reţele Petri trebuie de asemenea să necesite timp şi spaţiu exponenţiale. Astfel, chiar şi problemele simple pentru reţele Petri, deşi decidabile, pot cere pentru soluţionare mari cantităţi de spaţiu şi timp.

Ar trebui de amintit că acestea sunt limite inferioare, adică descriu comportamentul algoritmului în cazul cel mai prost. S-ar putea să existe cazul când multe probleme interesante sunt decidabile relativ eficient pentru majoritatea reţelelor Petri. Aceste rezultate de complexitate arată că, chiar dacă un algoritm lucrează foarte bine în majoritatea timpului, există o reţea Petri care necesită mult timp şi spaţiu pentru analiză.

Ştim că problema accesibilităţii necesită spaţiu cel puţin exponenţial. S-ar putea să existe cazuri chiar mai proaste decât cazul exponenţial. Rackoff [1977] a dezvoltat un algoritm pentru a determina mărginirea în timp exponenţial, astfel că problema mărginirii este cunoscută a fi de complexitate exponenţială. Totuşi, problema accesibilităţii este cunoscută a fi de complexitate cel puţin exponenţială (şi s-ar putea chiar să nu fie decidabilă).

Un alt rezultat, al lui Mayr [1977], a arătat că problemele submulţimii şi egalităţii pentru mulţimi de accesibilitate mărginite pentru reţele Petri sunt de complexitate nonprimitive recursive. Aceste rezultate indică faptul că unele probleme pentru reţele Petri, deşi decidabile, sunt prea complexe din punct de vedere computaţional.

5.7 Alte studii

Teoria decidabilităţii este o parte de început a teoriei computaţionale şi a fost dezvoltată de către Turing, Kleene, Gödel şi Church. Davis [1958] şi Minsky [1967] oferă explicaţii folositoare. Karp [1972] arată cum reducerea poate fi folosită pentru rezultate de decidabilitate şi complexitate.

Problema accesibilităţii a apărut mai întâi în [Karp şi Miller 1968] şi a fost raportată ca o problemă de cercetare în [Nash 1973]. Rezultate preliminare au fost raportate în [Van Leeuwen 1974, Hopcroft şi Pansiot 1976], dar acestea nu sunt generale.

Majoritatea rezultatelor din acest capitol se datorează cercetărilor lui Hack [1974a, c, 1975a, c]. Hack a fost unul dintre cei mai mari cercetători ai problemelor de decizie pentru reţelele Petri. Alţi cercetători ai proprietăţilor deciziei sunt [Araki şi Kasami 1976, 1967; Mayr 1977]. Rezultate de complexitate au fost date de către Lipton [1976], Rackoff [1976] şi Jones et. al. 1976]. Alte rezultate legate indirect de reţelele Petri au fost date de [Cardoza 1975, Cardoza et. al. 1976].

82

Page 83: Teoria Retelelor Petri Si Modelarea Sistemelor

6 Limbaje pentru reţele Petri

Discuţiile din capitolele 4 şi 5 s-au concentrat pe probleme legate de accesibilitate, lucrând mai ales cu probleme cu marcaje accesibile. O abordare înrudită, dar complet diferită este să ne concentrăm nu pe ce marcaje sunt accesibile, ci cum ajungem la ele. Primul obiect de interes este astfel tranziţia, şi în particular secvenţele de tranziţii care ne conduc de la un marcaj la altul într-o reţea Petri.

O secvenţă de tranziţii este un şir, iar o mulţime de şiruri formează un limbaj. Astfel, în acest capitol, ne vom concentra asupra limbajelor definite de reţelele Petri şi asupra proprietăţilor acestora.

6.1 Motivaţie

Reţelele Petri au fost dezvoltate pentru două scopuri majore:(1) descrierea sistemelor propuse sau existente(2) analiza sistemelor care pot fi modelate printr-o descriere de reţea Petri.

Analiza unei reţele Petri încearcă să determine proprietăţile reţelei şi pe cele ale sistemului pe care-l modelează. Una din cele mai importante proprietăţi ale unui sistem este mulţimea de acţiuni care pot apărea. Mulţimea tuturor secvenţelor posibile de acţiuni caracterizează sistemul.

Într-o reţea Petri, acţiunile sunt modelate prin tranziţii şi apariţia unei acţiuni este modelată prin declanşarea unei tranziţii. Secvenţele de acţiuni sunt modelate prin secvenţe de tranziţii. Astfel, mulţimea secvenţelor de tranziţii permise caracterizează o reţea Petri şi (în măsura în care reţeaua Petri modelează corect un sistem) sistemul modelat.

Aceste secvenţe de tranziţii pot fi de maximă importanţă în folosirea reţelelor Petri. Să presupunem că a fost proiectat un nou sistem pentru a înlocui unul existent. Comportamentul noului sistem este identic cu al vechiului sistem (dar noul sistem este mai ieftin, mai rapid, mai uşor de reparat, etc.). Dacă ambele sisteme sunt modelate ca reţele Petri, atunci, deoarece comportamentele acestor două reţele sunt identice, şi limbajele lor ar trebui să fie egale. Două reţele Petri sunt echivalente dacă limbajele lor sunt egale. Astfel se asigură o bază fermă pentru stabilirea echivalenţei a două sisteme.

O situaţie particulară în care echivalenţa este importantă este optimizarea. Optimizarea unei reţele Petri presupune crearea unei noi reţele Petri echivalente (limbajele sunt egale), dar care este “mai bună” decât cea veche (într-un anume sens). De exemplu, dacă o reţea Petri va fi direct implementată pe componenta hard, atunci o reţea Petri cu mai puţine locaţii, tranziţii şi arce va fi mai ieftină de construit, de vreme ce are mai puţine componente. Astfel, o problemă de optimizare poate să reducă |P| + |T| fără să se schimbe comportamentul reţelei.

Din motive de optimizare, s-ar putea să fie utilă o mulţime de transformări care conservă limbajul. Dacă o transformare aplicată unei reţele Petri produce o nouă reţea Petri cu acelaşi limbaj, atunci aceasta este o reţea cu conservarea limbajului. O reţea Petri optimă poate fi produsă prin aplicarea de transformări care conservă limbajul unei reţele Petri care nu este optimă. Prin urmare, folosirea practică a unui sistem a cărui modelare şi analiză se bazează pe o reţea Petri va necesita o colecţie de transformări care conservă limbajul.

Limbajele reţelelor Petri pot de asemenea să fie utile pentru analiza reţelelor Petri. În capitolul 4 s-au dezvoltat tehnici pentru determinarea de proprietăţi specifice ale reţelelor Petri, precum siguranţa, mărginirea, conservativitatea, viabilitatea, accesibilitatea, acoperabilitatea. Deşi aceste proprietăţi sunt importante (şi greu de stabilit), ele nu sunt singurele proprietăţi care trebuiesc de analizat la o reţea Petri. S-ar putea să fie necesar de stabilit corectitudinea modelării unui sistem arătând că proprietăţile specifice sistemului sunt satisfăcute. Pentru aceasta trebuie de dezvoltat fie noi tehnici pentru fiecare nouă proprietate, fie o tehnică generală de analiză pentru reţelele Petri.

83

Page 84: Teoria Retelelor Petri Si Modelarea Sistemelor

O clasă largă de întrebări poate fi pusă în termeni de secvenţe de acţiuni care sunt posibile în sistem. Dacă definim mulţimea de secvenţe de acţiuni posibile în sistem ca fiind limbajul sistemului, atunci putem analiza sistemul analizând limbajul sistemului. Aceasta ne poate oferi o tehnică generală de analiză a proprietăţilor specifice sistemului pentru sisteme arbitrare. Riddle [1972] a investigat analizele bazate pe limbajul sistemului modelat.

O altă utilizare a limbajelor reţelelor Petri ar fi în specificarea şi sinteza automată a reţelelor Petri. Dacă comportamentul care este dorit poate fi specificat ca limbaj, atunci este posibil să se sintetizeze automat o reţea Petri al cărei limbaj este limbajul specificat. Această reţea Petri poate fi folosită ca un controlor, garantând că sunt posibile toate secvenţele specificate şi numai acestea. Ambele expresii [Lauer şi Campbell 1974] au fost dezvoltate pentru a defini secvenţele de acţiuni posibile. Au fost dezvoltate tehnici pentru a crea automat o reţea Petri pornind de la o expresie dată.

O altă motivaţie pentru studiul limbajelor reţelelor Petri vine din dorinţa de a determina rezultate de decidabilitate pentru reţele Petri. Decidabilitatea multor proprietăţi ale reţelelor Petri este necunoscută. Decidabilitatea câtorva întrebări de bază asupra reţelelor Petri, precum accesibilitatea, face obiectul multor studii curente. O zonă în care întrebările asupra decidabilităţii au fost considerate este teoria limbajelor formale. Considerând limbajele reţelelor Petri, pot fi folosite concepte şi tehnici ale teoriei limbajelor formale pentru probleme legate de reţele Petri. Astfel se pot produce noi rezultate privitoare la reţelele Petri şi întrebările de decidabilitate aferente. Este de asemenea posibilă folosirea de metode din teoria reţelelor Petri pentru a obţine noi rezultate folositoare, referitoare la limbajele formale.

6.2 Concepte înrudite din teoria limbajelor formale

Teoria referitoare la reţelele Petri care s-a dezvoltat până acum este similară cu dezvoltarea altor părţi din teoria limbajelor formale. Câteva cărţi prezintă teoria clasică a limbajelor formale [Hopcroft şi Ullman 1969, Saloma 1993, Ginsburg 1966]. Multe dintre conceptele fundamentale din teoria limbajelor reţelelor Petri au fost împrumutate din teoria clasică a limbajelor formale.

Un alfabet este o mulţime finită de simboluri. Un şir este orice secvenţă de lungime finită de simboluri din alfabet. Şirul vid (nul) este şirul cu nici un simbol şi de lungime zero. Dacă este un alfabet, atunci * este mulţimea tuturor şirurilor de simboluri din , inclusiv şirul vid. + este mulţimea tuturor şirurilor nevide peste alfabetul .

* = + {}.Un limbaj este o mulţime de cuvinte peste un alfabet. Limbajele pot fi în general infinite, şi

de aceea reprezentarea limbajului poate fi o problemă. S-au dezvoltat două abordări pentru reprezentarea limbajelor. O abordare este să se definească un automat care atunci când generează un cuvânt dintr-un limbaj, să genereze simultan toate cuvintele limbajului. Alternativ, se poate defini o gramatică care specifică cum să se genereze un şir dintr-un limbaj prin aplicări succesive ale producţiilor gramaticii.

Restricţiile asupra formei automatelor şi gramaticilor care generează limbajele definesc clase de limbaje. Clasele de limbaje tradiţionale sunt: limbaje regulate (regular), independente de context (context-fee), dependente de context (context-sensitive) şi limbaje de tip 0, corespunzând la automate, automate push-down, automate liniare finite respectiv maşini Turing. Fiecare dintre aceste clase de limbaje este generată de clasa de automate corespunzătoare. Acest fapt conferă un excelent sens legăturii dintre teoria reţelelor Petri şi teoria limbajelor formale: definim clasa limbajelor reţelelor Petri ca fiind acea clasă de limbaje generată de reţele Petri. Detaliile definiţiei trebuie să fie similare cu detaliile pentru oricare dintre celelalte clase de limbaje.

Pentru exemplificare, să considerăm automatul cu stări finite. Un automat cu stări finite C este un 5-uplu (Q, , , s, F), unde Q este o mulţime finită de stări, este un alfabet de simboluri, : Q x Q este o funcţie de tranziţie, s Q este starea iniţială şi F Q este o mulţime finită de stări finale. Funcţia de tranziţie este extinsă în mod natural la o funcţie de la Q x * la Q. Limbajul L(C) generat de automatul cu stări finite este mulţimea de şiruri peste definită prin L(C) = { * / (s,) F}.

84

Page 85: Teoria Retelelor Petri Si Modelarea Sistemelor

Fiecărui automat cu stări finite i se asociază un limbaj şi clasa tuturor limbajelor care pot fi generate de automate cu stări finite formează clasa limbajelor regulate. Limbajul unui automat cu stări finite este o trăsătură caracteristică a automatului. Dacă două automate cu stări finite au acelaşi limbaj, atunci ele sunt echivalente.

6.3 Definiţia limbajelor reţelelor Petri

Aceleaşi concepte fundamentale folosite de un automat cu stări finite pentru a produce un limbaj regulat pot fi aplicate reţelelor Petri pentru a produce o teorie a limbajelor reţelelor Petri. În plus faţă de structura de reţea Petri definită de mulţimile de locaţii şi tranziţii (care corespund în general mulţimii stărilor şi funcţiei de tranziţie a automatului cu stări finite) este necesar să definim o stare iniţială, un alfabet şi o mulţime de stări finale. Specificarea acestor trăsături pentru o reţea Petri poate da naştere la diferite clase de limbaje pentru reţele Petri. Vom considera pe rând fiecare dintre aceste clase.

6.3.1 Starea iniţială

Starea iniţială a unei reţele Petri poate fi definită în mai multe feluri. Cea mai comună definiţie este să se permită unui marcaj iniţial să fie specificat drept stare iniţială. Totuşi, această definiţie poate fi modificată în câteva moduri. O limitare convenabilă este să restricţionăm starea iniţială la un marcaj cu un jeton într-o locaţie de pornire şi zero jetoane oriunde altundeva [Peterson 1976]. O altă definiţie mai generală acceptă o mulţime de marcaje iniţiale mai degrabă decât un singur marcaj.

Aceste trei definiţi spun în esenţă acelaşi lucru. Desigur, definiţia locaţiei de pornire este un caz special al definiţiei marcajului iniţial, care este un caz special al definiţiei mulţimii de marcaje iniţiale. Totuşi, dacă o mulţime M = {1, …,k} de marcaje iniţiale este necesară cu o definiţie a locaţiei de pornire, putem pur şi simplu să îmbogăţim reţeaua Petri cu o locaţie suplimentară p0 şi o mulţime de tranziţii . Tranziţia va avea ca intrare un jeton din p0 şi ca ieşire marcajul j. Astfel, comportamentul reţelei îmbogăţite va fi identic cu cel al unei reţele Petri cu o mulţime de marcaje iniţiale, exceptând faptul că fiecare secvenţă de tranziţii va fi precedată de dacă pentru începerea execuţiei a fost folosit marcajul j.

Vedem astfel că aceste trei definiţii ale stărilor iniţiale pentru o reţea Petri sunt în esenţă echivalente. Fără a respecta trandiţia, definim un limbaj al unei reţele Petri ca începând dintr-un marcaj simplu arbitrar .

6.3.2 Etichetarea reţelelor Petri

Pentru noţiunea de etichetare a reţelelor Petri există de asemenea mai multe definiţii. Trebuie să definim ce ar trebui să fie alfabetul al unei reţele Petri şi cum se asociază acesteia. Am indicat că simbolurile sunt asociate cu tranziţiile, astfel încât o secvenţă de tranziţii ce se declanşează generează un şir de simboluri pentru limbaj. Asocierea simbolurilor la tranziţii se face cu o funcţie de etichetare : T . Variaţiile în definiţia limbajului pot rezulta din diferite restricţii asupra funcţiei de etichetare.

O reţea Petri liber etichetată (free-labeled) este o reţea Petri unde toate tranziţiile sunt etichetate distinct [i.e., dacă (tj) = (ti), atunci ti = tj]. Clasa limbajelor de reţele Petri liber etichetate este o submulţime a clasei reţelelor Petri cu o funcţie de etichetare mai generală care nu cere etichete distincte.

A fost considerată o funcţie de etichetare chiar mai generală care admite tranziţii cu etichetă nulă, (tj) = . Aceste tranziţii -etichetate nu apar într-o propoziţie a unui limbaj Petri şi de aceea apariţia lor în execuţia unei reţele Petri trece neînregistrată. Aceste trei clase de funcţii de etichetare (libere, -libere şi cu -tranziţii) definesc trei variante de limbaje pentru reţele Petri.

85

Page 86: Teoria Retelelor Petri Si Modelarea Sistemelor

Fără investigări ulterioare, nu este evident care dintre aceste trei definiţii de funcţii de etichetare este cea mai rezonabilă. Probabil fiecare dintre cele trei este funcţia de etichetare cea mai folositoare pentru anumite aplicaţii. De aceea, va trebui să considerăm limbajele rezultate din fiecare definiţie posibilă a funcţiei de etichetare.

6.3.3 Stările finale ale unei reţele Petri

Definiţia stărilor finale pentru o reţea Petri are un efect major asupra limbajului unei reţele Petri. Au fost sugerate patru definiţii complet diferite ale mulţimii stărilor finale ale unei reţele Petri. Fiecare dintre acestea poate produce limbaje diferite pentru reţele Petri.

O definiţie este derivată din conceptul analog pentru automate cu stări finite. Se defineşte mulţimea stărilor finale F ca o mulţime finită de marcaje finale. Pentru această definiţie definim clasa de limbaje pentru reţele Petri de tipul L.

Definiţia 6.1:Un limbaj L este un limbaj pentru reţele Petri de tipul L dacă există o structură (P, T, I, O) de reţea Petri , o etichetare a tranziţiilor :T , un marcaj iniţial şi o mulţime finită F de marcaje finale astfel încât L = {() * / T* şi (, ) F}.

Clasa de limbaje pentru reţele Petri de tipul L este bogată şi puternică, dar s-a sugerat că cerinţa pentru ca un cuvânt să rezulte în exact o stare finală în scopul de a fi generat este contrară filozofiei iniţiale a reţelelor Petri. Acest comentariu se bazează pe observaţia că dacă (, tj) este definită pentru un marcaj şi o tranziţie tj, atunci (’, tj) este definită pentru orice ’ . Din acest comentariu definim o nouă clasă de limbaje, clasa de limbaje pentru reţele Petri de tipul G, după cum urmează.

Definiţia 6.2:Un limbaj L este un limbaj pentru reţele Petri de tipul G dacă există o structură (P, T, I, O) de reţea Petri, o funcţie de etichetare :T , marcajul şi o mulţime finită F de marcaje finale astfel încât L = {() * / T* şi există f F astfel încât (, ) f}.

O a treia clasă de limbaje pentru reţele Petri este clasa de limbaje pentru reţele Petri de tipul T. Ele sunt definite identificând mulţimea de stări finale folosită în definiţia limbajelor de tipul L cu mulţimea (nu neapărat finită) a stărilor terminale. O stare t este terminală dacă (t, tj) nu este definită pentru nici un tj T. Astfel, clasa limbajelor pentru reţele Petri de tipul T este după cum urmează.

Definiţia 6.3:Un limbaj L este limbaj pentru reţele Petri de tipul T dacă există o structură (P, T, I, O) de reţea Petri, o funcţie de etichetare : T şi un marcaj iniţial astfel încât L = {() * / T* şi (, ) este definită, dar ((, ), tj) nu este definită pentru nici un tj T}.

Încă o a patra clasă de limbaje este clasa limbajelor pentru reţele Petri de tipul P a căror mulţime de stări finale include toate stările accesibile. Aceste limbaje au proprietatea prefixului de vreme ce dacă * este un element al unui limbaj de tipul P, atunci toate prefixele ale lui ( = x pentru unii x *) sunt elemente ale aceluiaşi limbaj.

Definiţia 6.4:Un limbaj L este limbaj pentru reţele Petri de tipul P dacă există o structură (P, T, I, O) de reţea Petri, o funcţie de etichetare : T şi un marcaj iniţial astfel încât L = {() * / T* şi (, ) este definită}.

86

Page 87: Teoria Retelelor Petri Si Modelarea Sistemelor

6.3.4 Clase de limbaje pentru reţele Petri

În plus faţă de cele patru clase de limbaje bazate pe specificaţiile diferite ale mulţimii stărilor finale, am menţionat anterior variaţii datorate funcţiei de etichetare. În figura 6.1 există cele 12 clase de limbaje care rezultă din produsul direct al celor patru tipuri de specificări ale stărilor finale cu cele trei tipuri de funcţii de etichetare. În fiecare celulă din figura 6.1 se află notaţia care este folosită pentru referirea la fiecare clasă de limbaje ale reţelelor Petri.

Figura 6.1: Cele 12 clase de limbaje pentru reţelele Petri

Pentru a specifica un limbaj anume pentru reţelele Petri, trebuie definite patru cantităţi: structura de reţea Petri C = (P, T, I, O); funcţia de etichetare : T *; marcajul iniţial : P N şi mulţimea de marcaje finale F (pentru limbajele de tip L şi G). Definim = (C, , , F) ca fiind o reţea Petri etichetată cu structura de reţea Petri C, funcţia de etichetare , marcajul iniţial şi mulţimea stărilor finale F. Pentru o reţea Petri etichetată , pot fi definite 12 limbaje: L(), G(), T(), P(), Lt(), Gt(), Tt(), Pt(), L(), G(), T() şi P().

Diferitele definiţii ale limbajelor reţelelor Petri pot asocia limbaje diferite la o reţea Petri dată. Să considerăm, spre exemplu, reţeaua Petri din figura 6.2.

Figura 6.2: Un exemplu de reţea Petri pentru a ilustra diferitele clase de limbaje. Fiecare tranziţie este etichetată cu eticheta sa.

Marcajul iniţial (1, 0, 0, 0) este dat pe reţea şi fiecare tranziţie tj este etichetată cu (tj). Dacă definim F = {(0, 0, 1, 0)} (un jeton în locaţia p3), limbajul de tipul L este {ancbn / n 0}, limbajul de tipul G este {amcbn / m n 0}, limbajul de tipul T este {amcbnd / m n 0} şi limbajul de tipul P este {am / m 0} {amcbn / m n 0} {amcbnd / m n 0}. Pentru acest exemplu, toate cele patru tipuri de limbaje sunt diferite. Funcţia de etichetare dată este o funcţie de etichetare liberă, dar prin folosirea diferitelor funcţii de etichetare, pot fi produse, de asemenea, alte limbaje.

În ciuda diferenţelor între definiţii, clasele de limbaje pentru reţele Petri sunt mult înrudite. De exemplu, mulţimea de etichete libere este o submulţime a mulţimii de etichete non-, care este o submulţime a mulţimii de -etichete. Astfel, Lt L L, Gt G G, Tt T T şi Pt P P. De asemenea, fiecare limbaj de tip P este un limbaj de tip G unde F = {(0, 0,…, 0)}. Astfel: Pt Gt, P G şi P G.

Putem de asemenea arăta că fiecare limbaj de tip G sau G este de asemenea un limbaj de tip L respectiv L. Fie G un limbaj de tip G pentru o structură de reţea Petri (P, T, I, O), cu marcajul iniţial şi mulţimea stărilor finale F.

Construim o nouă reţea Petri etichetată cu aceleaşi locaţii, dar cu tranziţii suplimentare, după cum se arată în următoarele.

Pentru fiecare tj T, fie Bj mulţimea tuturor submultiseturilor corecte ale O(tj). Fiecare submultiset din Bj este folosit pentru a defini o nouă tranziţie cu aceeaşi etichetă şi intrări ca şi tj, dar cu submultisetul drept ieşire. Aceste noi tranziţii le adăugăm la mulţimea anterioară de tranziţii. De exemplu, dacă considerăm tranziţia etichetată cu a din reţeaua Petri din figura 6.2, multisetul său de intrare este {p1}, iar cel de ieşire {p1, p2}. Submultiseturile lui {p1, p2} sunt {p1}, {p2} şi {} (= ).

Liberă Fără - tranziţieTip L Lt L L

Tip G Gt G G

Tip T Tt T T

Tip P Pt P P

87

a

c d

p2

p4p3

b

p1

Page 88: Teoria Retelelor Petri Si Modelarea Sistemelor

Această tranziţie va da naştere altor trei noi tranziţii care se vor adăuga la reţea. Toate aceste trei tranziţii vor fi etichetate cu a şi vor avea ca intrare multisetul {p1}, dar multiseturile de ieşire vor fi cele trei subcategorii enumerate mai sus (o tranziţie pentru fiecare subcategorie). Vor fi de asemenea adăugate noi tranziţii pentru tranziţiile etichetate cu b, c, şi d, care vor avea aceleaşi intrări, dar ieşiri nule (vide) (deoarece ieşirile curente sunt multiseturi singleton şi de aceea singurul submultiset este ). Această nouă reţea este ilustrată în figura 6.3.

Figura 6.3: O reţea Petri al cărei limbaj de tip L este acelaşi cu limbajul de tip G al reţelei Petri din figura 6.2

Această nouă reţea a fost modificată astfel încât jetoanele suplimentare care depăşesc o stare finală din F nu mai trebuie produse, dacă unul selectează noua tranziţie care are mai puţine ieşiri. Astfel, limbajul de tipul L al noii reţele este acelaşi cu limbajul de tipul G al vechii reţele.

Această construcţie impune crearea de noi tranziţii, astfel încât nu poate fi trasă nici o concluzie despre relaţia dintre Gt şi Lt. Dar, G L, G L.

Construcţia de mai sus poate fi, de asemenea, uşor modificată pentru a arăta că o generalizare a definiţiei limbajelor de tipul L (pentru a permite marcaje finale cu specificare incompletă) nu schimbă clasele L şi L. Fie un marcaj final pentru o reţea Petri cu n locaţii un n-vector peste H {w}. Dacă o componentă a unui marcaj final este w, aceasta înseamnă că nu ne interesează care este valoarea acestei componente într-o stare finală. O stare s este stare finală dacă există un marcaj final f astfel încât pentru toţi i, i = 1…n, dacă fi w atunci si = fi. Aceasta este evident o definiţie mai generală decât definiţia limbajelor de tipul L dată mai devreme.

Acum considerăm un limbaj care este definit printr-o reţea Petri şi un marcaj final f incomplet specificat. Fie mulţimea tuturor locaţiilor pentru care fi = w. Pentru fiecare tranziţie tj T pentru care O(tj) , fie j = O(tj) şi j = O(tj) - j. Multisetul j conţine toate locaţiile unde marcajele nu contează, în timp ce multisetul j conţine toate locaţiile unde marcajele trebuie să fie exact cum s-a specificat în marcajul final f.

Adăugăm noi tranziţii reţelei cu multisetul de etichete şi intrări acelaşi cu multisetul de etichete şi intrări pentru tj, dar cu colecţia de ieşire j + , unde acoperă toate subultiseturile lui j. Această construcţie nu modifică în nici un fel comportamentul acelor locaţii care nu sunt în , dar permite acelor locaţii care nu contează să aibă orice număr de jetoane mai mic sau egal cu numărul de jetoane care ar fi apărut în reţeaua originală. Astfel, fiecare cuvânt din limbajul generalizat al reţelei originale atinge o stare s astfel încât s*i = fi pentru fi w şi si = 0 pentru fi = w. Astfel, limbajul de tip L pentru reţeaua Petri construită cu un marcaj final f’ (unde toate w-urile din marcajul f specificat incomplet au fost înlocuite cu 0) este acelaşi cu limbajul generalizat al reţelei originale (aşa cum este definit de marcajul final f incomplet specificat).

Pentru un limbaj definit de o mulţime de marcaje incomplet specificate (în opoziţie cu cazul unui singur astfel de marcaj, pe care tocmai l-am discutat) folosim faptul că limbajele L (şi L) sunt închise la reuniune (vezi capitolul 6.5.2) pentru a arăta că limbajul este încă un limbaj de tipul L (sau L).

Cu introducerea marcajelor finale incomplet specificate putem arăta că limbajele de tipul T sunt de asemenea limbaje de tipul L (cu excepţia probabil a limbajelor libere de tipul L).

O stare finală pentru un limbaj de tipul T este astfel încât nici o tranziţie tj nu se poate declanşa (adică, I(tj) oricare ar fi tj T). Condiţia care specifică o stare finală pentru un limbaj de tipul T este de aceea exact condiţia opusă condiţiei care specifică o stare finală pentru un limbaj de tipul G (Putem numi limbajele de tipul T inversele limbajelor de tipul G). Nu este dificil de văzut

88

b

p3

dc

c

a

ad b

p2

p1

p4

a

d

Page 89: Teoria Retelelor Petri Si Modelarea Sistemelor

că o astfel de mulţime de marcaje poate fi descrisă printr-o mulţime finită de marcaje incomplet specificate (cum s-a făcut în capitolul 5.4). De exemplu, condiţia [ (2,0) şi (1,1)] este echivalentă cu [ = (0,20) sau = (1,0)]. Un limbaj de tipul T (sau, mai general, un limbaj invers unui limbaj de tipul G) poate astfel fi rescris ca un limbaj de tipul L generalizat (adică, incomplet specificat) şi deci ca un limbaj de tipul L. Astfel, T L şi T L.

Se ştie că fiecare limbaj de tipul L poate fi generat de către o reţea Petri în care fiecare tranziţie are o locaţie de intrare, şi în care unicul marcaj final este marcajul zero, în care nici o tranziţie nu se poate declanşa [Hack 1975b]. Dacă adăugăm la fiecare locaţie o -tranziţie cu o singură intrare şi o singură ieşire a acelei locaţii (adică, o buclă), atunci limbajul nu este schimbat şi marcajul zero devine singurul marcaj terminal.

Figura 6.4 reprezintă grafic relaţiile dintre clasele de limbaje pentru reţele Petri pe care tocmai le-am obţinut. Un arc între clase indică faptul că o clasă de limbaje pentru reţelele Petri este inclusă într-o altă clasă de limbaje pentru reţelele Petri.

Figura 6.4: Relaţiile cunoscute între clasele de limbaje pentru reţele Petri. Un arc de la o clasă A la o clasă B înseamnă că clasa A conţine clasa B

6.4 Proprietăţile limbajelor reţelelor Petri

Studiul limbajelor reţelelor Petri este de abia la început şi cunoştinţele actuale despre proprietăţile claselor de limbaje nou definite sunt mărginite. Puterea reţelelor Petri este reflectată de varietatea de clase potenţial diferite de limbaje pentru reţele Petri care pot fi definite. Stadiul incipient în care se află cercetările în această direcţie este reflectat de incapacitatea de a arăta relaţiile complete dintre aceste limbaje, sau de a argumenta că numai câteva dintre aceste clase sunt importante. Aceasta dă naştere la o largă zonă de studiu, în necesitatea de a dezvolta proprietăţile a 12 clase diferite de limbaje.

Evident nu este posibilă dezvoltarea aici a tuturor celor 12 clase, şi de aceea ne vom limita la a considera numai o clasă de limbaje pentru reţele Petri, limbajele de tipul L. Motivele principale pentru această limitare sunt spaţiul şi faptul că acest limbaj a fost cercetat în literatură (Peterson, 1973, Hack 1975b, Peterson 1976). Unele rezultate au fost de asemenea obţinute de Hack [1975b] pentru limbajele prefixate (de tipul P) şi vor fi prezentate în acest rezumat. Limbajele de tipul G şi cele de tipul T au fost definite, dar nu s-au făcut studii asupra lor. Amintiţi-vă de asemenea că clasa de limbaje de tipul L include clasele de limbaje de tipul G, T şi P. Astfel, limbajele de tipul L sunt într-un anumit sens clasa de limbaje pentru reţele Petri cea mai cuprinzătoare, şi astfel este potrivit ca această clasă să fie cercetată mai întâi.

Cercetarea noastră asupra proprietăţilor limbajelor reţelelor Petri de tipul L se va concentra asupra a două aspecte. Mai întâi vom prezenta proprietăţile de închidere ale reţelelor Petri în cazul câtorva operaţii comune (concatenare, reuniune, concurenţă, intersecţie, inversare, complementare, concatenare infinită şi substituţie). Apoi vom considera relaţia dintre limbajele reţelelor Petri şi limbajele formale clasice: regulate, independente de context, dependente de context şi de tipul zero. Această prezentare oferă o înţelegere a puterii şi limitărilor limbajelor reţelelor Petri de tipul L,

- tranziţie Fără LiberăTip T T T Tt

Tip L L L Lt

Tip G G G Gt

Tip P P P Pt

89

Page 90: Teoria Retelelor Petri Si Modelarea Sistemelor

indicând de asemenea care este modul în care trebuie cercetate celelalte clase de limbaje pentru reţele Petri.

Deşi suntem interesaţi de întreaga clasă a limbajelor pentru reţele Petri de tipul L, vom limita discuţia numai la o mulţime finită de reţele Petri în forma standard. Această limitare este făcută cu scopul de a ne putea concentra atenţia asupra demonstraţiilor şi construcţiilor şi nu limitează clasa limbajelor reţelelor Petri. Pentru fiecare limbaj al reţelelor Petri, pot fi multe reţele Petri care să genereze acel limbaj; alegem să lucrăm numai cu acele reţele care au anumite proprietăţi. Pentru a arăta că astfel nu se reduce mulţimea limbajelor, vom arăta că pentru fiecare limbaj de reţea Petri de tipul L există o reţea Petri în formă standard care îl generează.

Definiţia 6.5:O reţea Petri etichetată = (C, , , F) cu limbajul L() în forma standard satisface următoarele proprietăţi:

1) Marcajul iniţial are exact un jeton într-o locaţie de pornire p şi zero jetoane în restul locaţiilor, pj O(tj) pentru nici un tj T.

2) Există o locaţie pf P astfel încât:a) F = {pf} dacă L(), sau F = {pf, ps} dacă L()b) pf I(tj) pentru nici un tj Tc) (’, tj) este nedefinită pentru toţi tj T şi ’ R(C, ) care are un jeton în pf [adică,

’(pf) > 0]

Execuţia unei reţele Petri în forma standard începe cu un jeton în locaţia de pornire. Prima tranziţie care se declanşează mută jetonul din locaţia de pornire, şi după această declanşare locaţia de pornire este întotdeauna goală. Eventual, reţeaua Petri se poate opri punând un jeton în locaţia finală. Acest jeton nu poate fi mutat din locaţia finală deoarece nici o tranziţie nu are intrarea din locaţia finală şi deoarece toate tranziţiile sunt dezactivate. Astfel, execuţia unei reţele Petri în formă standard este simplă şi finită. Aceste fapte sunt foarte utile când se construiesc componentele reţelei Petri. Pentru a arăta că reţelele Petri în forma standard nu sunt mai puţin puternice decât cele în forma generală, vom demonstra următoarea teoremă:

Teorema 6.1:Fiecare reţea Petri este echivalentă cu o reţea Petri în forma normală.

Demonstraţie:Demonstraţia este constructivă. Fie = (C, , , F) o reţea Petri etichetată, cu C = (P, T, I,

O). Arătăm cum se construieşte o reţea ’ = (C’, ’, ’, F’), cu C’ = (P’, T’, I’, O’) dată în formă normală (figura 6.5).

Pentru început, definim trei noi locaţii pr, pf şi ps care nu sunt în P. Locaţia ps este locaţia de pornire, locaţia pf este locaţia finală şi pr este o locaţie de rulare; un jeton trebuie să fie în pr pentru a permite oricărei tranziţii din T să se declanşeze. Marcajul iniţial al lui C’ va avea un jeton în ps dacă

L(C’), sau în pf dacă L(C’).

90

Locaţie de pornire

Locaţie finală

ps

pf

pr

Locaţie de rulare

Reţea Petri originală

'jt

'''

ijt

''

kjt

Page 91: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 6.5: Construcţia unei reţele Petri în forma standard. Execuţia reţelei este aceeaşi cu cea a reţelei originale

Acum dorim să fim siguri că fiecare secvenţă de tranzacţii din C care ne conduce de la marcajul iniţial la marcajele finale este minimizată în C`. Pentru aceasta considerăm trei tipuri de şiruri în L(). Mai întâi, şirul vid este corect mânuit de definiţia lui F`. Putem determina dacă L() verificând dacă marcajul iniţial este şi marcaj final, adică dacă F.

În al doilea rând, pentru toate şirurile de lungime 1 din L(), includem în C` o tranziţie specială de la ps la pf după cum urmează: pentru cu L(), definim t T` cu I(t) = {ps} şi O(t) = {pf}. Eticheta pentru t este . Putem determina dacă L() prin verificarea tuturor tranziţiilor tj T cu (tj) = , pentru a vedea dacă (, tj) F.

În cele din urmă, considerăm toate şirurile de lungime mai mare sau egală cu 1. Aceste şiruri

rezultă dintr-o secvenţă de tranziţii . Am putea să definim o secvenţă , cu a şi b

tranziţii noi. Noua tranziţie a va avea ca intrare un jeton din ps şi va scoate la ieşire marcajul iniţial al lui C, plus un jeton în pr. Fiecare tranziţie din T’ este aceeaşi cu secvenţa tj din T cu excepţia faptului că are pe pr atât ca intrare cât şi ca ieşire. Aceasta ne permite să dezactivăm toate tranziţiile din T’ prin mutarea jetonului din pr. În cele din urmă, tranziţia b va muta jetonul din pr, va scoate un marcaj final şi va duce un jeton la pj. Cu această construcţie, jetonul din poziţia de intrare se va

muta în poziţia finală din C’ numai ca rezultat al unei secvenţe care corespunde unei

secvenţe care ne conduce de la la un marcaj final din C.Din nefericire, în acest mod se va produce o secvenţă care este prea lungă, deoarece

simbolurile suplimentare corespunzătoare tranziţiilor a şi b există pentru C’ dar nu şi pentru C. O soluţie ar fi o etichetare nulă a tranziţiilor a şi b, dar limbajele de tipul L nu permit etichete nule.

Pentru a rezolva această problemă vom încerca să reunim tranziţiile a şi într-o tranziţie , şi

tranziţiile b şi într-o tranziţie . Pentru aceasta, pentru toţi tj T vom defini următoarele

tranziţii în T’:1. Definim T, cu I( ) = I(tj) {pr} şi O( ) = O(tj) {pr}2. Dacă I(tj) (adică intrările pentru tj sunt o submulţime a marcajului iniţial, astfel încât tj poate

fi prima tranziţie care se declanşează), atunci definim o tranziţie cu I( ) = {ps} şi O( ) = - I(tj) + O(tj) {pr}.

3. Dacă O(tj) ’ pentru unele marcaje ’ F (adică tj poate fi ultima tranziţie care se declanşează, care conduce la un marcaj final), atunci definim o tranziţie cu I( ) = ’ - O(tj) +

I(tj) {p} şi O( ) = {pf}.

91

Page 92: Teoria Retelelor Petri Si Modelarea Sistemelor

Acum definim funcţia de etichetare ’ prin ’( ) = ’( ) = ’( ) = (tj). Orice şir

L() este prin definiţie generat de o secvenţă cu = ( ). Prin construcţie, =

’ ( ), şi astfel L(’). Prin urmare, deoarece L() = L(’), cele două reţele şi ’

sunt echivalente. Prin construcţie, ’ este în forma standard.Figura 6.6 dă o reţea Petri simplă care nu este în forma standard. Aplicând construcţia din

demonstraţie acestei reţele se produce reţeaua Petri în forma standard din figura 6.7.

6.5 Proprietăţi de închidere

Vom examina acum proprietăţile de închidere ale limbajelor reţelelor Petri pentru câteva

forme de compunere (reuniune, intersecţie, concatenare, concurenţă şi substituţie) şi pentru unele operaţii (inversare, complementare şi concatenare infinită). Motivaţia acestei examinări are două puncte. Mai întâi, ne face să înţelegem mai bine proprietăţile şi limitele ca limbaje ale limbajelor reţelelor Petri. În al doilea rând, multe dintre aceste două compuneri reflectă cât de largi sisteme se pot construi prin compunerea de sisteme mai mici. Astfel, această investigare ne poate ajuta în dezvoltarea de tehnici de sinteză.

Cea mai mare parte a proprietăţilor de compunere se ocupă de compuneri de limbaje de reţele Petri. Pentru aceasta, presupunem două limbaje de reţele Petri, L1 şi L2. Ştim că fiecare dintre aceste limbaje este generat de nişte reţele în formă standard. De aceea, considerăm două reţele Petri etichetate în formă standard, i = (Ci, i, i, Fi), i = 1…2 cu Li = L(i). Deoarece sunt în forma standard, reţeaua i are o locaţie de pornire Pi. De asemenea, Fi = { , } sau { }, i = 1…2.

Arătăm cum, din aceste două reţele Petri etichetate, se construieşte o nouă reţea Petri etichetată ’ = (C’, ’, ’, F’) cu limbajul L(’) care este compunerea dorită a lui L1 cu L2. Ilustrăm aceste construcţii cu exemple de reţele Petri. Vom începe considerând compunerea a două limbaje de reţele Petri prin concatenare, reuniune, intersecţie şi concurenţă. Apoi vom considera inversa şi complementara unui limbaj de reţea Petri şi, în final, substituţia.

6.5.1 Concatenarea

Multe sisteme sunt compuse din două subsisteme secvenţiale. Fiecare dintre subsisteme poate fi exprimat individual ca o reţea Petri cu propriul său limbaj de reţea Petri. Când cele două sisteme sunt combinate secvenţial, execuţia rezultată este concatenarea execuţiei limbajului primei

92

p2

p1

p3

t4

t3

t2

t1

a

c

b

a

pr

p2 p1 p3

pS

pfaa

b

baac

c

'2t

'1t

'3t

'4t

''1t

''3t '''

2t

'''4t

Figura 6.6: O reţea Petri care nu este în forma standard. Locaţia p1 este atât locaţie de pornire cât şi locaţie finală.

Figura 6.7: O reţea Petri în forma standard echivalentă cu reţeaua Petri din figura 6.6

Page 93: Teoria Retelelor Petri Si Modelarea Sistemelor

reţele Petri cu o execuţie a celui de-al doilea. Concatenarea a două limbaje poate fi formal exprimată astfel: L1L2 = {x1x2 / x1 L1, x2 L2}.

Teorema 6.2:Dacă L1 şi L2 sunt limbaje de reţele Petri, atunci L1L2 este un limbaj de reţea Petri.

Demonstraţie:Definim astfel încât locaţia finală a lui 1 să se suprapună peste locaţia de pornire a lui 2. Astfel, tranziţia care pune un jeton în semnalând sfârşitul execuţiei lui 1, semnalează de asemenea începutul unei execuţii a lui 2. De aceea, orice şir din concatenarea lui L1 cu L2 trasează o cale de la

la şi apoi la în reţeaua Petri compusă şi este un element al L(’). Similar, dacă un şir este generat de C’, trebuie să fie compus dintr-un şir generat de 1 şi un şir generat de 2.

Definiţia formală a lui ’ trebuie să ia în considerare şirul vid şi astfel este mai complexă, dar poate fi definită ca uniunea lui 1 şi 2 la care se adaugă următoarele tranziţii suplimentare. Pentru fiecare tranziţie tj T2 cu I2(tj) = { }, introducem o nouă tranziţie cu I’( ) = { } şi O’( ) =

O2(tj). Dacă F1, atunci adăugăm de asemenea cu I’( ) = { } şi O’( ) = O2(tj). Definim ’(

) = 2(tj) şi ’( ) = 2(tj). Noua mulţime finală este F’ = F1 F2 dacă F2; altfel, F’ = F2.

Această teoremă arată că limbajele reţelelor Petri sunt închise la concatenare. Figura 6.8 prezintă construcţia pentru L1 = (a + b)+ şi L2 = anbn.

Figura 6.8: Ilustrează concatenarea a două limbaje de reţele Petri

6.5.2 Uniunea

O altă metodă comună de combinare a sistemelor este uniunea. În această compunere va fi executat un singur subsistem. Aceasta este similară cu reuniunea mulţimilor şi este o compunere de limbaje obişnuită ce poate fi definită prin: L1 L2 = {x / x L1 sau x L2}.

Teorema 6.3:Dacă L1 şi L2 sunt limbaje de reţele Petri, atunci L1 L2 este un limbaj de reţea Petri.

Demonstraţie:Demonstraţia acestei teoreme este similară cu demonstraţia teoremei anterioare. Definim o

nouă reţea Petri ’ astfel încât L(’) = L1 L2. Noua reţea Petri combină cele două locaţii de pornire 93

pS1 pf1

a,b

a,b

a,b

a,bpS2 pf2

b

b

b

b

a

a

L(C1) = (a + b)+ L(C2) = anbn

pS1

a,b

a,b

a,b

a,bpf2

b

b

b

b

a

a

pf1 = pS2

L = (a + b)+anbn, n 1

Page 94: Teoria Retelelor Petri Si Modelarea Sistemelor

într-o nouă locaţie de pornire. Apoi, prima tranziţie care se declanşează mută jetonul din poziţia de intrare şi fie reţeaua Petri 1 (dacă tranziţia a fost în T1), fie reţeaua Petri 2 (dacă tranziţia a fost în T2) continuă să funcţioneze la fel cum ar fi făcut singură.

Formal definim o nouă locaţie de pornire şi noi tranziţii pentru fiecare T1 cu I(

) = { } şi pentru fiecare T2 cu I( ) = { }. Definim I’( ) = { } şi I’( ) = { } cu

O’( ) = O1( ) şi O’( ) = O2( ). Funcţia de etichetare ’( ) = 1( ) şi ’( ) = 2( ). Noul

marcaj iniţial are un jeton în Noua mulţime finală este F’ = F1 F2. Dacă F1 sau F2

atunci F’.Figura 6.9 ilustrează construcţia cu L1 = a(a + b)b şi L2 = ambn (m > n > 1).

Figura 6.9: Ilustrarea uniunii a două limbaje de reţele Petri. L(C’) = a(a+b)b + ambn,(m > n > 1)

6.5.3 Concurenţa

O altă cale de combinare a două reţele Petri este prin a permite ca execuţiile a două sisteme să se realizeze concurent. Astfel se realizează toate intercalările posibile ale unei execuţii a unei reţele Petri cu o execuţie a unei alte reţele Petri. Riddle [1972] a introdus operatorul || pentru a reprezenta această concurenţă. Acesta poate fi definit pentru a, b şi x1, x2 * prin:

a || = || a = aax1 || bx2 = a(x1 || bx2) + b(ax1 || x2)Compunerea concurentă a două limbaje este atunci L1 || L2 = {x1 || x2 / x1 L1, x2 L2}.Ca un exemplu simplu, dacă L1 = {ab} şi L2 = {c} atunci L1 || L2 = {abc, acb, cab}.Este uşor de arătat că limbajele regulate, dependente de context şi de tipul 0 sunt închise la

concurenţă demonstrând că produsul direct a două automate cu stări finite, automate liniare finite sau maşini Turing este tot un automat cu stări finite, un automat liniar finit, respectiv o maşină Turing. Deoarece produsul direct a două automate stivă push-down nu poate fi transformat într-un

94

pf1pS1

a

a

b

b

pS2 pf2

a

a

b

b

a

a

L(C1) = a(a + b)bL(C2) = ambn

a

a

b

b

p’S p’

f

a

a

b

b

a

a

L(C’) = a(a+b)b + ambn

Page 95: Teoria Retelelor Petri Si Modelarea Sistemelor

alt automat stivă push-down, limbajele independente de context nu sunt închise la concurenţă. Pentru limbajele de reţele Petri, avem următoarea teoremă.

Teorema 6.4:Dacă L1 şi L2 sunt limbaje de reţele Petri, atunci L1 || L2 este un limbaj de reţea Petri.

Demonstraţie:Reţeaua Petri construită pentru a genera compunerea concurentă a lui L1 cu L2 (se dau

reţelele Petri ce generează aceste limbaje de reţele Petri) este practic o reţea Petri care pune jetoane în poziţiile de pornire atât ale lui 1 cât şi ale lui2, ca marcaj iniţial, şi defineşte noua mulţime de marcaje finale ca fiind compusă din orice marcaj care este în F1 (peste locaţiile din P1) şi în F2

(peste poziţiile din P2).Această construcţie este ilustrată în figura 6.10 pentru L1 = a(a + b)+ şi L2 = ca3ncb2nc.

Figura 6.10: Ilustrează compunerea concurentă a două limbaje de reţele Petri

6.5.4 Intersecţia

Ca şi în cazul uniunii, compunerea prin intersecţie este similară cu operaţia de intersecţie din teoria mulţimilor şi este dată pentru un limbaj de reţea Petri prin L1 L2 = {x / x L1 şi x L2}.

Teorema 6.5:Dacă L1 şi L2 sunt limbaje de reţele Petri, atunci L1 L2 este un limbaj de reţea Petri.

Demonstraţie:Construcţia unei reţele Petri pentru a genera intersecţia a două limbaje de reţele Petri este

destul de complexă. La un anumit punct în şirul generat, dacă o tranziţie se declanşează într-una din reţelele Petri, atunci trebuie să existe o tranziţie în cealaltă reţea Petri, cu aceeaşi etichetă, care să se declanşeze de asemenea. Când în fiecare reţea Petri există mai mult de o tranziţie cu aceeaşi etichetă trebuie să considerăm toate perechile posibile de tranziţii din cele două reţele Petri. Pentru fiecare din aceste două perechi, creăm o nouă tranziţie care se declanşează dacă şi numai dacă în

95

pS1 pf1

a

a,b a

b

pS2 pf2

c c c

ab

p’f

a

b

p’S

pS1 pf1

a

a a

bb

pS2 pf2

c c c

ab

L(C1) = a(a + b)+ L(C2) = ca3ncb2nc

L(C’) = a(a + b)+|| ca3ncb2nc ||

Page 96: Teoria Retelelor Petri Si Modelarea Sistemelor

vechile reţele se declanşează ambele tranziţii. Aceasta se realizează egalând multisetul de intrare (ieşire) al noii tranziţii cu multisetul sumă (vezi anexa) al multiseturilor de intrare (ieşire) ale perechilor de tranziţii din vechile reţele Petri. Astfel, dacă tj T1 şi tk T2 sunt astfel încât (tj) = (tk), atunci avem o tranziţie tj,k T’ cu I’(tj,k) = I1(tj) + I2(tk) şi O’(tj,k) = O1(tj) + O2(tk). Unele dintre aceste tranziţii au intrări care includ locaţia de pornire. Dacă pentru o tranziţie tj,k din T’, aşa cum s-a definit mai sus, I’(tj,k) = { }, atunci înlocuim tranziţia cu o nouă tranziţie , unde I’( ) =

{ }.Această construcţie plasează cele două reţele Petri iniţiale într-un mod de execuţie identic pe

paşi. Reţeaua Petri compusă generează intersecţia limbajelor L1 şi L2. Construcţia este demonstrată în figura 6.11.

Figura 6.11: Ilustrează intersecţia a două limbaje de reţele Petri

6.5.5 Inversa

Spre deosebire de operaţiile de compunere pe care le-am studiat anterior, operaţia de inversare pare să prezinte interes doar din punct de vedere academic.

Inversa unei propoziţii xR este propoziţia x cu simbolurile în ordine inversă. Definim aceasta recursiv prin:

aR = a(ax)R = xRa, pentru a , x +

Atunci pentru un limbaj avem LR = {xR / x L}.

Teorema 6.6:Dacă L este un limbaj de reţea Petri, atunci şi LR este un limbaj de reţea Petri.

Demonstraţie:Construcţia este trivială. Marcajul de pornire şi cel final se interschimbă şi la fel şi

multiseturile de intrare şi ieşire pentru fiecare tranziţie. Apoi, L(’) = L()R. Acesta doar porneşte reţeaua Petri în sens invers şi inversează toate şirurile generate.

6.5.6 Complementara

Complementara I a unui limbaj L peste un alfabet este mulţimea tuturor şirurilor din *

care nu sunt în L. Această relaţie poate fi exprimată prin I = * - L, sau I = {x * / x L}.

96

p’fp’

S

a c

c

a

L(C’’) = ca3ncb2nc ca2ncb3nc

pS1 pf1

c c c

a

pS2 pf2

c c c

ab

L(C1) = ca3ncb2nc L(C2) = ca2ncb3nc

b

Page 97: Teoria Retelelor Petri Si Modelarea Sistemelor

Operaţia de complementare asupra unui limbaj de reţea Petri poate fi utilă în analiza reţelelor Petri deoarece în verificările secvenţelor de stări s-au putea să fie mai uşor de verificat existenţa în complementară decât nonexistenţa în limbajul reţelei Petri.

Închiderea la complementară pentru limbajele Petri de tipul L este o problemă deschisă. Totuşi, Crespi-Reghizzi şi Mandrioli [1977] au arătat că unele limbaje de reţele Petri nu sunt închise la complementară; aceasta înseamnă că există limbaje de reţele Petri ale căror complemente nu sunt tot limbaje de reţele Petri.

6.5.7 Compunerea repetată

Până acum am considerat operaţiile de uniune, intersecţie, concatenare, concurenţă, inversă şi complementare. Cu excepţia ultimei operaţii, am putut să realizăm construcţii astfel încât să arătăm că limbajele de reţele Petri sunt închise la operaţiile respective.

Din aceste rezultate putem să demonstrăm imediat următorul corolar.

Corolar 6.1:Limbajele de reţele Petri sunt închise la aplicarea de un număr finit de ori, în orice ordine, a operaţiilor de uniune, intersecţie, inversare, concurenţă şi concatenare.

Demonstraţie:Demontraţia rezultă din teoremele de mai sus.

Se poate defini o nouă operaţie prin eliminarea constrângerii de a se permite numai un număr finit de aplicări. Concatenarea indefinită (închiderea Kleene) a unui limbaj este mulţimea tuturor elementelor construite (de orice lungime) din acest limbaj. Închiderea Kleene a unui limbaj L este reprezentată prin L* şi este definit prin L* = L LL LLL …

Operaţia poate fi de utilitate practică. Concatenarea infinită este similară cu modelarea unei bucle. De asemenea, este cunoscut că limbajele regulate, independente de context şi cele de tipul 0 sunt închise la concatenarea indefinită [Hopcroft şi Ullman 1969]. Din acest motiv, este neaşteptat şi poate un ghinion că limbajele de reţele Petri nu sunt închise la concatenarea indefinită.

Această situaţie a apărut datorită naturii finite a combinaţiei reţelelor Petri (cu număr finit de locaţii şi tranziţii) şi a naturii permisive a stărilor [declanşarea tranziţiilor este permisă, dar nu este obligatorie]. Pentru a construi o reţea Petri care să genereze concatenarea indefinită a unui limbaj de reţea Petri, se impune, în general, reutilizarea unor porţiuni din reţeaua Petri. Aceasta permite jetoanelor să fie generate şi depozitate în unele dintre locaţiile care sunt refolosite. La o repetare ulterioară a reţelei Petri, aceste jetoane pot fi folosite pentru a permite tranziţiilor să se declanşeze când nu ar trebui.

Demonstraţia că reţelele Petri nu sunt închise la concatenarea indefinită apare ca fiind foarte dificilă. Probabil o idee despre abordare poate fi dată prin considerarea unui exemplu. Am văzut deja că anbn (n > 1) este un limbaj de reţea Petri. Afirmăm că (anbn)* nu este un limbaj de reţea Petri. Toate generatoarele lui (anbn)* trebuie să aibă unele locaţii, sau mulţimi de locaţii, care codifică numărul n pentru fiecare porţiune a şirului. Aceste jetoane controlează generarea simbolurilor b. Pentru ca o reţea Petri să genereze (anbn)* este necesar să se folosească aceste locaţii mai mult decât o dată. Dar, de vreme ce reţeaua este permisivă, nu există nici o cale de a garanta că aceste locaţii sunt vide înainte de a fi refolosite. Astfel, pentru fiecare reţea Petri care încearcă să genereze (anbn)*

există anumiţi i, j, k astfel încât reţeaua Petri să genereze, de asemenea, nişte şiruri de forma următoare: , cu ni > nj. Kosaraju [1973] a dat bazele pentru o demonstraţie formală a faptului că limbajele de reţele Petri nu sunt închise la concatenarea indefinită.

Pentru cei familiarizaţi cu teoria limbajelor formale a familiei limbajelor abstracte (AFL) [Ginsburg 1975], este uşor de probat că limbajele de reţele Petri nu sunt închise la concatenarea infinită. Este bine cunoscut că cele mai mici AFL închise la intersecţie şi conţinând {anbn} conţin orice mulţime recursiv enumerativă. Astfel, deoarece limbajele de reţele Petri sunt închise la

97

Page 98: Teoria Retelelor Petri Si Modelarea Sistemelor

intersecţie şi {anbn} este un limbaj de reţea Petri, dacă ar fi închise la concatenare indefinită, ar fi un astfel de AFL. Totuşi, ştim că {wwR} nu este un limbaj de reţea Petri (vezi secţiunea 6.6.2) şi astfel limbajele de reţea Petri nu sunt închise la concatenarea indefinită. Această argumentare se datorează lui Mandrioli.

Există totuşi o subclasă de limbaje de reţele Petri care este închisă la concatenarea nedefinită. Aceasta este clasa de limbaje de reţele Petri pentru acele reţele Petri care sunt corect terminate. Corect terminarea a fost definită de Gostelow [1971] pentru modele de calcul complexe cu grafuri cu bucle duble.

Definiţia 6.6:O reţea Petri este corect terminată dacă de fiecare dată când se termină este sigur că:(1) în reţeaua Petri rămâne numai un jeton şi că acesta este în locaţia finală, şi că(2) numărul de jetoane folosite în reţeaua Petri este finit.

Observăm mai întâi că a doua parte a definiţiei nu este de fapt o restricţie deoarece dacă reţeaua Petri se termină, atunci ea se termină într-o cantitate finită de timp şi de aceea generează numai un număr finit de jetoane. Dar prima parte a definiţiei este o restricţie. Putem vedea reţeaua Petri ca un automat care generează şiruri de simboluri. Punem un jeton în intrarea automatului şi un şir de simboluri este tipărit pe o bucată de bandă, pentru noi. Eventual, un semnal luminos ne poate avertiza când automatul se opreşte (adică nu mai sunt tranziţii active). Într-o utilizare normală, înainte de a putea utiliza ieşirea printată, trebuie să ne uităm în interiorul automatului şi să verificăm dacă s-a ajuns la un marcaj final. Dacă nu s-a ajuns la un marcaj final, atunci trebuie să respingem ieşirea şi să încercăm din nou. Dacă reţeaua Petri se termină corect, atunci nu mai este nevoie să ne uităm în interiorul automatului, deoarece ni se garantează că s-a ajuns la un marcaj final.

Iată cum poate fi folosită o reţea Petri care se termină corect pentru a construi o reţea Petri care să genereze concatenarea indefinită a limbajului său:1. Conectăm locaţia finală cu locaţia de pornire.2. Cum despre reţeaua Petri se ştie că trebuie să fie vidă de fiecare dată când un jeton apare în

locaţia finală, nu se va lăsa nici un jeton în reţeaua Petri pentru a cauza tranziţii fictive la reutilizarea reţelei Petri.

Din nefericire, această subclasă de reţele Petri nu este foarte interesantă de vreme ce putem arăta că toate reţelele Petri care se termină corect sunt automate cu stări finite şi viceversa. Prin urmare, limbajele reţelelor Petri care se termină corect sunt limbaje regulate şi este deja cunoscut că această clasă de limbaje este închisă la concatenarea indefinită. Astfel vedem că proprietăţile sistemelor modelate de limbajele reţelelor Petri sunt mărginite la repetări finite de subsisteme mai mici, sau la repetări indefinite de subsisteme finite mai mici.

98

Page 99: Teoria Retelelor Petri Si Modelarea Sistemelor

6.5.8 Substituţia

Am menţionat că sistemele pot fi proiectate şi modelate ierarhic cu ajutorul reţelelor Petri. Aceasta implică specificarea în primul rând a unei ieşiri a sistemului care să fie rafinată mai apoi prin substituiri ale operaţiilor în termeni de alte operaţii. Cu reţelele Petri acest rafinament poate lua forma substituirii unei tranziţii sau a unei locaţii dintr-o reţea Petri completă. De aceea ne-am limitat atenţia la a considera problema substituirii unei tranziţii (sau operaţii) într-o subreţea a unei reţele Petri.

Când se doreşte să se substituie o reţea Petri printr-o altă reţea Petri acest lucru se poate considera ca fiind o compunere a limbajelor celor două reţele Petri. Deoarece operaţia este reprezentată printr-un simbol din , substituţia limbajului L2 al unei reţele Petri pentru un simbol într-un alt limbaj de reţea Petri L1 este definită ca înlocuirea tuturor apariţiilor lui din L1 prin mulţimea de şiruri din L2. Limbajele reţelelor Petri sunt închise la substituţie dacă rezultatul unei substituţii ce implică un limbaj de reţea Petri este de asemenea tot un limbaj de reţea Petri. Variaţii asupra substituţiei includ substituţia finită, când L2 trebuie să fie o mulţime finită de şiruri, şi homeomorfismul, când L2 trebuie să fie un şir simplu (single-string).

Din nou, din nefericire, avem un rezultat negativ. Limbajele de reţele Petri nu sunt închise la substituţia generală. Aceasta se arată imediat considerând L1 = c* şi substituirea lui L2 = anbn prin c în L1. Problema este din nou rezolvată printr-o posibilă reutilizare a unei reţele Petri. Totuşi, pentru substituţia finită şi homeomorfism, vedem că L2 este un limbaj regulat şi de aceea pentru a-l genera se poate construi o reţea Petri cu terminare corectă. Aceasta conduce la următoarele rezultate:

Teorema 6.7:Dacă L2 este un limbaj regulat şi L1 este un limbaj de reţea Petri, atunci rezultatul substituirii lui L2

printr-un simbol în L1 este un limbaj de reţea Petri.

Corolar 6.2:Limbajele de reţele Petri sunt închise la substituţia finită şi homeomorfism.

6.6 Limbajele de reţele Petri şi alte clase de limbaje

Considerând proprietăţile limbajelor de reţele Petri ca o clasă de limbaje, ne întoarcem să cercetăm relaţia dintre limbajele de reţele Petri şi alte clase de limbaje. În principal, vom considera clasa limbajelor regulate, a celor independente de context, dependente de context şi a celor de tip 0.

6.6.1 Limbajele regulate

Una din cele mai simple şi cele mai studiate clase de limbaje formale este clasa limbajelor regulate. Aceste limbaje sunt generate de gramatici regulate şi automate cu stări finite şi sunt caracterizate de expresii regulate. Problemele echivalenţei şi a includerii unui limbaj regulat în alt limbaj regulat sunt decidabile şi există algoritmi pentru rezolvarea lor [Hopcroft şi Ullman, 1969]. Cu o astfel de mulţime de proprietăţi, este încurajator că avem următoarea teoremă.

Teorema 6.8:Fiecare limbaj regulat este un limbaj de reţea Petri.

Demonstraţia acestei teoreme se bazează pe faptul că fiecare limbaj regulat este generat de un automat cu stări finite şi am arătat (capitolul 3.3.1) că fiecare automat cu stări finite poate fi transformat într-o reţea Petri echivalentă.

Reciproca acestei teoreme nu este adevărată. Figura 6.12 ilustrează o reţea Petri care generează limbajul {anbn / n > 1} independent de context. Deoarece acest limbaj nu este regulat, ştim că nu toate limbajele de reţele Petri sunt limbaje regulate.

99

Page 100: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 6.12: Un limbaj de reţea Petri independent de context care nu este un limbaj regulat

6.6.2 Limbaje independente de context

Figura 6.12 demonstrează că nu toate limbajele de reţele Petri sunt limbaje regulate expunând un limbaj de reţea Petri care este independent de context, dar nu este regulat. Figura 6.13 arată că nu toate limbajele de reţele Petri sunt independente de context expunând un limbaj de reţea Petri care este dependent de context, dar nu este independent de context.

Figura 6.13: Un limbaj de reţea Petri dependent de context, dar nu independent de context

Se poate arăta că există limbaje independente de context care nu sunt limbaje de reţele Petri. Un exemplu de astfel de limbaj este limbajul {wwR / w *} independent de context. De aici rezultă următoarea teoremă.

Teorema 6.9:Există limbaje independente de context care nu sunt limbaje de reţele Petri.

Demonstraţie:Presupunem că există o reţea cu n locaţii şi m tranziţii care generează limbajul {wwR}. Fie k

numărul de simboluri din , k > 1. Pentru un şir de intrare xxR, fie r = |x| lungimea lui x. Deoarece sunt kr şiruri de intrare x posibile, reţeaua Petri trebuie ca după r tranziţii să aibă k’ stări accesibile distincte, pentru a-şi aminti întregul şir x. Dacă nu avem atât de multe stări, atunci pentru unele şiruri x1 şi x2 avem (, x1) = (, x2), pentru x1 x2.

Apoi vedem că (, ) = ((, x1), ) = ((, x2), ) = (, ) F şi ca urmare reţeaua Petri va genera incorect x1 .

În capitolul 4.4.2 am arătat că pentru fiecare tranziţie tj există un vector vj = e[j].D astfel încât dacă (q, tj) este definită, atunci valoarea lui (q, tj) este q + vj. Apoi după r intrări avem o

stare q, unde , pentru o secvenţă de tranziţii . O altă cale de a exprima această

sumă este: , unde fj este numărul de apariţii ale tranziţiei t j în secvenţa [f =

(f1f2…fm) este vectorul declanşărilor]. De asemenea, avem constrângerea .

În cazul cel mai bun, vectorii v1v2…vm vor fi liniar independenţi şi pentru fiecare vector de declanşări (f1f2…fm) va reprezanta o singură stare qr. Deoarece suma coeficienţilor este r, vectorul (f1f2…fm) este o partiţie a întregului r în m părţi. Knuth [1973] a arătat că numărul de partiţii ale unui întreg r în m părţi este .

100

pS pf

b

b

b

a

a

L(C) = {anbn / n > 1}

pS pf

b

cb

c

a

a

L(C) = {anbncn / n > 0}

Page 101: Teoria Retelelor Petri Si Modelarea Sistemelor

Acum, deoarece , înseamnă că după r intrări în

mulţimea stărilor accesibile sunt mai puţin de (r + m)m stări accesibile. Pentru un r suficient de mare, avem deci şi este imposibil să fie k’ stări distincte pentru fiecare din cele k’ şiruri de intrare posibile. Astfel, este imposibil ca o reţea Petri să genereze limbajul {wwR}.

Demonstraţia faptului că {wwR} nu este un limbaj de reţea Petri lămureşte întrucâtva limitările reţelelor Petri ca automate şi astfel şi natura limbajelor reţelelor Petri. Reţelele Petri nu sunt capabile să-şi amintească arbitrar secvenţe lungi de simboluri arbitrare. Din demonstraţie, vedem că reţelele Petri îşi pot aminti secvenţe de o anumită lungime maximă (dar acest lucru îl pot face şi automatele cu stări finite). O altă capacitate a reţelelor Petri este aceea de a-şi aminti numărul de apariţii ale unui simbol, spre exemplu anbncn, un lucru pe care generatoarele de limbaje regulate şi independente de context nu-l pot face. Totuşi, un limbaj Petri nu poate simula puterea unui automat stivă push-down necesar pentru a genera un limbaj independent de context. Rata de creştere a spaţiului stărilor accesibile pentru o reţea Petri este combinatorială cu lungimea intrării şi nu exponenţială ca în cazul automatului stivă push-down.

Motivul pentru care reţelele Petri sunt capabile să genereze limbaje pe care un automat stivă push-down nu le poate genera în ciuda celui mai mic spaţiu de stare este acela că într-o reţea Petri interconectările între stări sunt mai flexibile spre deosebire de cazul automatului stivă push-down în care sunt permise căi restrictive între stări. Acest fapt rezultă din faptul că un automat stivă push-down nu poate accesa decât starea din vârful stivei, în timp ce o reţea Petri poate acesa orice stare la orice moment.

După ce am arătat că nu toate limbajele independente de context sunt limbaje de reţele Petri şi că nu toate limbajele de reţele Petri sunt limbaje independente de context, apare întrebarea care este clasa limbajelor care sunt atât limbaje independente de context cât şi limbaje de reţele Petri. În prezent, nu putem răspunde în întregime la această întrebare, dar putem da o indicaţie asupra unor membri ai acestei intersecţii. O submulţime atât a limbajelor independente de context cât şi a limbajelor de reţele Petri este, desigur, clasa limbajelor regulate. O altă submulţime este mulţimea limbajelor mărginite independente de context [Ginsburg 1966].

6.6.3 Limbaje mărginite independente de context

Un limbaj independent de context L este un limbaj mărginit independent de context dacă există cuvinte w1,…, wn din * astfel încât L .

Adjectivul “mărginit” se referă la numărul finit de cuvinte, w1,…, wn. Ginsburg a dezvoltat o cercetare minuţioasă a propietăţilor limbajelor mărginite independente de context. El a menţionat că, la momentul cercetării sale, nu erau cunoscute întrebări interesante privind limbajele mărginite independente de context care să nu se poată rezolva. Mai sunt însă unele întrebări deschise.

Limbajele mărginite independente de context sunt caracterizate de următoarea teoremă a lui Ginsburg [1966, Th 5.4].

Teorema 6.10:Familia de limbaje mărginite independente de context este cea mai mică familie de mulţimi definite de următoarele reguli:1. Dacă W este o submulţime finită a lui *, atunci W este mărginit independent de context.2. Dacă W1 şi W2 sunt mărginite independente de context, atunci W1 W2 şi W1W2 sunt

mărginite independente de context.3. Dacă W este mărginită independentă de context şi x, y *, atunci {xiWyi / i 0} este

mărginită independentă de context

Am arătat deja în secţiunea 3.3.1 că fiecare automat cu stări finite, şi de aceea fiecare limbaj

101

Page 102: Teoria Retelelor Petri Si Modelarea Sistemelor

regulat şi fiecare submulţime finită a lui * este un limbaj de reţea Petri. În capitolele 6.5.1 şi 6.5.2 am arătat că limbajele de reţele Petri sunt închise la concatenare şi uniune. Astfel, mai avem de arătat doar că pasul 3 de mai sus este satisăcut pentru limbaje de reţele Petri. Pentru a arăta aceasta, vom construi o reţea Petri ’ = (C’, , ’, F’ ) care generează limbaje de reţea Petri {xiwyi / i 0} dându-se reţelele Petri în forma standard x = (Cx, , x, Fx

), y = (Cy, , y, Fy ), w = (Cw, , w, Fw

) care generează x, y, respectiv w. ’ combină reţelele Petri x, y, w şi o nouă locaţie p astfel încât de fiecare dată când x este executată, se pune un jeton în locaţia p. Locaţia p numără de câte ori este executată x. După ce x s-a executat de câte ori se doreşte, se execută w. În final y este executată în mod repetat, mutând câte un jeton din p la fiecare repetare. Deoarece şirul de intrare este corect generat numai dacă reţeaua Petri este goală (cu excepţia lui F’ care este definită ca fiind Fy), suntem siguri că numărul de execuţii ale lui x este egal cu numărul de execuţii ale lui y.

Această construcţie, care este ilustrată în figura 6.14 pentru x = ab, y = b(a + b) şi w = b+a, arată că {xiwyi / i 0} este un limbaj de reţea Petri. Astfel, orice limbaj mărginit independent de context este un limbaj de reţea Petri.

Figura 6.14: O reţea Petri care să genereze limbajul {xiwyi / i 0}. Construcţia arată că toate limbajele mărginite independente de context sunt de asemenea limbaje de reţele Petri

Mai există alte limbaje independente de context care sunt şi limbaje de reţele Petri dar nu sunt mărginite? Din nefericire, răspunsul este da. Ginsburg a arătat că expresia regulată (a + b)n nu este un limbaj mărginit independent de context. Deoarece acest limbaj este un limbaj de reţea Petri independent de context, vedem că limbajele mărginite independente de context sunt numai o submulţime bună a familiei de limbaje de reţele Petri independente de context. De asemenea, limbajul {(a + b)+anbn / n > 1} este un limbaj de reţea Petri independent de context, dar nu este nici mărginit, nici regulat. Este necesar ca studiile ulterioare să completeze caracterizarea mulţimii de limbaje de reţele Petri independente de context.

Faptul că atât mulţimea limbajelor regulate cât şi mulţimiea limbajelor mărginite independente de context sunt submulţimi ale clasei de limbaje de reţele Petri este încurajator, deoarece ambele clase de limbaje au câteva proprietăţi dorite şi unele caracteristici interesante de analizat.

6.6.4 Limbaje dependente de context

Am cercetat relaţia dintre limbajele reţelelor Petri şi limbajele regulate şi pe cea dintre limbajele reţelelor Petri şi cele independente de context. Acum ne vom ocupa de limbajele dependente de context. Figura 6.13 a arătat că unele limbaje de reţele Petri nu sunt dependente de context; mai jos vom demonstra că toate limbajele de reţele Petri sunt dependente de context. Deoarece ştim că toate limbajele independente de context sunt de asemenea dependente de context

102

pfxpSx

a b

pfwpSw

b a

b

pSy

b

pfy

b

a

b

a

a

pfx

pSx

a

b

pfwpSw

b a

b

pSy

b

pfy

ba

b b

p

Page 103: Teoria Retelelor Petri Si Modelarea Sistemelor

şi că există limbaje independente de context care nu sunt limbaje de reţele Petri, ştim că există limbaje dependente de context care nu sunt limbaje de reţele Petri.

Teorema 6.11:Toate limbajele de reţele Petri sunt limbaje dependente de context.

Demonstraţia că toate limbajele de reţele Petri sunt dependente de context este destul de complexă. Sunt două metode de a arăta că un limbaj este dependent de context: construind o gramatică dependentă de context care să-l genereze, sau specificând un automat mărginit liniar nedeterminist care să-l genereze. Peterson [1973] a arătat cum să se definească o gramatică dependentă de context care să genereze un limbaj de reţea Petri; aici arătăm de ce un automat mărginit liniar poate să genereze un limbaj de reţea Petri.

Un automat mărginit liniar este similar cu o maşină Turing. Are un centru finit de stări, un cap de citire /scriere, şi o bandă (infinită în ambele părţi). Proprietatea de mărginire care deosebeşte un automat mărginit liniar de o maşină Turing este dată de faptul că limita cantităţii finite de bandă care poate fi folosită în cazul automatului pentru a genera un şir de intrare dat este dată de o funcţie liniară de lungimea şirului de intrare. În acest sens, un automat stivă liniar este similar cu automatul stivă push-down folosit pentru a genera limbaje independente de context (deoarece lungimea maximă a stivei este dată de o funcţie liniară de şirul de intrare) exceptând faptul că automatul mărginit liniar are acces oriunde în memoria sa, în timp ce automatul stivă push-down are acces numai la sfârşitul memoriei sale.

Pentru a genera un limbaj de reţea Petri, putem simula reţeaua Petri rememorând, după fiecare intrare, numărul de jetoane din fiecare locaţie. Cât de repede poate numărul de jetoane să crească ca o funcţie de intrare? Considerăm numărul de jetoane după declanşarea a r tranziţii. Acest

număr, notat cu c, este, pentru o secvenţă de tranziţii , .

Deoarece numerele #(pk, O(tj)) şi #(pk, I(tj)), şi deci şi numerele |O(tj)| şi |I(tj)| (cardinalitatea multiseturilor de intrare şi ieşire), sunt fixate de structura reţelei Petri, există o valoare maximă l a

lor, , şi astfel .

Numărul de jetoane, şi deci cantitatea de memorie necesară pentru a le rememora, este mărginit de o funcţie liniară de lungimea intrării. Astfel, limbajele de reţele Petri pot fi generate de un automat mărginit liniar.

Cu această demonstraţie, am arătat că toate limbajele de reţele Petri sunt limbaje dependente de context.

Am rezumat rezultatele referitoare la relaţia dintre clasa limbajelor de reţele Petri şi alte clase de limbaje în graful şi diagrama Venn din figura 6.15.

Figura 6.15: Ilustrarea rezumat a relaţiei limbajelor de reţele Petri cu clasele tradiţionale de structuri de limbaje

103

BCF

RCF PNL

CF

CS

T - 0

Tipul 0 (T - 0)

Depente de context (CS)

Limbaje de reţele Petri (PNL)

Limbaje independente de context (CF)

Limbaje regulate Limbaje mărginite independente de context (BCF)

Page 104: Teoria Retelelor Petri Si Modelarea Sistemelor

Închidere la: Lt L L Pt P P

Uniune - + + ? + +Intersecţie + + + + + +Concatenare ? + + ? + +Concurenţă ? + + ? + +Substituţie regulată - -liber + ? Prefix PrefixHomeomorfism invers + + + + + +Închiderea Kleene ? - - ? ? ?Complementară - ? - - ? -Incluziunea de limbaje regulate - + + - Prefix PrefixDiferenţa simetrică cu limbaje independente de context ( )

+ + + + + +

Sunt dependente de context + + ? + + ?

Figura 6.16: Rezumatul proprietăţilor unora dintre limbajele de reţele Petri

6.7 Rezultate suplimentare

Multe dintre rezultatele prezentate aici au fost dezvoltate atât în [Peterson 1976] cât şi în [Hack 1975b]. În plus, Hack a cercetat un număr de probleme de decidabilitate pentru limbajele reţelelor Petri. Problema apartenenţei [este un şir un element al unui limbaj L()?] este decidabilă, în timp ce problema vidităţii [este vid (gol) limbajul L()?] se poate vedea uşor că este echivalentă cu problema accesibilităţii. Este nedecidabil dacă două limbaje de reţele Petri sunt egale sau dacă unul este inclus în altul (problemele echivalenţei şi incluziunii).

Figura 6.17 rezumă aceste rezultate.

Probleme Lt L L Pt P P

Apartenenţa D D ? D D DViditate ? ? ? D D DFinitudine ? ? ? D D DEchivalenţa şi incluziunea ? N N ? N N

Figura 6.17: Tabel ce rezumă proprietăţile decidabile ale limbajelor de tipul L şi ale celor de tipul P (D înseamnă decidabil, N înseamnă nedecidabil).

O abordare diferită în studiul reţelelor Petri folosind teoria limbajelor formale a fost considerată de Crespi-Reghizzi şi Mandrioli [1974]. Ei au observat similitudinea între declanşarea unei tranziţii şi aplicarea unei producţii în derivare, gândindu-se la locaţii ca la nişte neterminale şi la jetoane ca la instanţe separate ale neterminalelor. Diferenţa principală este, desigur, lipsa informaţiei de ordine care este conţinută în forma sentenţială a unei derivări. Astfel s-au definit gramaticile comutative care sunt izomorfe cu reţelele Petri.

6.8 Alte studii

Sunt trei studii importante asupra limbajelor reţelelor Petri. [Peterson 1976[, sau [Peterson 1977] este probabil cel mai simplu de înţeles deşi [Hack 1975b] este un studiu mai riguros şi mai complet. [Crespi-Reghizzi şi Mandrioli 1977] este mai greu de găsit, dar cuprinde o muncă de cercetare excelentă, inventivă şi bine explicată.

Deşi s-a început bine în cercetarea proprietăţilor limbajelor reţelelor Petri, mai rămân încă multe de făcut. Dintre clasele de limbaje care au fost definite, numai două, clasele de limbaje de

104

Page 105: Teoria Retelelor Petri Si Modelarea Sistemelor

tipul P şi clasele de limbaje de tipul L, au fost studiate şi acestea numai pentru reţele Petri generalizate. Au fost definite câteva submulţimi ale mulţimii de reţele Petri generalizate, incluzând graful marcajelor, reţele fără conflicte, reţele restricţionate şi reţele cu alegere liberă (free-choice), după cum se va vedea în capitolul 7. Fiecare dintre aceste clase de reţele Petri are propria sa clasă de limbaje şi propriile sale proprietăţi distinctive.

S-au făcut anumite cercetări asupra acestor clase. Este cunoscut [Hack 1975b] că clasele L, L, G, G, P şi P pentru reţele Petri restricţionate [fără bucle, fără arce multiple; adică toate multiseturile sunt mulţimi, şi pentru fiecare tj, I(tj) O(tj) = ] sunt identice cu clasele corespunzătoare pentru reţele Petri generalizate. De asemenea, nu este dificil de văzut că clasele L, G şi P nu sunt schimbate prin restricţionarea reţelelor la reţele cu alegere liberă (secţiunea 7.4.3). Cu toate acestea, rămân încă multe cazuri interesante de studiat. În particular, limbajele generate de grafuri de marcaje, sau de reţele fără conflicte, în general, par să aibă o structură care aminteşte de limbajele deterministe independente de context, iar studiul lor pare a fi foarte promiţător.

O altă problemă deschisă importantă priveşte distincţia dintre limbajele -libere (L, P,…) şi limbajele nerestricţionate (L, P,…). Spre exemplu, nu se ştie dacă L = L, sau nu.

105

Page 106: Teoria Retelelor Petri Si Modelarea Sistemelor

7 Modele de reţele Petri extinse sau restricţionate

În capitolul 3 am arătat că reţelele Petri pot fi folosite pentru a modela o varietate mare de sisteme: componente hardware şi software, chimice, sociale şi aşa mai departe. Totuşi, această largă gamă de sisteme arată că reţelele Petri pot modela numai anumite sisteme şi că pot exista sisteme care să nu poată fi modelate corect cu ajutorul reţelelor Petri. De aceea, s-ar putea să existe limitări ale puterii de modelare a reţelelor Petri.

În plus, în capitolul 5 am arătat că nu toate secvenţele de analiză sunt decidabile pentru reţelele Petri. Problemele incluziunii şi echivalenţei pentru mulţimi accesibile ale reţelelor Petri şi pentru limbaje de reţele Petri sunt nedecidabile, dar aceste probleme pot fi fosrte importante pentru a produce reţele Petri optime. Chiar şi acele întrebări de analiză care sunt decidabile sunt foarte dificile, în sensul că ele necesită o cantitate de memorie pentru calcule.

În acest capitol cercetăm sugestiile care au fost făcute pentru a depăşi aceste două limitări ale reţelelor Petri: limitarea puterii de modelare şi limitarea puterii de decizie. Ne vom ocupa mai întâi de unele sugestii de extensii ale modelului de reţea Petri. Extinderea modelului de reţea Petri ar trebui să crească puterea de modelare a reţelelor Petri, dar, de asemenea, ar putea să micşoreze puterea de decizie a acestora. Efectele oricărei extensii asupra puterii de decizie a modelului extins trebuie luate în considerare cu mare atenţie.

După cum modelele de reţea Petri extinse tind să reducă puterea de decizie, tot la fel puterea de decizie poate fi mărită restricţionând modelul de reţea Petri. S-au sugerat numeroase subclase ale modelului de reţea Petri. Aceste modele sunt produse prin restricţii asupra structurii reţelei Petri. Trebuie să cercetăm efectul acestor restricţionări atât asupra puterii de modelare cât şi asupra puterii de decizie.

Această cercetare arată cum pot fi tratate puterea de modelare şi decizie, pentru a se realiza un echilibru, şi de asemenea indică limitele amândoura pentru modelul de reţea Petri.

7.1 Limitări ale modelării cu ajutorul reţelelor Petri

Câteva cercetări care au folosit reţelele Petri pentru a modela sisteme au găsit că este foarte simplu şi relativ uşor de a modela astfel sisteme reale. Astfel, a existat o tendinţă marcantă de a extinde modelul pentru a-l face mai uşor de folosit. Aceste extensii au fost de câteva tipuri.

Patil [1970a] a sugerat extinderea reţelelor Petri astfel încât să includă constrângeri. O constrângere este o mulţime de locaţii. Mulţimea de tranziţii care se declanşează este modificată pentru a permite tranziţiilor să se declanşeze dacă şi numai dacă marcajul rezultat nu are toate locaţiile care sunt într-o constrângere simultan marcate. Spre exemplu, dacă {p1, p4} este o constrângere, atunci fie p1, fie p4 trebuie să nu conţină niciodată nici un jeton. Dacă p1 este marcată, atunci nu se poate pune un jeton în p4 până când nu sunt scoase toate jetoanele din p1, şi invers.

Noe, în modelul său pentru sistemul de operare CDC 6400 [Noe 1971], a introdus o extensie diferită: tranziţia SAU-exclusiv (figura 7.1).

Figura 7.1: O tranziţie SAU-exclusiv.Tranziţia tj se poate declanşa numai dacă fie pi fie pk are un jeton şi cealaltă nu

În mod normal, o tranziţie a unei reţele Petri se declanşează când toate intrările sale conţin jetoane; aceasta se numeşte ŞI-logic, de vreme ce trebuie să avem jetoane şi în prima, şi în a doua, şi în a treia, şi în toate intrările. Tranziţia SAU-exclusiv se poate declanşa dacă şi numai dacă una numai una dintre intrările sale conţine jetoane, iar restul nu. Astfel, regula de funcţionare este ca

106

pi

pk

tj

+

Page 107: Teoria Retelelor Petri Si Modelarea Sistemelor

prima intrare să aibă un jeton, sau a doua intrare să aibă un jeton (dar nu amândouă). Când tranziţia se declanşează, mută un jeton numai din intrarea care conţinea jetoane.

O extensie similară a fost folosită de Baer în modelul său pentru un compilator [Baer 1973b]. Baer a introdus comutatoarele (figura 7.2). Un comutator este o tranziţie specială cu o intrare specială numită intrare switch şi cu exact două ieşiri (una etichetată cu e, de la empty (gol) şi cealaltă etichetată cu f, de la full (plin)). O tranziţie comutator se declanşează când este permisă (ignorând starea intrărilor speciale).

Figura 7.2: Declanşarea unei tranziţii comutator. Locaţia în formă de săgeată reprezintă intrarea comutator. (a) Comutator gol (b) Comutator plin

La declanşare, se pune un jeton în ieşirea etichetată cu e, dacă intrarea comutatorului este goală, sau în cea etichetată cu f, dacă intrarea comutatorului este plină. Astfel, declanşarea unei tranziţii comutator va da naştere la unul sau la două marcaje, în funcţie de starea comutatorului. Un jeton este mutat din intrarea comutatorului, dacă are unul, astfel încât aceasta devine goală (vidă) după declanşarea tranziţiei comutator.

Aceste extensii ale reţelelor Petri au fost create pentru a rezolva anumite probleme pe care cercetătorii le-au întâlnit în încercările lor de a modela sisteme reale. Totuşi, principala preocupare a muncii lor a fost modelarea, nu puterea teoretică a reţelelor Petri, astfel că nu s-a făcut nici o încercare de a arăta dacă aceste extensii sunt necesare sau suficiente pentru a mânui probleme generale de modelare. De fapt, în toate aceste cazuri, reţelele implicate erau sigure, şi de aceea mulţimea de accesibilitate este finită, adică aceste reţele pot fi reprezentate ca automate cu stări finite, care am văzut (capitolul 3.3.1) că pot fi reprezentate cu uşurinţă ca reţele Petri obişnuite. Astfel, în aceste cazuri, aceste „extensii” nu sunt necesare, deşi sunt convenabile. Am văzut de asemenea în capitolul 5.3 că multe extensii ale modelului de reţea Petri restricţionat, precum arce multiple şi bucle, nu sunt de fapt extensii, dar sunt utile.

Rămâne astfel întrebarea: dacă există, care sunt limitările reţelelor Petri? Răspunsul la această întrebare a fost găsit ca urmare a studiului unor întrebări similare asupra operaţiilor lui Dijkstra, P şi V, cu semafoare.

Dijkstra a definit operaţiile P şi V cu semafoare pentru a facilita coordonarea şi comunicaţiile în sisteme cu procese concurente [Dijkstra 1968]. Un semafor poate fi gândit ca o variabilă întreagă care ia numai valori nenegative. O operaţie V a unui semafor S măreşte valoarea semaforului cu unu, adică S = S + 1. Operaţia P a unui semafor, pe de altă parte, micşorează S cu unu atâta timp cât rezultatul este un număr nenegativ; sistemul trebuie să aştepte până când S poate fi decrementat înainte de a continua. Relaţia dintre semafoare şi reţelele Petri a fost examinată în capitolul 3.4.8.

De vreme ce operaţiile P şi V au fost propuse ca mecanismul pentru rezolvarea tuturor problemelor de coordonare între programe, apar în mod natural întrebări referitoare la completitudinea lor, adică întrebări referitoare la capacitatea lor de a rezolva toate problemele de coordonare ce pot apărea. Patil [1971] a demonstrat că operaţiile P şi V nu sunt suficient de puternice pentru a demonstra toate problemele de coordonare. Abordarea lui a fost chiar simplă: a creat o problemă de coordonare care nu a putut fi rezolvată cu ajutorul operaţiilor P şi V. Problema pusă a fost problema fumătorilor de ţigări.

Problema fumătorilor de ţigări constă din (cel puţin) patru procese: un agent şi trei fumători. Fiecare fumător face în mod continuu câte o ţigară şi o fumează. Dar, pentru a face o ţigară sunt

107

f

e

f

f

e

f

e

(a) (b)

Page 108: Teoria Retelelor Petri Si Modelarea Sistemelor

necesare trei ingrediente: tabac, hârtie şi chibrituri. Unul dintre procese are hârtie, un altul tabac şi al treilea are chibrituri. Agentul are un depozit infinit din toate cele trei ingrediente. Agentul pune două dintre ingrediente pe masă. Fumătorul care capătă astfel cel de-al treilea ingredient poate face o ţigară, s-o fumeze şi să semnalizeze agentul după ce o termină de fumat. În acest moment agentul pune pe masă alte două din cele trei ingrediente şi ciclul se repetă.

În termeni de semafoare, problema se pune asociind un semafor cu fiecare ingredient. Aceste semafoare sunt iniţial zero. Agentul va incrementa două dintre cele trei semafoare cu ajutorul operaţiei V, şi apoi va aştepta un semafor „gata”. Procesul corespunzător trebuie să decrementeze cele două semafoare (cu ajutorul operaţiei P), să facă şi să fumeze ţigara şi să incrementeze semaforul „gata”. Problema este definirea codului proceselor astfel încât să se poată determina care dintre cele trei procese ar trebui să acţioneze; agentul este fix şi nu poate fi schimbat.

Figura 7.3 ilustrează „soluţia” evidentă. Problema cu această „soluţie” este simplă: presupunem că agentul pune pe masă tabac şi hârtie [V(t); V(p)]. Apoi, fumătorul cu hârtia poate lua tabacul [P(t)] şi fumătorul cu tabacul poate lua hârtia [P(p)], dând naştere la o interblocare. Patil a demonstrat că uneori nu există nici o secvenţă de operaţii P şi V care să poată rezolva această problemă, demonstrând că deşi toate „soluţiile” obţinute cu ajutorul operaţiilor P şi V pot fi modelate ca reţele Petri de un anumit tip (fiecare tranziţie are cel mult două intrări), soluţia este o reţea Petri de un alt tip, şi că nu este posibil să se convertească o reţea de un tip într-o reţea din celălalt tip fără a exista pericolul interblocării.

Figura 7.3: Problema fumătorilor de ţigări

Acestea au fost problemele cu soluţia lui Patil – ce lucrează în mod special cu tablouri de semafoare (vezi [Parnas 1972]) – dar conceptul este corect. Kosaraju [1973] şi Argewola şi Flynn [1973] au continuat munca lui Patil pentru a produce o problemă care să nu poată fi rezolvată cu operaţii P şi V, sau cu reţele Petri. Această limitare a fost descoperită mai devreme de către Keller [1972].

Problema găsită de Kosaraju, Argewala şi Flynn este cât se poate de reală. Presupunem că avem două procese producător şi două procese consumator. Procesul producător P1 creează articole pentru primul proces consumator C1, iar celălalt proces producător, P2, produce pentru cel de-al doilea proces consumator, C2. Articolele care sunt produse, dar nu sunt încă consumate, sunt puse într-un buffer, şi anume în bufferul B1 pentru (P1, C1) şi în bufferul B2 pentru (P2, C2). Transmisia de la buffere către consumatori se face printr-un canal distribuit. Canalul poate transmite un singur articol la un anumit moment de timp, dar poate transmite de la orice buffer către orice consumator. Producătorii numai pun articole în buffere; consumatorii trebuie să coordoneze folosirea canalului în comun. Consumatorul ce deţine controlul spune canalului să aducă un articol de la bufferul corespunzător.

Problema principală cu acest sistem este alocarea canalului. Perechea producător-consumator (P1, C1) se cere să aibă prioritate faţă de perechea (P2, C2) în folosirea canalului. De aceea, canalul nu este niciodată folosit pentru a transmite articole de la bufferul B2 la consumatorul C2 atâta timp cât bufferul B1 nu este gol.

Toate acestea sunt schiţate în figura 7.4.

108

P(S)V(t)V(m)

P(S)V(t)V(p)

P(S)V(p)V(m)

Agentul este compus din trei procese

P(t)P(m)

V(S)

Fumător cu hârtie

P(t)P(p)

V(S)

Fumător cu chibrituri

P(p)P(m)

V(S)

Fumător cu tutun

Page 109: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 7.4: Modelul producător /consumator cu buffer şi canal distribuit

Această regulă de prioritate face ca acest sistem să nu poată fi modelat cu o reţea Petri. Demonstraţia este relativ simplă. Să presupunem că suntem într-o stare cu articole atât în bufferul B1 cât şi în bufferul B2. Acum, dacă producătorul P1 ia o pauză, atunci ar putea apărea eventual cazul în care toate articolele din bufferul B1 au fost transmise consumatorului C1, astfel încât bufferul B1 este gol. Această situaţie va permite ca un articol din bufferul B2 să fie adus la consumatorul C2. Astfel, există un drum de la la o stare ’ în care consumatorul C2 poate folosi canalul.

Acum, dacă din contră producătorul P1 produce k articole în plus, vom fi în starea + k, mai degrabă decât în starea . Dar, datorită naturii permisive a declanşărilor în reţelele Petri, secvenţa de declanşări care ne conduce din starea în starea ’ va fi încă posibilă şi ne va duce din starea + k în starea ’ + k. Deoarece consumatorul i poate folosi canalul în ’ şi reţelele Petri sunt permisive, consumatorul C2 poate să folosească în continuare canalul, în ciuda prezenţei celor k articole în bufferul B1. Astfel, natura permisivă a declanşărilor într-o reţea Petri nu permite acestui sistem de priorităţi să fie modelat corect.

Mai precis, limitarea modelării cu ajutorul reţelelor Petri constă în incapacitatea de a testa pentru un exact anume marcaj într-o locaţie nemărginită şi a executa o acţiune la sfârşitul testului. Acest fapt se formulează în general ca o incapacitate de a testa pentru un marcaj zero într-o locaţie, şi astfel această proprietate este cunoscută sub numele de testul zero [Keller 1972]. Reţelele Petri nu pot testa o locaţie nemărginită pentru un marcaj zero. [Dacă locaţia este mărginită, se poate face testul pentru marcajul zero. Pentru o locaţie mărginită pi cu marginea k, putem crea o locaţie complementară astfel încât suma (pi) + ( ) să fie constantă k pentru toate marcajele

accesibile. Aceasta ne permite să testăm dacă (pi) este zero testând dacă ( ) este k (vezi capitolul 5.6).]

7.2 Extensii

Care este relaţia dintre aceste limitări ale modelării cu reţele Petri şi extensiile pentru reţele Petri care au fost sugerate? Toate extensiile sugerate au dorit să ofere reţelelor Petri abilitatea de a testa după marcajul zero.

Cele mai simple extensii la reţelele Petri care permit testarea după marcajul zero sunt arcele inhibitoare. Un arc inhibitor de la o locaţie pi la o tranziţie tj este reprezentat printr-o linie cu un cerculeţ în capăt în loc de o săgeată. Această notaţie este împrumutată din teoria comutatoarelor unde cerculeţele înseamnă „nu”. Regula de declanşare este schimbată după cum urmează: o tranziţie este activă când se află jetoane în toate intrările sale (normale) şi nu se află nici un jeton în nici una din intrările sale inhibitoare. Tranziţia se declanşează prin mutarea jetoanelor din toate intrările sale „normale”.

Astfel, în reţeaua Petri extinsă din figura 7.5 tranziţia c2 se poate declanşa numai dacă se află câte un jeton în b2 şi p4 şi nici unul în b1. Această reţea este o soluţie la problema priorităţii în canalul distribuit pe care Kosaraju l-a definit pentru a arăta limitările reţelelor Petri.

109

P1 P2

C1 C2

B1 B2

Canal distribuit

Page 110: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 7.5: O reţea Petri extinsă cu un arc inhibitor

Reţelele Petri cu arce inhibitoare sunt intuitiv cea mai directă abordare pentru creşterea puterii de modelare a reţelelor Petri. De asemenea, toate celelalte extensii ale reţelelor Petri care au fost sugerate, fie nu sunt într-adevăr extensii (ci sunt de fapt echivalente cu reţelele Petri obişnuite), fie sunt echivalente cu reţelele Petri cu arce inhibitoare. Pentru a ilustra aceste lucruri, vom discuta mai jos câteva dintre extensiile sugerate.

7.2.1 Restricţii

Restricţiile au fost propuse de Patil [1970a] pentru a îmbunătăţi puterea de modelare a reţelelor Petri. În contextul propus de Patil, restricţiile aveau numai rolul de a face modelarea mai uşoară şi nu de a mări puterea de modelare, deoarece în munca lui Patil, toate locaţiile erau mărginite. Totuşi, restricţiile definite nu se limitează la reţelele Petri mărginite, şi pentru clase de reţele Petri mai generale, sunt echivalente cu arcele inhibitoare.

Pentru a arăta echivalenţa restricţiilor cu arcele inhibitoare presupunem că avem o reţea Petri C = (P, T, I, O) cu o restricţie Q P. Trebuie să ne asigurăm că toate locaţiile din Q nu sunt marcate în nici un marcaj accesibil. Singura modalitate prin care toate locaţiile din Q ar pute fi marcate ar fi prin declanşarea unei tranziţii tj care să pună jetoane în acele locaţii din restricţie care nu erau marcate înainte de declanşarea tranziţiei. Astfel, pentru fiecare tranziţie tj cu locaţii de ieşire care sunt în restricţie, trebuie să ne asigurăm că, după declanşarea tranziţiei, cel puţin unul din membrii constrângerii nu va fi marcat. Pentru aceasta, creăm o nouă tranziţie tj,k pentru fiecare locaţie pk din restricţia Q care nu este în Q(tj). Tranziţia tj,k este identică cu tranziţia tj cu excepţia faptului că mai are în plus un arc inhibitor de la pk la tj,k. Efectul declanşării tranziţiei tj,k este acelaşi cu al declanşării tranziţiei tj, şi dacă tj poate fi declanşată fără violarea unei restricţii, atunci se poate declanşa cel puţin una dintre tranziţiile tj,k.

Pentru a exemplifica pentru această construcţie, considerăm reţeaua Petri din figura 7.6. Dacă impunem restricţia {p3, p7} (adică, p3 şi p7 nu pot fi simultan marcate în nici un marcaj), atunci reţeaua Petri echivalentă cu arce inhibitoare este arătată în figura 7.7.

Transformarea de la arce inhibitoare la restricţii este ceva mai dificilă. Nu putem doar să spunem că nici o ieşire a unei tranziţii nu poate fi marcată în acelaşi timp ca intrare inhibitoare, deoarece există alte tranziţii care pot pune jetoane în ieşiri. De aceea, trebuie să ne concentrăm asupra tranziţiilor. Aceasta presupune divizarea fiecărei tranziţii tj în două tranziţii şi şi o

locaţie . Definim I( ) = I(tj) (fără arce inhibitoare) şi O( ) = O(tj). Locaţia reprezintă

declanşarea tranziţiei tj, deci O( ) = { } = I( ). Acest fapt este ilustrat în figura 7.8. Acum,

pentru fiecare locaţie pi care este o intrare inhibitoare pentru tj, definim o restricţie {pj, }. Acesta ne asigură că tranziţia nu se poate declanşa dacă marcajul lui pi este diferit de zero.

110

p1 p2

p3 p4

b1d1

d2

c1

c2

Page 111: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 7.8: Convertirea unei tranziţii într-o tranziţie de început şi una de final şi o locaţie reprezentând declanşarea tranziţiei

7.2.2 Tranziţii SAU-exclusiv şi comutatoare

O tranziţie SAU-exclusiv tj cu intrarea I(tj) cere ca una şi numai una dintre intrările sale să fie zero pentru a se activa. Acest fapt este echivalent cu o mulţime de tranziţii, una pentru fiecare element din I(tj). Fiecare tranziţie are o intrare (normală) şi restul intrărilor sunt arce inhibitoare. Figura 7.9 este un astfel de exemplu.

Figura7.9: Convertirea (a) unei tranziţii SAU-exclusiv (b) în arce inhibitoare

111

p1

p2

p3

p4

p5

p6

p7

t6

t5

t4

t3t2

t1

p1

p2

p3

p4

p5

p6

p7

t6

t5

t4

t3t2

t1

Figura 7.6: O reţea Petri cu o restricţie {p3, p7}. Restricţia semnifică faptul că în nici un marcaj accesibil nu sunt permise simultan jetoane în locaţiile p3 şi p7.

Figura 7.7: O reţea Petri cu arce inhibitoare corespunzătoare reţelei Petri cu restricţii din figura 7.6. Arcele inhibitoare ne asigură de faptul că în locaţiile p3 şi p7 nu se pot afla simultan jetoane.

tjI(tj) O(tj)

pi

'jt ''

jtO(tj)I(tj)

+O(tj)

O(tj)

(a)

(b)

Page 112: Teoria Retelelor Petri Si Modelarea Sistemelor

Comutatoarele pot fi de asemenea transformate cu uşurinţă în arce inhibitoare. Acest fapt este ilustrat în figura 7.10.

Figura 7.10: Convertirea (a) comutatoarelor în (b) reţele Petri cu arce inhibitoare

Nu este imediat evident cum arcele inhibitoare pot fi convertite în comutatoare sau în tranziţii SAU-exclusiv, dar este sigur că acest lucru este posibil.

7.2.3 Alte extensii

Au mai fost sugerate alte două alte extensii importante ale reţelelor Petri. Tranziţiilor li se pot asocia priorităţi astfel încât dacă tj şi tk sunt amândouă active, să se declanşeze mai întâi tranziţia cu prioritatea cea mai ridicată [Hack 1975c]. Reţelele Petri cu timp ataşat [Merlin 1974] asociază fiecărei tranziţii tj doi timpi, 1,j şi 2,j. O tranziţie tj se poate declanşa numai dacă a fost activată cel târziu la momentul 1,j şi, de asemenea, trebuie să se declanşeze înainte de momentul 2,j, dacă este activă. Amândouă aceste extensii pot fi folosite pentru a testa după marcajul zero.

În cazul priorităţilor, putem testa cu uşurinţă dacă o locaţie p este zero. Această situaţie este ilustrată în figura 7.11. Dacă punem un jeton în locaţia p = 0? şi definim prioritatea tranziţiei t1 mai mare decât prioritatea tranziţiei t2, atunci vom obţine un jeton într-una din cele două locaţii din dreapta în funcţie de marcajul locaţiei p. Aceasta rezultă din faptul că tranziţia t1 se poate declanşa numai dacă este activă, şi este activă numai dacă în locaţia p se află un jeton. Tranziţia t2 se poate activa numai în cazul în care tranziţia t1 nu se poate activa deoarece locaţia p este goală.

Figura 7.11: Folosirea priorităţilor pentru a testa dacă marcajul unei locaţii p este zero sau nu. Tranziţia t1 are prioritate asupra tranziţiei t2.

Hack a realizat construcţii complete pentru convertirea reţelelor Petri cu priorităţi în reţele Petri cu arce inhibitoare şi viceversa [Hack 1975a]. Reţelele Petri cu timp ataşat pot să testeze de asemenea o locaţie pentru zero simulând priorităţi. Dacă avem două tranziţii tj şi tk şi setăm 2,j < 1,k, atunci tranziţia tj are prioritate asupra tranziţiei tk deoarece tj trebuie să se declanşeze (dacă este activă) înainte să i se permită tranziţiei tk să se declanşeze.

112

e

e

f

(a)

(b)

f

t1

t2

p = 0 ?

p

Locaţia p nu este vidă

Locaţia peste vidă

Page 113: Teoria Retelelor Petri Si Modelarea Sistemelor

7.3 Reţele Petri extinse şi dispozitive de recunoaştere (Register Machines)

Am arătat că toate extensiile sugerate permit testarea pentru marcajul zero. Cum este acest lucru important pentru puterea de decizie a unei reţele Petri? Afectează acest lucru abilitatea de a analiza reţelele Petri?

Testarea pentru marcajul zero micşorează puterea de decizie a reţelelor Petri. Argewala [1974a], Hack [1975c], Thomas [1976] şi alţii au arătat că adăugarea la o reţea Petri a capacităţii de a testa pentru marcajul zero permite reţelei Petri să simuleze o maşină Turing.

Astfel, o reţea Petri care are capacitatea de a testa pentru marcajul zero produce o schemă de modelare care poate modela orice sistem. În acest caz însă aproape toate întrebările de analiză pentru reţele Petri devin nedecidabile, deoarece ele sunt nedecidabile pentru maşini Turing.

Demonstraţia echivalenţei dintre reţelele Petri extinse şi maşinile Turing este relativ simplă şi mai uşor de dat în termeni de dispozitive de recunoaştere [Shepardson şi Sturgis 1963] sau maşini cu program [Minsky 1967].

Un dispozitiv de recunoaştere este un dispozitiv ca un computer cu un număr de regiştrii care sunt folosiţi pentru a memora arbitrar numere mari. Există un program scris pentru a manipula regiştrii. Programul este o succesiune de instrucţiuni precum „măreşte registrul n cu 1”, „micşorează registrul n cu 1 (numai dacă registrul n nu este 0)”, „salt la instrucţiunea 5 dacă registrul n nu ete 0” şi aşa mai departe. De exemplu, în continuare este prezentat un program care adaugă conţinutul registrului 2 la registrul 1.

1. Dacă registrul 2 este zero, mergi la instrucţiunea 5.2. Scade 1 din registrul 2.3. Adaugă 1 la registrul 1.4. Mergi la instrucţiunea 1.5. Halt.Shepardson şi Sturgis au arătat că un dispozitiv de recunoaştere cu următoarele instrucţiuni

este echivalent cu o maşină Turing.1. P(n): Măreşte registrul n cu 1.2. D(n): Micşorează registrul n cu 1 (registrul n nu este zero).3. J(n)[s]: Salt la instrucţiunea s dacă registrul n este zero.Astfel, dacă un dispozitiv de recunoaştere poate fi convertit într-o reţea Petri extinsă

echivalentă, vedem că reţelele Petri extinse sunt echivalente cu dispozitivele de recunoaştere. Această conversie este relativ evidentă.

Pentru a reprezenta un dispozitiv de recunoaştere ca o reţea Petri extinsă, reprezentăm cei n regiştrii folosiţi într-un program prin n locaţii, . De asemenea folosim s - 1 locaţii pentru a reprezenta poziţia registrului de control înainte de instrucţiunea 1 (marcajul iniţial), sau după instrucţiunea i, i = 1 … s, într-un program cu s instrucţiuni. Fiecare instrucţiune din program este reprezentată printr-o tranziţie. Figura 7.12 arată cum va fi reprezentată într-o reţea Petri extinsă fiecare dintre cele trei instrucţiuni de mai sus.

Figura 7.12: Conversia unei instrucţiuni (la locaţia i) pentru un dispozitiv de recunoaştere la o tranziţie într-o reţea Petri extinsă folosind arce inhibitoare. (a) P(n) (b) D(n) (c) J(n)[s]

113

pi

pi+1

'np

pi

pi+1

'np

(a) (b)

pi+1

'np

pi

pS

(c)

Page 114: Teoria Retelelor Petri Si Modelarea Sistemelor

Aceasta arată că un dispozitiv de recunoaştere poate fi poate fi convertit într-o reţea Petri extinsă şi de aceea o reţea Petri extinsă este echivalentă cu o maşină Turing. Această echivalenţă cu maşinile Turing distruge orice speranţă de a putea anliza reţelele Petri extinse, demonstrând totuşi că reţelele Petri extinse pot modela orice sistem (sau cel puţin orice sistem calculabil). Astfel, observăm că o creştere a puterii de modelare, în acest caz, conduce la o scădere a puterii de decizie.

De asemenea observăm că punctul cheie în demonstrarea echivalenţei reţelelor Petri extinse cu dispozitivele de recunoaştere şi cu maşinile Turing este capacitatea de a testa pentru marcajul zero o singură locaţie. Astfel, toate extensiile care au fost sugerate - restricţii, tranziţii SAU-exclusiv, comutatoare, priorităţi, timpi şi arce inhibitoare – extind modelul de reţea Petri la nivel de maşini Turing.

Au fost şi alte sugestii pentru extinderea reţelelor Petri care nu au adus reţelele Petri la nivel de maşini Turing. Iniţial s-au sugerat ca extensii buclele, intrările multiple şi arcele de ieşire, dar, aşa cum se vede din capitolul 5.3, reţelele extinse astfel sunt echivalente de fapt cu reţelele Petri restricţionate. Similar, permiţând intrări SAU-inclusiv, ieşiri SAU-inclusiv, sau ieşiri SAU-exclusiv nu se produce o creştere a puterii de modelare a reţelelor Petri.

În general, se pare că orice extensie care nu permite testarea pentru marcajul zero nu va creşte de fapt puterea de modelare (sau nu va scădea puterea de decizie) a reţelelor Petri, ci numai va da naştere unei alte formulări echivalente a modelului de bază al reţelelor Petri (Se pote ca astfel să se uşureze modelarea.) În acelaşi timp, orice extensie care permite testarea pentru marcajul zero va mări puterea de modelare la nivelul maşinilor Turing şi va scădea la zero puterea de decizie. Prin urmare, extensiile reţelelor Petri au puţine avantaje practice în analize.

7.4 Subclase de reţele Petri

Obiectivul extinderii reţelelor Petri este mărirea puterii de modelare; un efect lateral nefericit este acela că puterea de decizie a reţelelor Petri extinse este mult redusă. Puterea de decizie a reţelelor Petri normale are o valoare acceptabilă datorită complexităţii şi costului (Rezultate despre complexitatea problemelor de accesibilitate şi mărginire se află în capitolul 5.8.). Aceasta a dat naştere cercetării câtorva subclase ale reţelelor Petri. Obiectivul acestor studii este de a determina restricţionări structurale rezonabile ale reţelelor Petri care vor creşte puterea de decizie a modelelor de reţele Petri restricţionate fără să restricţioneze esenţial puterea de modelare.

Se pot face multe cu subclasele reţelelor Petri. Scopul acestei părţi a cercetării reţelelor Petri este simplu. Definim o subclasă a reţelelor Petri care poate modela o gamă largă de sisteme (toate sau aproape toate interesante) şi care totuşi păstrează proceduri simple de analiză (cel puţin pentru problemele interesante). Este de asemenea necesar să existe un test simplu pentru a determina dacă este un sistem este membru al subclasei definite. Subclasele care au fost definite sunt toate subclase sintactice sau structurale; putem cu uşurinţă examina o structură de reţea Petri pentru a determina dacă este membru al subclasei specificate. Aceste subclase sunt diferite de cele ce pot fi definite în concordanţă cu proprietăţile dinamice, cum sunt, spre exemplu, reţelele Petri persistente [Landweber şi Robertson 1975] sau reţelele Petri mărginite. Aceste clase pot avea proprietăţi foarte interesante, dar s-ar putea să fie foarte dificil de determinat dacă o reţea Petri arbitrară dată este o reţea Petri persistentă sau mărginită.

Au fost intens studiate numai două subclase importante ale reţelelor Petri: maşini de stare şi grafuri marcate. În plus, Hack [1972] a studiat o subclasă numită reţele Petri cu alegere liberă şi a sugerat că o altă subclasă, reţele Petri simple, ar putea avea proprietăţi bune de decizie. Prezentăm fiecare dintre aceste clase şi indicăm proprietăţile lor cele mai importante, avantaje şi dezavantaje.

7.4.1 Maşini de stare

O maşină de stare este o reţea Petri în care fiecare tranziţie este restricţionată să aibă exact o intrare şi exact o ieşire.

114

Page 115: Teoria Retelelor Petri Si Modelarea Sistemelor

Definiţia 7.1:O maşină de stare este o reţea Petri C = (P, T, I, O) astfel încât pentru fiecare tj T, |I(tj)| = 1 şi |O(tj)| = 1.

Câteva proprietăţi ale maşinilor de stare sunt imediat evidente. Mai întâi, o maşină de stare este strict conservativă. Aceasta înseamnă că numărul de jetoane dintr-o maşină de stare nu se schimbă niciodată, dând naştere unui sistem finit. Prin urmare, arborele de accesibilitate pentru o maşină de stare este finit, şi de aceea toate întrebările de analiză sunt decidabile pentru maşinile de stare. De fapt, o maşină de stare este echivalentă cu un automat cu stări finite din teoria automatelor şi a limbajelor formale (vezi capitolul 3.3.1). Astfel, aceste modele sunt de interes redus în ciuda puterii mari de decizie, datorită puterii mărginite de modelare a automatelor cu stări finite.

7.4.2 Grafuri marcate

O altă subclasă a reţelelor Petri care este des menţionată în literatură este clasa grafurilor marcate. Un graf marcat este o reţea Petri în care fiecare locaţie este intrare pentru exact o tranziţie şi ieşire pentru exact o tranziţie. Alternativ, putem spune că fiecare locaţie are exact o intrare şi o ieşire.

Definiţia 7.2:Un graf marcat este o reţea Petri C = (P, T, I, O) astfel încât pentru fiecare pi P, |I(pi)| = |{tj | pi

O(tj)}| = 1 şi |O(pi)| = |{tj | pi I(tj)}| = 1.

Grafurile marcate sunt dualele maşinilor de stare (într-o reutilizare a cuvântului din teoria grafurilor), deoarece în cazul maşinilor de stare tranziţiile au o singură intrare şi o singură ieşire, în timp ce în cazul grafurilor de stare cele care au o singură intrare şi o singură ieşire sunt locaţiile. Sunt de asemenea duale din punctul de vedere al modelării. O maşină de stare poate cu uşurinţă reprezenta conflicte printr-o locaţie cu câteva ieşiri dar nu poate modela crearea jetoanelor necesare pentru a modela concurenţa sau aşteptarea care caracterizează sincronizarea. Grafurile marcate, pe de altă parte, pot modela concurenţa şi sincronizarea dar nu pot modela conflicte sau decizii dependente de date.

Proprietăţile care au fost cercetate pentru grafurile marcate au fost viabilitatea, siguranţa şi accesibilitatea. În cercetarea acestor proprietăţi, partea structurală majoră a unui graf marcat de interes sunt ciclurile acestuia. Un ciclu într-un graf marcat este o secvenţă de tranziţii

astfel încât pentru fiecare şi din secvenţă există o locaţie cu O( ), I( ) şi

. Un ciclu este astfel un drum închis de la o tranziţie înapoi la aceeaşi tranziţie.De exemplu, în graful marcat din figura 7.13 secvenţa t1 t2 t1 este un ciclu, la fel ca şi

secvenţele t4 t3 t4 şi t2 t4 t3 t1 t2.

Figura 7.13: Un graf marcat

Importanţa ciclurilor pentru grafurile marcate derivă din următoarea teoremă:

Teorema 7.1:Numărul de jetoane dintr-un ciclu al unui graf marcat nu se schimbă în urma declanşării tranziţiilor.

115

p1 p2

p3

p4

p5

t4

t3

t2

t1

p6

Page 116: Teoria Retelelor Petri Si Modelarea Sistemelor

Cu ajutorul acestei teoreme se arată uşor următoarele:

Teorema 7.2:Un marcaj este activ dacă şi numai dacă numărul de jetoane din fiecare ciclu al grafului marcat este cel puţin 1.

Teorema 7.3:Un marcaj activ este sigur dacă şi numai dacă fiecare locaţie din graful marcat este într-un ciclu cu un jeton.

Aceste teoreme oferă o cale simplă şi uşoară de a inspecta structura unui graf marcat şi de a determina din structură şi din marcajul iniţial dacă graful marcat este activ şi sigur. Se poate de asemenea arăta că problema accesibilităţii pentru marcajele unui graf marcat este decidabilă.

Teorema 7.4:Într-un graf marcat tare conex, un marcaj ’ este accesibil dintr-un marcaj activ dacă numărul total de jetoane din fiecare ciclu al grafului marcat este acelaşi atât în cât şi în ’.

Puterea mare de decizie a grafurilor marcate este evidentă din teoremele de mai sus şi din studiile dedicate subiectului [Holt şi Commoner 1970; Commoner et. al. 1971; Genrich şi Lautenbach 1973; Izbicki 1973; Murata 1977b]. Cum însă există un echilibru între puterea de decizie şi puterea de modelare, puterea mare de decizie a grafurilor marcate rezultă în parte din puterea scăzută de modelare. Astfel, cercetătorii au încercat să dezvolte o altă subclasă a reţelelor Petri care să păstreze puterea mare de decizie a grafurilor marcate şi să crească în acelaşi timp puterea de modelare.

7.4.3 Reţele Petri cu alegere liberă

Hack, în lucrarea sa de master la M.I.T. [Hack 1972], a definit şi a investigat o subclasă a reţelelor Petri numită clasa reţelelor Petri cu alegere liberă. Această clasă modelează atât conflictele maşinilor de stare cât şi concurenţa grafurilor marcate, dar într-o manieră mai restrânsă decât în modelul general de reţea Petri.

Definiţia 7.3:O reţea Petri cu alegere liberă este o reţea Petri C = (P, T, I, O) astfel încât pentru fiecare tj T şi pi I(tj), sau I(tj) = {pi} sau |O(tj)| = {pi}.

Importanţa acestei definiţii este dată de modul în care permite controlul conflictelor. Conflicte apar numai atunci când o locaţie este intrare pentru mai multe tranziţii. Prin modul în care au fost definite reţelele Petri cu alegere liberă, dacă o locaţie este intrare pentru mai multe tranziţii (conflict potenţial), atunci este singura intrare pentru toate aceste tranziţii. De aceea, fie toate aceste tranziţii conflictuale sunt simultan active, fie nu este nici una. Aceasta permite ca alegerea (pentru rezolvarea conflictului) tranziţiei care să se declanşeze să se facă liber; prezenţa altor jetoane în alte locaţii nu influenţează alegerea tranziţiei care să se declanşeze.

Această formă restricţionată de conflict i-a permis lui Hack să demonstreze condiţiile necesare şi suficiente pentru ca o reţea Petri cu alegere liberă să fie activă şi sigură. Condiţia de viabilitate este legată de marcarea capcanelor şi blocărilor din reţea.

O capcană este o mulţime de locaţii astfel încât fiecare tranziţie care are locaţia de intrare în această mulţime are şi locaţia de ieşire tot în această mulţime. Aceasta înseamnă că odată ce una dintre locaţiile unei capcane are un jeton, va exista întotdeauna un jeton în una din locaţiile capcanei. Declanşările de tranziţii pot să mute jetonul între locaţii, dar nu pot să scoată jetonul din capcană.

116

Page 117: Teoria Retelelor Petri Si Modelarea Sistemelor

O mulţime de blocare definitivă (deadlock) este o mulţime de locaţii astfel încât fiecare tranziţie care are locaţia de ieşire în această mulţime are şi locaţia de intrare tot în această mulţime. Aceasta înseamnă că odată ce toate locaţiile din mulţime devin nemarcate nici o tranziţie nu mai poată să pună jetoane în locaţiile din această mulţime deoarece nu mai există nici un jeton aici care să activeze o tranziţie cu ieşire tot aici.

Hack a demonstrat că o condiţie necesară şi suficientă pentru viabilitate într-o reţea Petri marcată cu alegere liberă este ca fiecare mulţime de blocare definitivă să conţină o capcană marcată. Această teoremă se bazează pe studiile lui Commoner [Commoner 1972, Hack 1972]. Condiţiile necesare şi suficiente pentru siguranţă implică demonstrarea faptului că reţeaua Petri cu alegere liberă este acoperită de o reuniune de maşini de stare. Detalii se pot găsi în Hack [1972].

7.4.4 Reţele Petri simple

Hack a definit de asemenea o altă clasă a reţelelor Petri numită clasa reţelelor Petri simple [Hack 1972]. Reţelele simple presupun ca fiecare tranziţie să aibă cel mult o locaţie de intrare comună cu intrarea altei tranziţii servind astfel şi la restricţionarea modului în care pot apărea conflicte. Nu s-a făcut nici o cercetare asupra proprietăţilor acestei subclase a reţelelor Petri.

Figura 7.14: Un grafic ce indică unele dintre configuraţiile structurale permise şi nepermise pentru unele subclase de reţele Petri

117

Reţ

ele

sim

ple

Reţ

ele

cu a

lege

re

libe

Gra

furi

m

arca

te

Nep

erm

ise

Per

mis

e

Page 118: Teoria Retelelor Petri Si Modelarea Sistemelor

8 Modele înrudite pentru calculul paralel

Reţelele Petri au fost definite ca modele ale sistemelor concurente. După cum am văzut, reţelele Petri au o bună putere de modelare, fiind capabile să modeleze o gamă largă de sisteme. Totuşi, reţelele Petri nu sunt singurul model pentru calculul paralel; s-au definit, cercetat şi folosit de asemenea şi alte modele. În acest capitol, prezentăm unele din aceste modele şi examinăm relaţia dintre acestea şi reţelele Petri. Scopul acestui capitol este de a sugera varietatea de modele care pot fi folosite în modelarea sistemului şi puterea relativă de modelare a modelelor.

O problemă majoră care a apărut din dorinţa de a găsi relaţii între diversele modele este aceea de a stabili o metodă potrivită pentru a compara modelele calculului paralel. Vrem să putem să demonstrăm că un model A este „mai puţin puternic” decât un model B sau este „echivalent”. Noţiunile de echivalenţă şi incluziune sunt de importanţă critică aici.

S-au realizat câteva studii asupra relaţiilor între diferitele modele. Cercetările lui Bredt [1970a], Boer [1973a] şi Miller [1973] au ajutat la centralizarea descrierilor câtorva modele. În particular, Bredt a oferit o definiţie generală a unei structuri centrale care permite ca diferitele modele să fie definite într-o manieră unitară. Aceasta a condus la rezultatele din [Peterson 1973] şi [Peterson şi Bredt 1974] care compară diferitele modele pentru a crea o ierarhie de modele, legate prin puterea lor de modelare. Separat, Argewala [1974b] a comparat o mulţime generoasă de modele şi a produs o altă ierarhie cu o structură similară.

Rezultatele, atât ale lui Peterson şi Bredt [1974] cât şi ale lui Argewala [1974b], au fost obţinute prin compararea limbajele modelelor. O clasă de modele A defineşte o clasă de limbaje L(A). Spunem că două clase de modele A şi B sunt echivalente dacă L(A) = L(B). Aceasta înseamnă că pentru orice instanţă a a unei clase de modele A cu limbajul L(a) există o instanţă b a clasei B cu un limbaj identic L(a) = L(b).

Dacă limbajele caracterizează într-adevăr modelele, atunci ele sunt un instrument potrivit pentru a compara două clase de modele.

Totuşi, după cum am văzut, nu este chiar evident cum să definim un limbaj pentru un model al calculului paralel. Cercetările limbajelor reţelelor Petri au dat naştere la 12 definiţii diferite pentru limbaje, majoritatea dintre ele aparent distincte. Aceste limbaje diferite pot da naştere la relaţii diferite de echivalenţă şi incluziune între modele. Pe de altă parte, dacă diferenţele dintre modele sunt într-adevăr semnificative, s-ar putea să fie insensibile la variaţii (minore) în definirea echivalenţei şi incluziunii. Astfel, rezultatele diferite ale lui Argewala [1974b] şi ale lui Peterson şi Bredt [1974] sunt mai semnificative datorită definiţiilor diferite folosite pentru relaţiile de echivalenţă şi incluziune.

Totuşi aceasta nu înseamnă că aceste rezultate sunt dincolo de orice dispută. Lipton et. al. [1974] a comparat de asemenea un număr mare de modele ale calculului paralel şi a ajuns la rezultate diferite. Această comparaţie se bazează pe o analiză detaliată a structurii spaţiului stărilor instanţelor specifice unei clase de modele şi astfel rezultatele obţinute diferă semnificativ de cele ale lui Argewala [1974b] şi ale lui ale lui Peterson şi Bredt [1974].

Astfel, dat fiind faptul că există unele diferenţe de opinie între cercetători despre cum ar trebui de comparat modelele, cum ar trebui să le comparăm? Ar fi mai bine să considerăm o abordare conservativă, şi astfel să ne bazăm în comparaţiile din acest capitol atât pe caracteristicile structurale cât şi pe cele de comportament. Spunem că o clasă de modele A este de putere mai mică sau egală cu (inclusă în) o clasă de modele B dacă fiind dată o instanţă a a clasei A există un algoritm pentru a crea o instanţă b a clasei B astfel încât:1. Fiecare componentă structurală a modelului a este reprezentată printr-o mulţime (mică)

identificabilă de componente ale modelului b. Dimensiunea modelului b (numărul de părţi) este în cel mai prost caz un multiplu constant al dimensiunii modelului a, cu constanta determinată de clasele de modele A şi B şi nu de instanţele a şi b.

2. Orice secvenţă de acţiuni din a poate fi simulată de o secvenţă din b, cu lungimea secvenţei din b cel mult un multiplu constant al lungimii secvenţei din a.

118

Page 119: Teoria Retelelor Petri Si Modelarea Sistemelor

3. Modelul b se blochează definitiv numai când modelul a o face. Un model se blochează definitiv dacă toate acţiunile devin imposibile.Motivaţia acestor constrângeri ar trebui să fie relativ evidentă. Prima constrângere încearcă să

stabilească numai dacă cele două modele sunt similare structural; a doua constrângere se asigură că cele două modele se comportă la fel. Totuşi, nu cerem ca cele două modele să corespundă exact; este permis să reprezentăm o acţiune într-un model printr-o secvenţă (scurtă) de acţiuni din celălalt model sau o componentă (precum o locaţie sau o tranziţie) printr-un (mic) multiset de componente. Astfel, o acţiune dintr-un model poate fi modelată printr-o secvenţă de două acţiuni din celălalt model. Ultima constrângere cere ca modelul cel mai puternic să nu poată face o greşeală atunci când cel mai puţin puternic nu face. Aceasta permite construirea unui model care alege nedeterminist o acţiune din mai multe şi anulează singur alegerea dacă găseşte că aceasta nu este cea potrivită.

Două modele sunt echivalente dacă fiecare îl include pe celălalt. Aceasta permite ca orice instanţă a oricăruia dintre modele să fie convertită la o instanţă a celuilalt model.

Cu aceste consideraţii în minte, vom considera acum relaţia dintre următoarele modele de calcul paralel:1. Automate cu stări finite [Hopcraft şi Ullman 1969; Bredt 1970b; Gilbert şi Chandler 1972]2. Grafuri marcate [Commoner et. al. 1971]3. Grafuri computaţionale [Karp şi Miller 1966]4. Sisteme P / V [Dijkstra 1968; Bruno et. al. 1972]5. Sisteme „mesaj” [Riddle 1971]6. Grafuri UCLA [Ciostelow 1971; Cerf et. al. 1971; Cerf 1972; Cerf et. al. 1972]7. Sisteme de adunare a vectorilor [Karp şi Miller 1968]8. Sisteme de înlocuire a vectorilor [Keller 1972]9. Reţele Petri extinse [capitolul 7]

Pentru fiecare clasă de modele definim mai întâi modelul şi apoi dăm un exemplu. Discutăm apoi relaţiile dintre acesta şi alte modele ale calculului paralel.

8.1 Automate cu stări finite

Am văzut deja în capitolele 3.3.1 şi 7.4.1 că automatele cu stări finite pot fi cu uşurinţă transformate în reţele Petri. Automatele cu stări finite au fost folosite de câţiva cercetători ca model pentru calculul paralel. Bredt [1970a] a definit un model bazat pe componenta hardware a calculatorului. Fiecare procesor este modelat ca un automat cu stări finite cu linii de intrare şi ieşire care conectează un procesor la alţi procesori. Starea fiecărei linii de intrare şi ieşire este 0 sau 1. De vreme ce fiecare linie de ieşire pentru un procesor este linie de intrare pentru alt procesor şi există un număr finit de procesori şi un număr finit de linii fiecare cu o stare finită, întregul sistem este unul cu stări finite.

Gilbert şi Chandler [1972] au folosit un model cu memorie comună în loc de unul cu linii de comunicare. Aceasta înseamnă că modelul lor este orientat mai mult înspre modelarea proceselor software cu memorie comună decât înspre modelul bazat pe componenta hardware al lui Bredt. Acest model este însă unul cu stări finite şi de aceea inclus în modelul de reţea Petri.

8.2 Grafuri marcate

Grafurile marcate au fost discutate în capitolul 7.4.2. Ca o subclasă a reţelelor Petri, grafurile marcate au evident o putere mai mică de modelare decât reţelele Petri. Grafurile marcate nu sunt direct comparabile cu automatele cu stări finite. Se obţin astfel relaţiile din figura 8.1 dintre reţelele Petri, automatele cu stări finite şi grafurile marcate.

119

Page 120: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 8.1: Relaţiile dintre reţelele Petri, automatele cu stări finite şi grafurile marcate

8.3 Grafuri computaţionale [Karp şi Miller 1966]

Unul dintre primele modele ale calculului paralel a fost modelul grafului computaţional [Karp şi Miller 1966]. Acest model a fost în principal proiectat pentru a reprezenta execuţia în paralel a expresiilor aritmetice programabile.

Un graf computaţional G este definit printr-un graf orientat G = (V, A), unde V = {v1, …,vn} este o mulţime de vârfuri şi A = {a1, …,am} este o mulţime de arce.

Fiecare arc ai A este o pereche ordonată de vârfuri (vj, vk) care reprezintă un arc de la vj la vk. Fiecărui arc ai = (vj, vk) i se asociază un cvadruplu (Ij,k, Vj,k, Wj,k, Tj,k). Fiecare arc reprezintă o coadă de date produse de procesor pentru nodul vj pentru a fi folosite de procesor pentru nodul vk. Ij,k

dă numărul iniţial de date din coadă pentru arcul de la vj la vk. Un nod vk este activ dacă sunt cel puţin Ij,k date pe fiecare arc orientat spre vk dinspre nodul vj. Tj,k este un prag. Operaţia asociată nodului vk se execută prin mutarea a Wj,k date din coadă (Wj,k Tj,k) pentru fiecare arc îndreptat spre vk. Când funcţionarea pentru vk se termină, pune vk,r date în coada asociată fiecărui arc (vk, vr) îndreptat de la un nod vk la un nod vr. Figura 8.2 este un exemplu de graf computaţional. În starea iniţială, nodul v1 este activat, de vreme ce are o intrare şi această intrare are trei date în coada sa. Când v1 se execută mută un articol din acestă coadă şi după terminare pune un articol pe arcul de la v1 la v2. În această nouă stare se pot executa fie v1, fie v2 de vreme ce fiecare dintre ele au în coada ataşată suficiente articole pentru a-şi satisface pragurile.

Figura 8.2: Un graf computaţional

Un graf computaţional este uşor de modelat ca o reţea Petri. Fiecare arc este reprezentat printr-o locaţie, şi fiecare nod al grafului computaţional devine o tranziţie. Tranziţia corespunzătoare nodului vk are Tj,k arce de intrare din locaţia ce reprezintă un arc de la vj la vk. Acest fapt ne asigură că tranziţia este activă numai dacă este atins pragul. Totuşi, când tranziţia se declanşează poate să mute numai Wj,k din aceste jetoane, astfel că de la tranziţia vk la locaţia reprezentând arcul de la vj la vk sunt Tj,k – Wj,k arce direcţionate. În plus, se pun Vk,r jetoane în locaţii reprezentând arce de la nodul vk la nodul vr. Marcajul iniţial este determinat de Ij,k, după cum puteam să ne aşteptăm.

Figura 8.3 arată reţeaua Petri construită astfel din graful computaţional din figura 8.2.

120

Reţele Petri

Grafuri marcate Automate cu stări finite

v3 v2 v1

v5v4 v6

v7 v8

(1 1 1 1) (0 1 1 1)

(0 1 1 1)

(0 1

1 1

)

(0 1

1 1

)

(0 1 1 1) (0 1 1 1)

(0 1

1 1

)

(0 1 1 1)(0 1 1 1)

(0 1 1 1)(0 3 3 3)

(1 0 0 1)(3 0 1 1)

Page 121: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 8.3: O reţea Petri echivalentă cu graful computaţional din figura 8.2

După o scurtă privire se poate observa că grafurile marcate pot fi modelate ca grafuri computaţionale cu Tj,k = Wj,k pentru toate nodurile vj = vk. Totuşi, grafurile computaţionale sunt mai puternice decât grafurile marcate din cauză că pot avea Tj,k > Wj,k.

Pe de altă parte, grafurile cu stări finite şi automatele cu stări finite sunt incomparabile, la fel cum sunt şi grafurile marcate cu automatele cu stări finite. Grafurile computaţionale nu pot să modeleze decizii sau execuţii condiţionate – aceeaşi limitare pe care o au şi grafurile marcate.

Astfel, ierarhia modelelor în acest punct arată ca în figura 8.4.

Figura 8.4: Adăugarea grafurilor de calcul la ierarhie

Karp şi Miller [1966] au cercetat grafurile computaţionale, în special problemele legate de viabilitate şi siguranţă. De fapt, Karp şi Miller erau interesaţi în a se asigura că un graf computaţional va determina şi nu va fi determinat de condiţiile pentru ca un graf computaţional să se termine (adică, să nu mai fie activ). Deoarece arcele (locaţiile) reprezintă cozi de date, cercetările lui Karp şi Miller asupra mărginirii se transmit asupra determinării lungimii maxime a cozilor. Aceste diferenţe în notaţie şi motivaţie, la fel ca şi diferenţa în definirea modelelor pentru grafuri computaţionale şi pentru grafuri marcate arată că nimeni nu a încercat să compare rezultatele şi algoritmul lui Karp şi Miller [1966] despre grafuri computaţionale cu rezultatele obţinute pentru grafuri marcate [Commoner et. al. 1971].

121

v7v8

v6

v5

v4

v3v2

v1

Grafuri de calcul Automate cu stări finite

Grafuri marcate

Reţele Petri

Page 122: Teoria Retelelor Petri Si Modelarea Sistemelor

8.4 Sisteme P / V [Dijkstra 1968; Bruno et. al. 1972]

Operaţiile P şi V cu semafoare au fost mai întâi introduse de Dijkstra [1968] pentru a ajuta la rezolvarea problemelor de coordonare (sincronizare) în sisteme cu procese paralele, putând fi folosite pentru a modela sincronizarea şi comunicaţiile la fel ca şi reţelele Petri. Patil a folosit această abordare când a definit problema fumătorilor de ţigări pentru a arăta limitările sistemelor care pot folosi numai operaţii P şi V între procese. Cu toate acestea, sistemele P şi V sunt foarte populare şi literatura de specialitate abundă în discuţii şi aplicaţii ale acestora; spre exemplu, Liskov [1972].

Capitolul 3.4.8 a arătat că operaţiile P şi V pot fi modelate cu ajutorul reţelelor Petri, iar demonstraţia lui Patil [Patil 1971] a arătat că incluziunea este corectă. Acestea sunt problemele (spre exemplu, problema fumătorilor de ţigări) care pot fi rezolvate cu ajutorul reţelelor Petri şi nu numai cu operaţii P şi V. Totuşi, sistemele P/V sunt suficient de puternice pentru a include atât modelele grafurilor computaţionale [Lipton şi Snyder 1974] cât şi modelele automatelor cu stări finite.

Pentru a converti un automat cu stări finite într-un sistem P/V, folosim un proces separat pentru a modela fiecare stare a automatului cu stări finite. Asociem un semafor fiecărei stări. Fie Q = {q1, …,qn} mulţimea de stări şi : Q x I Q funcţia de tranziţie, cu o mulţime de acţiuni . Asociem stării qi o stare si şi un proces. Procesul execută mai întâi o P(Si). În general va aştepta aici până când starea automatului va deveni qi. După P(si), procesul declanşează arbitrar orice pentru care (qi, ) este definită şi execută P(Sj), unde qj = (qi, ). Apoi acest proces revine la P(Si) – ul său. Figura 8.5 ilustrează această conversie într-un sistem P/V a automatului cu stări finite din figura 8.6. Semafoarele sunt iniţial 0, cu excepţia celui ataşat stării iniţiale, care este iniţializat la valoarea 1.

Figura 8.5: Un automat cu stări finite

Figura 8.6: Sistem P/V pentru automatul cu stări finite din figura 8.5

Pentru a converti un graf computaţional la un sistem P/V, asociem un semafor Sj,k cu fiecare arc (vj, vk) din graf. Valoarea semaforului va fi numărul de articole care aşteaptă în coada ataşată acelui arc. Astfel, valoarea semaforului Sj,k este iniţial Ij,k. Pentru fiecare nod din graful computaţional se crează un proces. Procesul nodului vk execută mai întâi Tj,k P operaţii asupra semaforului Sj,k pentru toate arcele (vj, vk) îndreptate spre vk. Aceasta ne asigură că fiecare coadă are cel puţin Tj,k articole. Apoi, deoarece fiecare operaţie P a decrementat semaforul şi efectul corect este acela de a micşora Sj,k cu Wj,k, executăm Tj,k – Wj,k V operaţii asupra semaforului Sj,k pentru a

122

q1 q2

q3 q4

P(S1)

V(S1) V(S2)

Proces P1

P(S2)V(S3)

Proces P2

P(S3)

V(S1) V(S4)

Proces P3

P(S4)V(S3)

Proces P4

Page 123: Teoria Retelelor Petri Si Modelarea Sistemelor

reface valoarea corectă a lui Sj,k. Acum terminăm procesul pentru nodul vk executând vk,r operaţii asupra semaforului Sk,r pentru fiecare arc (vk, vr) care iese din vk.

Conversia este ilustrată în figura 8.7 pentru nodurile v3 şi v4 ale grafului computaţional din figura 8.2.

Figura 8.7: Procesele sistemului P/V pentru două din nodurile grafului computaţional din figura 8.2

Observăm că graful computaţional poate să testeze şi să introducă din mai multe surse în acelaşi timp, în timp ce sistemele P/V pot să testeze şi să introducă din mai multe surse printr-o secvenţă de teste şi intrări din surse simple. Incapacitatea de a testa şi de a introduce din mai multe surse simultan este cheia demonstraţiei lui Patil referitoare la limitările sistemelor P/V, problema fiind că un alt proces poate să ocupe a doua sursă în timp ce Dvs. o ocupaţi pe prima, ceea ce conduce la o blocare definitivă (deadlock). Aceasta nu este şi o problemă a grafurilor computaţionale deoarece sursele nu sunt împărţite între procesori – niciodată două noduri nu împart un arc de intrare. Această idee este crucială pentru a construi un sistem P/V care să nu se blocheze definitiv (deadlock)(termine) până când graful computaţional corespunzător nu se blochează definitiv de asemenea (termină). Prin adăugarea sistemelor P/V la ierarhia noastră se obţine figura 8.8.

Figura 8.8: Adăugarea sistemelor P/V la ierarhia de modele

8.5 Sisteme de transmitere a mesajelor [Riddle 1971]

Sistemele în care procesele comunică prin operaţii P şi V cu semafoare nu sunt dintre cele mai performante. Sugestia noastră pentru mecanisme mai bune sunt mesajele. Un sistem „mesaj” este o colecţie de procese care comunică prin mesaje. Sunt posibile două operaţii cu mesaje: trimitere şi primire. Trimiterea unui mesaj este similară cu o operaţie V; primirea unui mesaj este similară cu o operaţie P. Dacă este prezent un mesaj când se execută o primire, receptorul aşteaptă până când este trimis un mesaj.

Acest mecanism a fost folosit ca bază a unei scheme de modelare de către Riddle [1972]. Acest model pare mult mai potrivit pentru modelarea protocoalelor într-o reţea de calculatoare. Riddle a considerat o mulţime (finită) de procese care comunică prin intermediul mesajelor. Mesajele sunt trimise către şi cerute de către procese speciale numite procese de legătură (cutii poştale). Procesele de legătură oferă o colecţie de mesaje care au fost trimise şi nu au fost încă primite, sau cereri pentru mesaje care au fost făcute dar nu au fost încă satisfăcute. Celelalte procese ale sistemului se numesc procese de program şi sunt reprezentate în limbajul de modelare al proceselor program (PPML).

Un sistem exemplu cu trei procese este dat în figura 8.9.

123

P(S13)P(S33)V(S33)V(S37)

P(S24)P(S24)P(S24)P(S74)P(S45)

Sisteme de mesaje

Grafuri de calcul Automate cu stări finite

Grafuri marcate

Sisteme P/V

Page 124: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 8.9: Un sistem de procese descrise în limbajul de modelare al proceselor program (PPML)

După cum se poate vedea, descrierea PPML a proceselor este în mod esenţial o schemă. Este interesantă numai activitatea legată de transmiterea mesajelor în sistem. Mesajele sunt articole abstracte a căror singură caracteristică este un tip. Într-un sistem poate fi numai un număr finit de tipuri de mesaje. Mesajele sunt trimise din şi primite într-un buffer de mesaje în fiecare proces. Fiecărui proces îi corespunde un singur buffer. Articolele în PPML sunt:- set t: pune un mesaj de tipul t în bufferul de mesaje- send l: trimite mesajul din bufferul de mesaje la procesul de legătură l- receive l: cere un mesaj de la procesul de legătură l. Aşteaptă (dacă este necesar) până când

unul este returnat. Mesajul este plasat în bufferul de mesaje- unless t s: testează tipul mesajului din bufferul de mesaje şi sare la instrucţiunea s numai dacă

mesajul nu este de tipul t- if – internal – test s: modelează un test intern, dependent de date. Fie continuă cu următoarea

instrucţiune, fie sare la instrucţiunea etichetată cu s- go-to s: transferă controlul instrucţiunii s- end: termină procesul

Sistemul PPML modelează o mulţime de procese paralele. Fiecare proces este pornit la începutul programului său şi execută acest program până când întâlneşte o instrucţiune end. Riddle a arătat cum se construieşte o expresie de transfer mesaj care să reprezinte fluxul posibil de mesaje în sistem şi a folosit această expresie pentru a examina structura sistemului pentru o utilizare corectă. Această expresie de transfer mesaj este folosită în acelaşi scop ca limbajul unei reţele Petri. De aceea, vom arăta cum o descriere PPML a unui sistem de procese poate fi convertită într-o reţea Petri al cărei limbaj este egal cu expresia de transfer mesaj din analiza lui Riddle. Această conversie ignoră execuţia instrucţiunilor individuale ale descrierilor PPML, deşi ele pot fi reprezentate în limbajul reţelei Petri numai cu nişte modificări minore.

Pentru a modela un proces ca o reţea Petri, folosim, pentru fiecare proces, un jeton pe post de numărător de program (program counter). Prezenţa unui mesaj într-un proces de legătură este de asemenea reprezentată printr-un jeton. Deoarece mesajele sunt identificate prin tip, este necesar ca modelarea fiecărui tip de mesaj într-un proces de legătură să se facă printr-o locaţie separată. O proprietate foarte importantă a sistemelor PPML este aceea că numărul tipurilor de mesaje este finit.

124

Dispozitiv de intrare

L2

L3

L1

L5

L4

ProgramDispozitiv de

ieşire

Program

Receive L1;A1: Set READ;

Send L3;Receive L2;Unless INPUT A2;Set OUTPUT;Send L5;Go to A1;

A2: Send L4;End;

Dispozitiv de intrare

A1: Receive L3;If-internal-test A2;Set OUTPUT;Go to A3;

A2: Set EOF;A3: Send L2;

Go to A1;End;

Dispozitiv de ieşire

A1: Receive L5;Go to A1;End;

Page 125: Teoria Retelelor Petri Si Modelarea Sistemelor

Fiecare proces program este de asemenea finit. Numai coada de mesaje presupune o dimensiune potenţial nelimitată a spaţiului de stocare. Astfel, capacitatea de a modela procesele de legătură şi de a reprezenta corect instrucţiunile de trimitere (send) şi primire (receive) este aspectul cel mai important al transformării unei descrieri PPML într-o reţea Petri. Prin modelarea proceselor de legătură printr-o mulţime de locaţii (una pentru fiecare tip de mesaj), putem reprezenta o instrucţiune de trimitere (send) printr-o tranziţie care pune un jeton în locaţia reprezentând procesul de legătură şi tipul de mesaj corespunzător. Instrucţiunea de primire (receive) mută numai un jeton din oricare dintre locaţiile unui proces de legătură. Locaţia care furnizează jetonul determină tipul mesajului care a fost primit. Această informaţie poate fi folosită în orice subsecvenţă, dar nu în instrucţiuni.

Singurul simbol în expresia de transfer mesaj sunt tipurile mesajelor pentru mesajele care sunt trimise către sau primite de la un proces de legătură. Deoarece fiecare tranziţie din reţeaua Petri produce un simbol în limbajul acelei reţele Petri, pot fi modelate numai instrucţiunile send şi receive într-un sistem PPML. Astfel apar două tipuri de locaţii într-o reţea Petri. Un tip de locaţii, etichetate se comportă ca un numărător pentru mesajele de tipul mj din procesul de legătură li. Celălalt tip de locaţii reprezintă instrucţiunile send şi receive ale programelor PPML. Fie instrucţiunile etichetate unic s1,…,st. Etichetăm locaţia reprezentând o instrucţiune si cu un mesaj mj

din bufferul de mesaje, şi anume prin . Un jeton într-o locaţie asociată cu o instrucţiune si

înseamnă că instrucţiunea si tocmai a fost executată. Figura 8.10 ilustrează cum poate fi modelată într-o reţea Petri o instrucţiune de trimitere (primire) la (de la) sk. În figura 8.10, locaţia reprezintă locaţia asociată cu orice instrucţiune care precede instrucţiune sk.

Figura 8.10: Transformarea din instrucţiuni send şi receive în tranziţii ale unei reţele Petri.(a) Modelarea unei instrucţiuni de trimitere la sk cu un mesaj de tipul m din bufferul de mesaje.

Procesul de legătură este lj.(b) Modelarea instrucţiunii de primire la sk de la un proces de legătură lj. Tipurile de mesaje posibile

din lj sunt m1, m2, mt.

Mai rămâne de arătat că este posibil să se determine ce instrucţiuni pot precede alte instrucţiuni în programul PPML. Observăm că trebuie să considerăm fiecare instrucţiune ca o pereche constând dintr-un tip de mesaj şi un număr de instrucţiune, deoarece aceeaşi instrucţiune cu

125

msip ,

mslp ,msk

p ,

mSend lj;(a)

msip ,

tk msp ,

tj mlp ,

2,mskp

2,ml jp

1,mskp

1,ml jp

m1 m2 m3(b)

Page 126: Teoria Retelelor Petri Si Modelarea Sistemelor

un tip diferit de mesaj în bufferul de mesaje va fi modelată altfel în reţeaua Petri. Cea mai evidentă metodă de a determina predecesorii unei instrucţiuni este de a porni de la începutul fiecărui program PPML cu o instrucţiune de pornire specială (care va deveni locaţia de pornire) şi de a urma descrierea programului generând toate instrucţiunile send şi receive posibile care pot urma acestă instrucţiune cu conţinuturile bufferelor de mesaje corespunzătoare. Acest proces se repetă pentru toate instrucţiunile nou accesibile până când toate aceste astfel de instrucţiuni send şi receive au fost generate şi succesori lor identificaţi. Deoarece numărul de instrucţiuni dintr-o descriere PPML şi numărul de tipuri de mesaje sunt finite, se poate genera numai un număr finit de perechi de instrucţiuni/tipuri de mesaje. Această procedură este similară cu ecuaţiile caracteristice folosite de Riddle [1972] pentru a construi expresia de transfer mesaj. Figura 8.11 listează instrucţiunile şi posibilii succesori pentru sistemul PPML din figura 8.9.

Figura 8.11: Instrucţiunile succesor pentru sistemul PPML din figura 8.9

Odată ce sucesorii unei instrucţiuni au fost determinaţi, această instrucţiune poate fi folosită pentru a identifica posibilii succeori ai unei alte instrucţiuni şi astfel pentru a construi o reţea Petri care este echivalentă cu sistemul PPML, folosind tranziţiile aşa cum se arată în figura 8.10. O locaţie specială de pornire este predecesorul primelor instrucţiuni ale fiecăruia dintre procesele sistemului. Figura 8.12 transformă sistemul PPML din figura 8.9 în reţeaua Petri echivalentă.

Figura 8.12: O reţea Petri echivalentă cu sistemul PPML din figura 8.9

126

p1: (Receive L1, _) (Send, L3, READ) Dispozitiv de intrarep2: (Send L3, READ) (Receive L2, INPUT) p7: (Receive L3, READ) (Send L2, INPUT)

(Receive L2, EOF) (Send L2, EOF) p3: (Receive L2, INPUT) (Send L5, OUTPUT) p8: (Send L2, INPUT) (Receive L3, READ)p4: (Receive L2, EOF) (Send L4, EOF) p9: (Send L2, EOF) (Receive L3, READ)p5: (Send L5, OUTPUT) (Send L3, READ) Dispozitiv de ieşirep6: (Send L4, EOF) ( ) p10: (Receive L5, OUTPUT) (Receive L5, OUTPUT)

s0

p1

p2

s1

p7

p8 p9 p4 p3

p5p6

s0

p10

L1, START

START

READ

OUTPUT

OUTPUTOUTPUT

L5, OUTPUT

INPUT

READ

READREAD

L3, READ

INPUT

READL2, EOF

L2, INPUT

L4, EOF

EOF

EOF

Page 127: Teoria Retelelor Petri Si Modelarea Sistemelor

Această scurtă descriere a transformării unui sistem de transmitere mesaje într-o reţea Petri arată că acest model este inclus în puterea de modelare a reţelelor Petri, şi că mulţimea de expresii de transfer mesaje, considerată ca o clasă a limbajelor, este o submulţime a clasei limbajelor reţelelor Petri.

Deoarece sistemul P/V poate fi modelat ca un sistem de transmitere de mesaje ce are toste mesajele de acelaşi tip, sistemul P/V este inclus în sistemele de transmitere mesaje. Este relativ uşor de construit un sistem de transmitere de mesaje care să rezolve problema fumătorilor de ţigări, deci incluziunea sistemelor P/V în sistemele de transmitere mesaje este corectă. Pe de altă parte, sistemele de transmitere de mesaje pierd capacitatea de a avea intrări de la mai multe surse simultan, şi de accea nu sunt echivalente cu reţelele Petri. În încercarea de a modela o tranziţie cu mai multe intrări va apărea unul din următoarele două cazuri:1) Un proces va aştepta să primească jetoane (mesaje) de la toate intrările sale, dar s-ar putea să nu

se întâmple aşa şi astfel va reţine jetoane care s-ar putea să fie necesare pentru a permite altor tranziţii să continue. Aceasta va duce la o blocare definitivă în sistemul de trimitere mesaje, care nu corespunde cu blocările definitive din reţelele Petri, violând a treia restricţie.

2) Procesul va evita să creeze false blocări definitive determinând dacă jetoanele care mai sunt necesare nu există şi returnând jetoanele pe care le-a primit locaţiilor (proceselor de legătură) de la care le-a primit. Această activitate s-ar putea să se desfăşoare oricât de des şi aceasta înseamnă că nu există nici o margine superioară a lungimii secvenţei de acţiuni în sistemul de transmitere mesaje ce corespunde unei secvenţe mărginite de tranziţii care se declanşează dintr-o reţea Petri. Acest fapt violează cea de-a doua restricţie.

Riddle [1974] a prezentat o transformare care se află în cazul 1, conducând deci la false blocări definitive. În oricare dintre cazuri, vedem că sistemele de transmitere mesaje nu pot modela orice reţea Petri respectând constrângerile. Se obţine astfel ierarhia din figura 8.13.

Figura 8.13: Adăugarea sistemelor de transmitere mesaje la ierarhie

8.6 Grafuri UCLA [Ciostelow 1971; Cerf et. al. 1971; Cerf 1972; Cerf et. al. 1972]

Reţelele Petri modelează în termeni de grafuri calculul paralel. O altă modelare în termeni de grafuri a fost dezvoltată la Universitatea California din Los Angeles sub îndrumarea profesorului Estrin. Acest model este modelul calculului unui digraf complex (graful UCLA) [Baer 1968; Baer et. al. 1970; Valansky 1970; Gastelow 1971; Cerf 1972]. În acest model, sistemele sunt reprezentate prin grafuri cu arce complexe orientate. Un arc complex este un arc cu (potenţiale) multiple surse şi destinaţii.

Operaţiile logice controlează secvenţa de operaţiuni în noduri. Dacă intrarea logică a unui nod este AND (*), sunt necesare jetoane pe fiecare arc de intrare pentru a activa o operaţie. Pentru OR (+) logic, sunt necesare jetoane numai pe un arc de intrare. Execuţia nodului scoate jetoanele de activare de pe arcele de intrare şi pune jetoane pe arcele de ieşire, în concordanţă cu ieşirea logică. Pentru ieşirea logică AND, se pun jetoane pe toate arcele de ieşire, iar pentru OR logic, se pun

127

Reţele Petri

Sisteme de mesaje

Grafuri de calcul Automate cu stări finite

Grafuri marcate

Sisteme P/V

Page 128: Teoria Retelelor Petri Si Modelarea Sistemelor

jetoane pe orice arc de ieşire. Numărul de jetoane implicate pentru o pereche nod – arc dată dă gradul (sau multiplicitatea) acestei perechi, şi poate fi orice număr întreg nenegativ.

Figura 8.14 este un exemplu de graf UCLA: Observăm că unele arce au surse (cozi) şi destinaţii (capete) multiple. De asemenea observăm că operatorul logic al fiecărei perechi arc – nod este marcat fie prin *, pentru AND logic, fie prin +, pentru OR logic. Gradul unui arc este indicat printr-un număr mic acolo unde arcul întâlneşte nodul. Gradul este omis dacă este 1, la fel şi operatorul logic când nodul are ca intrare un singur arc. În exemplul dat, nodul a poate să se declanşeze de fiecare dată când arcul S are un jeton. Când nodul a se declanşează, scoate jetonul din arcul S şi pune jetoane atât pe arcul A cât şi pe arcul B (AND logic). Pe de altă parte, nodul g va pune un jeton fie pe arcul K fie pe arcul G (OR logic). Nodul i este activ de fiecare dată când sunt două jetoane pe arcul J, sau un jeton pe arcul K.

Figura 8.14: Un graf orientat complex (graf UCLA)

Definiţia 8.1:Un graf UCLA este un 6-uplu C = (V, A, L, Q, S, F) unde:- V = {v1, …,vr} este o mulţime de vârfuri- A = {a1, …, as} este o mulţime de arce- L = {L-, L+}: V {*, +} sunt intrările (L-) şi ieşirile (L+) logice corespunzătoare fiecărui vârf- Q = {Q-, Q+}: V x A N sunt gradele de intrare (Q -) şi ieşire (Q+) pentru fiecare pereche arc –

vârf- S A este arcul de pornire, F A este arcul final

Arcele grafului sunt definite ca perechi ordonate de mulţimi de vârfuri. Prima componentă a perechii este mulţimea de vârfuri de intrare şi a doua componentă este mulţimea de vârfuri de ieşire. Arcul de pornire are o mulţime vidă de vârfuri de intrare, şi arcul final are o mulţime vidă de vârfuri de ieşire.

Transformarea grafului UCLA într-o reţea Petri este directă, datorită similitudinilor existente între cele două sisteme. Fiecare arc dintr-un graf UCLA este reprezentat printr-o locaţie într-o reţea Petri. În plus, reprezentăm un nod v printr-o locaţie pv şi două tranziţii şi . Prima tranziţie reprezintă iniţierea operaţiei asociate cu nodul v, iar a doua tranziţie reprezintă terminarea operaţiei. Aceste fapte sunt schiţate în figura 8.15. (Modelarea nodurilor unui graf UCLA prin tranziţii de iniţiere şi terminare nu este neapărat necesară, dar este utilă.)

128

a

b c

fed g

h

i

S

A B

CD F

G

H I

JK

X

x

*

*

x

x

x

*

2

Page 129: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 8.15: Reprezentarea de bază a elementelor unui graf UCLA ca reţele Petri

Figura 8.16 indică cum sunt reprezentate într-o reţea Petri echivalentă intrările şi ieşirile logice ale unui graf UCLA. Gradele mai mari decât 1 sunt modelate într-o reţea Petri prin arce multiple între locaţii şi tranziţii.

Figura 8.16: Transformarea diferitelor părţi ale unui graf UCLA în reţele Petri

Figura 8.17 transformă graful UCLA din figura 8.14 într-o reţea Petri echivalentă.Această transformare arată faptul că puterea de modelare a grafurilor UCLA este inclusă în

puterea de modelare a reţelelor Petri. Ar trebui să fie evident că o reţea Petri poate fi convertită într-un graf UCLA echivalent în care locaţiile sunt reprezentate ca arce ale unui graf UCLA şi tranziţiile ca noduri cu intrarea AND şi ieşire logică. Astfel, aceste două modele sunt echivalente ca putere de modelare. Figura 8.18 arată ierarhia modificată de modele.

Figura 8.18: Adăugarea grafurilor UCLA la ierarhie

129

multiarc

v

nod

pv

'vt

''vt

a1 al

v

a1 al

v

v’

* *

a1 al

v

a1 al

v

v’

+ +

v’

a1 al

v

a1 al

v

v’’

* *

a1 al

v

a1 al

v

v’’

+ +

v’’

Reţele Petri Grafuri UCLA

Sisteme de mesaje

Grafuri de calcul Automate cu stări finite

Grafuri marcate

Sisteme P/V

Page 130: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 8.17: Reţeaua Petri echivalentă cu graful UCLA din figura 8.14

8.7 Adunarea vectorilor şi sisteme de înlocuire

Sistemele de adunare a vectorilor au fost introduse de către Karp şi Miller [1968] ca un instrument matematic pentru analiza sistemelor cu procese paralele. Datorită formulării lor matematice simple, sistemele de adunare a vectorilor sunt de obicei folosite pentru demonstraţii formale ale proprietăţilor sistemelor Petri sau ale unor sisteme similare.

Definiţia 8.2:Un sistem de adunare a vectorilor V este o pereche V = (B, s), unde B = {b1, …,bm} este o mulţime de m vectori, numiţi vectori de bază sau deplasare. Vectorul s este vectorul de pornire. Toţi vectorii sunt compuşi din n valori întregi. Elementele lui s sunt nenegative.

Mulţimea de accesibilitate a unui sistem de adunare a vectorilor V este notată cu R(V) şi poate fi definită fie recursiv, prin următoarea definiţie:

130

S

a

b

D

e

C E

d f

H

h

I

A B

C

F G

g

K

J

i

X

i’’

i’

i’’

h’’

g’’

f’’d’’

a’’

b’

c’

b’’

d’

c’f’

f’

a’

g’’g’

e’’

h’

c’’ c’

Page 131: Teoria Retelelor Petri Si Modelarea Sistemelor

Definiţia 8.2:Mulţimea de accesibilitate R(V) a unui sistem de adunare a vectorilor V = (B, s) este cea mai mică mulţime cu proprietăţile:- s R(V)- dacă x R(V) şi x + bj 0, atunci x + bj R(V)

sau prin:

Definiţia 8.4:x R(V) dacă există o secvenţă de vectori de bază astfel încât:

Cu aceste definiţii este uşor de văzut că sistemele de adunare a vectorilor sunt echivalente cu reţelele Petri. Dată o reţea Petri, putem să construim un sistem de adunare a vectorilor unde vectorul de pornire s este marcajul iniţial, cu un vector de bază pentru fiecare tranziţie. Cele n componente ale vectorilor sistemului de adunare a vectorilor corespund marcajelor celor n locaţii ale reţelei Petri, sau în cazul vectorilor de bază, schimbărilor în marcaje datorate declanşării tranziţiilor asociate.

Similar, un sistem de adunare a vectorilor poate fi convertit într-o reţea Petri echivalentă, folosind locaţii pentru componentele vectorilor şi tranziţii pentru a reprezenta vectorii de bază.

De fapt, sistemele de adunare a vectorilor sunt echivalente cu reţelele Petri fără bucle, deoarece pentru o buclă schimbarea este zero, dar numărul de jetoane din locaţia buclă trebuie să fie diferit de zero. Acest lucru nu diminuează puterea sistemelor de adunare a vectorilor deoarece, aşa cum s-a văzut în capitolul 5.3, reţelele Petri fără bucle sunt echivalente cu reţelele Petri generale. Totuşi, pentru o modelare mai directă a reţelelor Petri cu bucle ca sisteme de adunare a vectorilor, Keller a definit sistemele de înlocuire a vectorilor Keller [1972].

Definiţia 8.3:Un sistem de înlocuire a vectorilor constă dintr-un vector de pornire s 0 şi din m perechi de vectori (Ui, Vi), astfel încât Ui Vi.

Vectorii Ui se numesc vectori test. Mulţimea de accesibilitate este definită astfel încât s să aparţină acesteia, şi dacă x este în mulţimea de accesibilitate astfel încât x Ui 0, atunci x Vi

este în mulţimea de accesibilitate.Sistemul de înlocuire a vectorilor modelează separat testul pentru activarea unei tranziţii de

acţiunea de declanşare a tranziţiei. Echivalenţa dintre sistemele de înlocuire a vectorilor şi reţelele Petri (generale) este evidentă.

Prin adăugarea în ierarhie a sistemelor de adunare a vectorilor şi a sistemelor de înlocuire a vectorilor se obţine figura 8.19. Importanţa sistemelor de adunare a vectorilor şi a celor de înlocuire a vectorilor rezultă din definiţiile lor matematice concise şi utilitatea acestor definiţii în demonstrarea proprietăţilor matematice ale sistemelor.

131

Page 132: Teoria Retelelor Petri Si Modelarea Sistemelor

Figura 8.19: Adăugarea sistemelor de adunare a vectorilor şi a sistemelor de înlocuire a vectorilor la ierarhie

8.8 Reţele Petri extinse

Ca o ultimă adăugare la ierarhie, menţionăm din nou reţelele Petri extinse studiate în capitolul 7: reţele Petri cu restricţii, tranziţii SAU-exclusiv, comutatoare, arce inhibitoare, priorităţi sau temporizate. Am văzut că toate aceste modele sunt echivalente cu maşinile Turing. Astfel, aceste modele includ modelele de reţele Petri. Ierarhia finală este prezentată în figura 8.21.

Figur 8.21: Ierarhia completă a modelelor calculului paralel

132

Sistem de înlocuire a vectorilor Sistem de adunare a vectorilor Reţele Petri Grafuri UCLA

Sisteme de mesaje

Grafuri de calcul Automate cu stări finite

Grafuri marcate

Sisteme P/V

Sistem de înlocuire a vectorilor Sistem de adunare a vectorilor Reţele Petri Grafuri UCLA

Sisteme de mesaje

Grafuri de calcul Automate cu stări finite

Grafuri marcate

Sisteme P/V

Modele de reţele Petri extinse

Page 133: Teoria Retelelor Petri Si Modelarea Sistemelor

A O scurtă teorie a multiseturilor

Teoria mulţimilor a fost îndelung utilizată în matematică şi informatică. Teoria multiseturilor este o extensie naturală a teoriei mulţimilor. Un multiset, asemenea unei mulţimi, este o colecţie de elemente peste acelaşi domeniu. Totuşi, spre deosebire de mulţimi, multiseturile permit apariţi multiple ale elementelor. În teoria mulţimilor, un element este fie membru al unei mulţimi, fie nu. În teoria multiseturilor un element poate să fie într-un multiset de zero ori (nu este în multiset) sau o dată, de două ori, de trei ori, sau de un număr oarecare, specificat, de ori.

Teoria multiseturilor a fost dezvoltată în [Cerf et. al. 1971] şi [Peterson 1976]. Spre exemplu, considerăm următoarele multiseturi peste domeniul {a, b, c, d}: B1 = {a,b,c}, B2 = {a}, B3

= {a, b, c, c}, B4 = {a, a, a}, B5 = {b, c, b, c}, B6 = {c, c, b, b}, B7 = {a, a, a, a, a, b, b, c, d, d, d, d, d, d, d}. Unele multiseturi sunt mulţimi, spre exemplu B1 şi B2. De asemenea, ca şi în cazul mulţimilor, ordinea elementelor nu este importantă, astfel că B5 şi B6 desemnează acelaşi multiset (multiseturile ordonate sunt secvenţe).

În teoria mulţimilor, conceptul de bază este relaţia de apartenenţă. Relaţia este definită între elemente şi mulţimi şi numeşte care elemente sunt membri ai căror mulţimi. Conceptul de bază în teoria multiseturilor este funcţia „număr de apariţii”. Această funcţie defineşte numărul de apariţii ale unui element într-un multiset. Pentru un element x şi un multiset B, notăm numărul de apariţii ale lui x în B prin #(x, B) şi înţelegem „numărul de x din B”.

Cu aceste concepte de bază, putem defini noţiunile fundamentale ale teoriei multiseturilor. Multe dintre concepte şi notaţii sunt împrumutate din teoria mulţimilor într-un mod cât se poate de evident. Dacă restricţionăm numărul de elemente dintr-un multiset astfel încât 0 #(x, B) 1, atunci dăm peste teoria mulţimilor.

A.1 Apartenenţa

Funcţia #(x, B) defineşte numărul de apariţii ale unui element x într-un multiset B. De aici rezultă că #(x, B) 0 pentru toţi x din B. Distingem două cazuri: număr de apariţii zero şi număr de apariţii diferit de zero. Un element x este membru al unui multiset B dacă #(x, B) > 0. Acest fapt se notează prin x B. Similar, dacă #(x, B) = 0, atunci x B.

Definim multisetul vid ca fiind multisetul fără nici un element. Pentru toţi x, #(x, ) = 0.

A.2 Cardinalitatea

Cardinalitatea |B| a unui multiset B reprezintă numărul total de apariţii ale elementelor din

multiset, .

A.3 Incluziune şi egalitate

Un multiset A este submultiset al unui multiset B (notăm A B) dacă fiecare element al lui A este de asemenea un element al lui B de cel puţin atâtea ori:

A B dacă #(x, A) #(x, B) pentru toţi xDouă multiseturi sunt egale (A = B) dacă #(x, A) = #(x, B) pentru toţi x. Din aceste definiţii

putem arăta imediat că:A = B dacă A B şi B A B oricare ar fi B multisetA = B implică |A| = |B|A B implică |A| |B|Un multiset A este inclus strict într-un multiset B (A B) dacă A B şi A B. Observăm

că #(x, A) < #(x, B) nu rezultă din A B, deşi avem că |A| < |B|.133

Page 134: Teoria Retelelor Petri Si Modelarea Sistemelor

A.4 Operaţii

Sunt definite patru operaţii cu multiseturi. Pentru două multiseturi A şi B definim:- reuniunea A B: #(x, A B) = max {#(x, A), #(x, B)}- intersecţia A B: #(x, A B) = min {#(x, A), #(x, B)}- suma A + B: #(x, A + B) = #(x, A) + #(x, B)- diferenţa A - B: #(x, A - B) = #(x, A) - #(x, A B)

Aceşti operatori au majoritatea proprietăţilor pe care vă aşteptaţi să le aibă. Reuniuna, intersecţia şi suma sunt comutative şi asociative. În plus:

A B A A BA – B A A + BDistincţia dintre reuniune şi sumă se vede clar din următoarele relaţii:|A B| |A| + |B||A + B| = |A| + |B|Din nefericire nu există astfel de relaţii şi între A B şi A – B. Stabilirea unei astfel de

relaţii este complicată de imposibilitatea de a scoate elemente dintr-un multiset care nu sunt acolo.

A.5 Spaţii de multiseturi

Numim un domeniu D ca fiind o mulţime de elemente din care sunt construite multiseturi. Spaţiul de multiseturi Dn este mulţimea tuturor multiseturilor ale căror elemente sunt în D astfel încât nici un element nu apare mai mult de o dată. Astfel, pentru toate B Dn:- x B implică x Dn

- #(x, B) n pentru toţi nMulţimea D este mulţimea tuturor multiseturilor peste un domeniu D; nu există nici o

limită a numărului de apariţii ale unui element într-un multiset.

A.6 Reprezentarea Parikh

Pentru un domeniu D = {d1, …,dn} există o corespondenţă naturală între fiecare multiset B peste D şi vectorul n-dimensional f = (f1, …, fn) definit de fi = #(di, B).

Acest vector este cunoscut ca reprezentarea Parikh.

A.7 Exemple

Fie D = {a, b, c, d} un domeniu. Atunci, pentru multiseturile A = {a,b}, B = {a, a, b, c}, C = {a, a, a, c, c} avem:

|A| = 2, |C| = 5A B = {a, a, b, c} = BA C = {a}A C = {a, a, a, b, b, c} = B CB C = {a, a, c}A + B = {a, a, a, b, b, c}A – B = C – A = {a, a, c, c}C – B = {a, c}

134