Sunteți pe pagina 1din 134

Ê    


     

     
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.

‘ ‘ 

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.

‘ 
      

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
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ă-p 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.

‘        

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 M.
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
‘          

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.

Model
Sistem Model de reţea Petri

Analiză
Revizuire
Proprietăţile sistemului

Æ  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.

‘          

Studiul reţelelor Petri s-a dezvoltat în două direcţii;


!      
  (O p p 
  ) 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.
!  
    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
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.

‘  !      

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
˜      

Î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.

‘ ! !!   

O reţea Petri este compusă din patru părţi:


! o ÷  p÷  pp S;
! o ÷  p÷p pp T;
! o R  pp I;
! o R  ppp O.
Funcţiile de intrare şi ieşire sunt relaţii între (mulţimea de tranziţii) şi  (mulţimea de
locaţii). Funcţia de intrare  este o funcţie de la o tranziţie  la o colecţie de locaţii () care poartă
numele de m m

 ale tranziţiei. Funcţia de ieşire Ý este o funcţie de la o tranziţie  la o
colecţie de locaţii Ý() care poartă numele de m m 
 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.

   
O 



 j este un 4-tuplu j(, ,,Ý), unde:
! ë 1,,  } este o mulţime finită de locaţii, u0;
! ë1,,÷} este o mulţime finită de tranziţii, ÷u0;
Mulţimea locaţiilor şi mulţimea tranziţiilor sunt disjuncte: m  .
!  M˜este funcţia de intrare, o funcţie de la mulţimea tranziţiilor la colecţia de locaţii
! Ý M˜ este funcţia de ieşire, o funcţie de la mulţimea tranziţiilor la colecţia de locaţii
Cardinalitatea mulţimii  este , şi cardinalitatea mulţimii este ÷. Vom nota un element
arbitrar din  cu p, 1 p , şi un element arbitrar din cu , 1  ÷.
Exemple de structuri de reţele Petri sunt date în figurile 2.1, 2.2 şi 2.3.

Æ  
   
   !

j(, ,,Ý), unde:
! ë 1,, 5 }
! ë1,,4}
! (1)ë 1},(2)ë 2, 3, 5},(3)ë 3 },(4)ë 4 }
! Ý(1)ë 2, 3, 5},Ý(2)ë 5},(3)ë 4},(4)ë 2, 4 }

Æ   
   
   !

j(, ,,Ý), unde:
! ë 1,, 6 }
! ë1,,5}
! (1)ë 1},(2)ë 3 },(3)ë 2, 3},(4)ë 4, 5, 5, 6},(5)ë 2 }

5
! Ý(1)ë 2, 3},Ý(2)ë 3, 5, 5},Ý(3)ë 2, 4 },Ý(4 )ë 4 },Ý(5)ë 6}

Æ  
   
   !

j(, ,,Ý), unde:
! ë 1,, 9 }
! ë1,,6}
! (1)ë 1},(2)ë 8},(3)ë 2, 5 },(4)ë 3},(5)ë 6, 7 },(6)ë 4, 9}
! Ý(1)ë 2, 3},Ý(2)ë 1, 7},Ý(3)ë 6 },Ý(4)ë 4 },Ý(5 )ë 9 },Ý(6)ë 7, 8}

O tranziţie p este o


 a unei tranziţii  dacă p§(); p este o

 
 a unei tranziţii  dacă p §Ý(); 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. ² m m   m 

 p a unei tranziţii  este numărul
de apariţii ale locaţiei în multisetul de intrare al tranziţiei ( p,()). Similar, ÷ m m   
m    
 p a unei tranziţii  este numărul de apariţii ale locaţiei în multisetul de ieşire al
tranziţiei ( p, Ý()). 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  ca fiind o intrare a
unei locaţii p, dacă p este o ieşire a tranziţiei . O tranziţie  este o ieşire a unei locaţii p dacă p
este o intrare a tranziţiei .

    
Definim R 

 şi R  
 după cum urmează:
 M˜,Ý M˜, 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:
! ( 1 )ë1},( 2)ë1,4},( 3)ë1,4},( 4)ë3 },( 5)ë1,2}
! Ý( 1)ë1},Ý( 2)ë2 },( 3)ë1,3},( 4)ë4 },( 5)ë2}

 "#!  !  

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 ÷ pR pp p.
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 p la o tranziţie 
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

6
locaţie), acesta este un "graf orientat bipartit". Ne vom referi la el pur şi simplu ca la un graf pentru
reţelele Petri.

   
Un graf de reţea Petri este un "multigraf orientat bipartit" ’  (, O), unde   ë1,,} este o
mulţime de vârfuri şi Oë1,,} este un multiset de arce direcţionate p(,), cu , §.
Reţeaua  poate fi partiţionată în două reţele disjuncte  şi astfel încât   , m  şi
pentru fiecare arc distinct p§O, dacă p(,), atunci fie § şi § , fie § şi §.
p2

t4
t1
p5
p4
p1 t2

t3
p3
Æ   Un graf de reţea Petri echivalent cu structura din figura 2.1
t5
p2 p6

t1

p1
t3
p4
p3

t4
t2
p5

Æ   Un graf de reţea Petri echivalent cu structura din figura 2.2

p8
p1
t2

t5
p7 p9
t6
p6
p2
t3
t1

p5
p3
t4
p4

Æ   Un graf de reţea Petri echivalent cu structura din figura 2.3

7
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.
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 j(, ,,
Ý) cu ë 1,,  }, ë1,,÷}. Acum putem defini un graf Petri după cum urmează:

   
Definim  . Definim O ca un multiset de arce direcţionate, pentru toate p§ şi tj § T:
(( p,),O)( p,())
 ((, p),O)( p,Ý())
’(,O) este un graf de reţea Petri care este echivalent cu structura j(, ,,Ý) 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  şi , 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.
 m 
m 
 j  (, , , Ý) este reţeaua Petri   ( , , , Ý) 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ă.
t2

p1 p4
t1 p2 t4
t5

t3 p3

Æ  Duala reţelei Petri din figura 2.4

  $  

Un ÷
 este o asignare de  locaţiilor unei reţele Petri. Conceptul de   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.

   
! Un ÷
 ½ al unei reţele Petri j (, ,, Ý) este o funcţie de la mulţimea locaţiilor  la
mulţimea numerelor naturale ©, şi anume ½M ©.
! Marcajul ½ poate fi, de asemenea, definit ca un vector -dimensional ½  (½ 1½), unde  
() şi p1.., ½p §©. Vectorul ½ dă pentru fiecare locaţie p din reţeaua Petri numărul
de jetoane pentru acea locaţie. Numărul de jetoane pentru poziţia p este ½p , unde p1...

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

O
÷
 ²(j, ½ ) este formată dintr-o structură de reţea Petri j(, ,,Ý) şi
un marcaj ½. Acest fapt se mai notează uneori ²(, ,,Ý,½).

Î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.
p2

t4
t1
p5
p4
p1 t2

t3
p3

Æ   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).
p2

t4
t1
p5
p4
p1 t2

t3
p3

Æ  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  locaţii este mulţimea tuturor vectorilor -dimensionali din ©n. Această mulţime, de
asemenea tot infinită, este desigur nenumărabilă.

 %&! #!   !  

Æ  p  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
 este  m 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
1 şi 2 sunt intrările tranziţiei 4, atunci 4 este permisă dacă atât 1 cât şi 2 au fiecare cel puţin un

9
jeton. Pentru o tranziţie 7 cu multisetul de intrare ë 6, 6, 4 }, locaţia 6 trebuie să aibă cel puţin
trei jetoane pentru a face posibilă tranziţia 7.

   
O
  § dintr-o reţea Petri marcată j  (, , , Ý) cu marcajul ½ este 
÷ dacă
pentru toate p§,½ ( p)u( p,()).
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 3 cu (3)ë 2 }
şi Ý(3)ë 7, 13} este posibilă ori de câte ori există cel puţin un jeton în poziţia 2. Tranziţia 3 se
declanşează prin mutarea unui jeton din poziţia 2 şi depozitarea unui jeton în poziţia 7 şi a altuia
în poziţia 13. Jetoanele suplimentare din locaţia 2 nu sunt afectate de declanşarea tranziţiei t3 (deşi
pot valida declanşări suplimentare ale 3). O tranziţie 2 cu (2)ë 21, 23} şi Ý(2)ë 23, 25, 25}
se declanşează prin mutarea unui jeton din 21 şi a unuia din 23 şi depozitarea unui jeton în 23 şi a
două jetoane în 25 (deoarece 25 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.

   
O tranziţie  într-o reţea Petri marcată cu marcajul ½ se poate declanşa de fiecare dată când este
posibilă. Declanşarea unei tranziţii  posibile produce un nou marcaj ½ definit de relaţia:
½ ( p)½( p )!( p ,())"( p ,Ý( ))
tj
tj tj tj
Æ  Ilustrează cum
marcajul unei locaţii se
schimbă când o tranziţie  se
declanşează. Fiecare locaţie
pi pi pi pi poate sau nu să fie intrare sau
G
½ (pi) = ½(pi) G
½ (pi) = 1 + ½(pi) G
½ (pi) = ½(pi) - 1 G
½ (pi) = ½(pi) ± 1 + 1
ieşire a tranziţiei. Această
figură ilustrează numai
cazurile în care multiplicitatea
#(pi, I(t j)) = 0 #(pi, I(t j)) = 1 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 1,3 şi 4. Tranziţia 2 nu este posibilă deoarece nu se află
nici un jeton în nici una din locaţiile 2 sau 3, care sunt amândouă intrări ale tranziţiei 2. Deoarece
tranziţiile 1,3 şi 4 sunt toate posibile, oricare dintre acestea se poate declanşa. Dacă tranziţia 4 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 5, depozitează un jeton în 3 şi creşte numărul de jetoane din 4 de la doi
la trei. Astfel, noul marcaj ce rezultă din declanşarea tranziţiei 4 este cel din figura 2.12.
În reţeaua Petri marcată din figura 2.12, numai tranziţiile 1 şi 3 sunt posibile. Prin
declanşarea tranziţiei 1 se va muta un jeton din 1 şi se vor depozita jetoane în 2, 3 şi 4 (două
jetoane în 4 deoarece este o ieşire multiplă a tranziţiei 1). Acest fapt produce marcajul din figura
2.13. În această reţea Petri marcată, tranziţiile 2 şi 3 sunt posibile. Declanşarea tranziţiei 3 va
determina producerea marcajului din figura 2.14, unde două jetoane au fost mutate din 4 şi unul a
fost depozitat în 5.
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
p3

t4

t1 Æ   O reţea Petri
p2 marcată pentru a ilustra regulile
p5 de declanşare. Tranziţiile 1,3 şi
p1 t2
4 sunt posibile.

t3 
p4 

p3 

t4 
t1
p2 Æ   Marcajul rezultat
p5
din declanşarea tranziţiei 4 din
p1 t2 figura 2.11.


t3
p4 

p3


t4 
t1 Æ   Marcajul rezultat
p2
din declanşarea tranziţiei 1 din
p5 figura 2.12.
p1 t2


t3 
p4


p3 

t4 Æ   Marcajul rezultat
t1
p2 din declanşarea tranziţiei 3din
p5 figura 2.13
p1 t2

t3
p4

  !  !   

¯ 
 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. ¯ m
m
unei reţele
Petri cu  locaţii este mulţimea tuturor marcajelor, adică ©n. Schimbarea de stare cauzată de
declanşarea unei tranziţii este definită de o funcţie de schimbare g numită R 
, care
se aplică unui marcaj (stare) ½ şi unei tranziţii  şi produce noul marcaj (stare) care rezultă din
declanşarea tranziţiei  în marcajul ½. Deoarece tranziţia  poate să se declanşeze numai dacă este

11
posibilă, atunci g(½,)½ , unde ½ este marcajul care rezultă din jetoanele rămase în intrările lui 
şi cele adăugate în ieşirile lui .

   
Æ  
 g ©n % M ©n pentru o reţea Petri j(, ,,Ý) cu marcajul ½ şi
tranziţile § este definită dacă şi numai dacă ½( p)u( p,()), pentru toţi p§.
Dacă g(½, ) este definită, atunci g(½, )  ½ , unde ½   ½( p) ! ( p, ()) " ( p, Ý()),
pentru toţi p§.

Dată fiind o reţea Petri j(, ,,Ý) şi un marcaj iniţial ½ , putem executa reţeaua Petri
prin declanşări succesive de tranziţii. Declanşarea unei tranziţii posibile  în marcajul iniţial
produce un nou marcaj ½1  g(½ , ). În acest nou marcaj, putem să declanşăm orice tranziţie
posibilă, să spunem , ceea ce va determina apariţia unui nou marcaj ½2g(½1,). 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 (½ , ½1, ½2,...) şi
secvenţa de tranziţii ( ,1,2,). Legătura dintre aceste două secvenţe este dată de relaţia
g(½, )  ½"1, pentru   0,1,2,. Dată fiind o secvenţă de tranziţii şi ½ , 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 ½.

   
Pentru o reţea Petri j(, ,,Ý) cu marcajul ½ , un marcaj ½ este ô
 mô din ½ dacă
există o tranziţie § astfel încât g(½,)½.

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" (j, ½) a unei reţele Petri j cu
marcajul ½ ca fiind mulţimea formată din toate marcajele "accesibile" din ½. Un marcaj ½ este în
(j,½) 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".

   
² m÷m   (j, ½ ) pentru o reţea Petri j(, ,,Ý) cu marcajul ½ este cea mai
mică mulţime de marcaje definită după cum urmează:
1.c ½§ (j,½);
2.c Dacă ½§ (j,½ ) şi ½ g(½ ,) pentru unii § , atunci ½§ (j,½).

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 (j,½) este ë(10),(01
)#u0}.

12
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 1,2,, şi un marcaj ½, marcajul ½
g(½,1,2,,) este rezultatul declanşării mai întâi a tranziţiei 1, apoi a tranziţiei 2, şi aşa mai
departe până la tranziţia . (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ă.)

   
Æ 
  este definită pentru un marcaj ½ şi o secvenţă de tranziţii  § $ după
cum urmează:
‘ c g(½ ,„)½ 
% c g(½ ,)g(g(½ ,),)
În general se foloseşte această funcţie de tranziţie extinsă.
p
3 1 t 1 p t2 p2



Æ   O reţea Petri marcată

 '   !#    

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 ½ Më0,1}. Ar trebui să fie evident că o reţea cu numai  locaţii
are exact 2 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, ½  M ë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 ( , , O, M), unde este mulţimea
tranziţiilor,  mulţimea locaţiilor, O mulţimea arcelor şi M marcajele iniţiale. Arcele din mulţimea O
conectează fie o locaţie cu o tranziţie, fie o tranziţie cu o locaţie. Astfel, O º ( % )  (  % ).
Multe studii referitoare la reţelele Petri se bazează pe această definiţie şi definesc o reţea Petri ca un
triplet (, ,O) cu o funcţie separată de marcaje.
Conversia de la forma (, , O) 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 ë( p,)#( p,) §O} şi una de arce de ieşire ë(, p)#(, p) §O}. Această formă conduce

13
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 (, , Æ, M), unde  este
mulţimea de locaţii şi mulţimea de tranziţii. Æ şi M sunt funcţii ce duc locaţii şi tranziţii în numărul
de jetoane necesare pentru intrare (Æ), sau produse pentru ieşire (M). Astfel, o tranziţie  poate să se
declanşeze numai dacă în fiecare locaţie p §  sunt cel puţin Æ(, p) jetoane. O tranziţie se
declanşează prin mutarea a Æ(, p) jetoane din fiecare locaţie de intrare şi depozitarea a M(, p )
jetoane în fiecare locaţie de ieşire. Funcţiile Æ şi M 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,
§˜%˜. 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
"        

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.

 ‘ (      

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.  ÷ m 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   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

 m evenimentului. Apariţia evenimentului poate determina ca precondiţiile să nu mai fie
adevărate, şi poate stabili ca alte condiţii, numite    , 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.c Atelierul este în aşteptare.
b.c A sosit un ordin şi este în aşteptare.
c.c Atelierul prelucrează ordinul.
d.c Prelucrarea ordinului s-a încheiat.
Evenimentele vor fi:
1.c Sosirea unui ordin.
2.c Atelierul începe prelucrarea ordinului.
3.c Atelierul termină prelucrearea ordinului.
4.c 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.

             
1 Nici una b
2 a, b c
3 c d, a
4 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
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.

Un ordin în Începe Se termină Ordinul este


Soseşte un aşteptare procesarea procesarea terminat
ordin

Ordinul este Ordinul este


procesat trimis pentru
distribuire

Æ  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 ²1, ²2, şi ²3 şi doi operatori Æ1 şi Æ2. Operatorul Æ1 poate opera maşinile ²1 şi ²2, iar
operatorul Æ2 poate opera maşinile ²1 şi ²3. Lucrările necesită două stagii de prelucrare. Mai întâi
acestea trebuie prelucrate de maşina ²1, apoi de oricare dintre maşinile ²2, sau ²3. Acest sistem
mai complicat va avea următoarele condiţii:
a.c A sosit o lucrare şi aşteaptă să fie prelucrată de ²1.
b.c O lucrare a fost prelucrată de ²1 şi aşteaptă să fie prelucrată de ²2 sau ²3.
c.c Prelucrarea lucrării s-a terminat.
d.c Maşina ²1 este liberă.
e.c Maşina ²2 este liberă.
f.c Maşina ²3 este liberă.
g.c Operatorul Æ1 este liber.
h.c Operatorul Æ2 este liber.
i.c Maşina ²1 este operată de Æ1.
j.c Maşina ²1 este operată de Æ2.
k.c Maşina ²2 este operată de Æ1.
l.c Maşina ²3 este operată de Æ2.

Pot apărea următoarele evenimente:


1.c Soseşte un ordin.
2.c Operatorul Æ1 porneşte prelucrarea lucrării pe maşina ²1.
3.c Operatorul Æ1 termină prelucrarea lucrării pe maşina ²1.
4.c Operatorul Æ2 porneşte prelucrarea lucrării pe maşina ²1.
5.c Operatorul Æ2 termină prelucrarea lucrării pe maşina ²1.
6.c Operatorul Æ1 porneşte prelucrarea lucrării pe maşina ²2.
7.c Operatorul Æ1 termină prelucrarea lucrării pe maşina ²2.
8.c Operatorul Æ2 porneşte prelucrarea lucrării pe maşina ²3.
9.c Operatorul Æ2 termină prelucrarea lucrării pe maşina ²3.
10.cOrdinul este trimis pentru livrare.

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

             
1 Nici una a
2 a, g, d p
3 p g, d, b
4 a, h, d 
5 f b, h, d
6 b, g, e 
7  c, g, e
8 b, f, h l
9 l c, f, h
10 c Nici una

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


g
e

2 p 3 Æ   Un
6 7
exemplu de
 atelier mai
1 a d b complex,
c 10 modelat ca o
l reţea Petri
4  8 9
5

f
h

Un job este pus în


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

 Iese un job

Æ  Modelarea unui sistem de calcul simplu
17
 
 !  #  
Aceste exemple ilustrează unele probleme vizavi de reţelele Petri şi de sistemele care pot fi
modelate de către acestea. O problemă este
  (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 O şi M care apar în
acelaşi timp, un observator staţionat lângă evenimentul O va primi informaţia referitoare la
evenimentul O înaintea celei referitoare la evenimentul M. Observatorul poate deduce astfel că
evenimentul O s-a întâmplat înaintea evenimentului M. Pe de altă parte, un observator diferit
staţionat lângă evenimentul M, 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
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

Desfăşurarea unui eveniment


care nu este primar

Începe evenimentul Se termină


care nu este primar evenimentul care
nu este primar
Æ  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.
Un job este pus în
coad de intrare

Un job este în
aşteptare Procesorul
este neocupat

Un job este
procesat

Intrări Ieşiri
Un job aşteaptă
la ieşire
Æ  Pentru reprezentarea unui
eveniment care nu este primar se foloseşte Iese un job
uneori un dreptunghi
Æ  Modelarea unui sistem de calcul
folosind o tranziţie care nu este primară.
Reţeaua este echivalentă cu cea din figura 3.3

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


tj Æ  Concurenţa
Aceste două tranziţii se pot declanşa în orice ordine.

tk

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.

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

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.

 
 )*  ! !! 

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.

    

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 (½,,<,g,0), unde:
½ este o mulţime finită de stări
 este un alfabet de intrare finit
< este un alfabet de ieşire finit
g ½ %  M ½ este funcţia de tranziţie, care leagă starea curentă şi intrarea curentă de starea
următoare
0½%M< este funcţie de ieşire, care leagă starea curentă şi intrarea curentă de simbolul de ieşire.
20
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 p la starea  etichetat # spune că, din starea p cu intrarea , automatul va
trece în starea  şi va scoate la ieşire . Formal vom avea: g(p,) şi 0(p,). 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ă.
0/0 0/1
1/1

q1 q2 Æ   O diagramă de stare pentru un automat cu


stări finite care calculează complementul în baza 2 a unui
număr binar
r/r
r/r 1/0

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 1. Simbolul de revenire () 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 1. 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.

0/0 0/0
1/1
Æ   O maşină de stare pentru calcularea parităţii
q1 q2 unui număr binar dat ca intrare
1/1

r/r
r/1

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ă.


Intrări Ieşiri 


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

Æ  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.
Intrări Ieşiri

Reprezentarea ca Æ   O abordare alternativă pentru a


reţea Petri a unui reprezenta comunicarea dintre o reţea Petri şi
automat cu stări
finite 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 (½,,<,g,0), definim o reţea Petri (, ,,Ý) astfel:
½ < 
 ,,§½p§
(,) ,
Ý(,) g(,),0(,)

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
0
0 q1 0 0

q1

1
1
1

q2
q2
r r

r 1

Æ  O reţea Petri echivalentă cu Æ  O reţea Petri echivalentă cu


C
automatul din figura 3.9 automatul din figura 3.10
om
par
â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.
0/0
1/0
1/1

q11 q22
r/1 r/0
Æ  Automatul compus reprezentând
0/1 compunerea serială a automatelor din figurile 3.9 şi
r/1 0/1 3.10.
q21

1/0

23
0
0 q1

q1

q2
q2
r 1

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



0 0 

q1 


1 
0

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

0 q1 0

1
1

q2
r r

24
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.

  j 

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  se
termină, transmite rezultatele sale nivelului "1 şi trece la nivelul !1 pentru o nouă lucrare. Dacă
fiecare nivel consumă  unităţi de timp şi sunt  nivele, atunci terminarea operaţiei pentru un
operand durează  unităţi de timp. Totuşi, dacă banda de asamblare este alimentată continuu cu noi
operanzi, poate întoarce rezultate cu rata de unu la  unităţi de timp.
Ca un exemplu, vom considera adunarea a două numere în virgulă mobilă. Principalii paşi
sunt următorii:
1.c Extragerea exponenţilor celor două numere.
2.c Compararea exponenţilor şi interschimbarea, în cazul în care este necesar, pentru a ordona
corect cel mai mare şi cel mai mic exponent.
3.c Deplasarea celei mai mici fracţii pentru a egaliza exponenţii.
4.c Adunarea fracţiilor.
5.c Postnormalizarea.
6.c 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  fixată. La fiecare  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  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 
unităţi de timp.
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
25
nivelului  al benzii de asamblare poate fi trimis la nivelul "1 imediat ce nivelul  s-a terminat şi
nivelul "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)c registrul său de ieşire a fost golit prin copierea în registrul de intrare al următorului nivel, şi
(2)c o nouă intrare este disponibilă în registrul său de intrare.
Astfel, controlul pentru nivelul  al benzii de asamblare trebuie să ştie când următoarele
propoziţii sunt adevărate:
c Registru de intrare plin
c Registru de intrare gol
c Registru de ieşire plin
c Registru de ieşire gol
c Unitate ocupată
c Unitate neocupată
c 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ă.

Unitatea -1
Unitatea -1 ocupată
Registrul de Ieşirea lui -1 vidă Ieşirea lui -1 plină
ieşire -1

Registrul de Copiere -1 în 


Intrarea lui  plină Intrarea lui  vidă
intrare 

Unitatea 
Unitatea  ocupată
Registrul de Ieşirea lui  vidă Ieşirea lui  plină
ieşire 

Registrul de Copiere  în +1


Intrarea lui +1 plină Intrarea lui +1 vidă
intrare +1

Æ  Diagramă bloc Æ  Un model de reţea Petri


pentru o bandă de asamblare pentru o bandă de asamblare asincronă
asincronă

26
 ÷     


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 ofe ri 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.c Înmulţirea lui %1 cu %1 dă %0
2.c Înmulţirea lui %3 cu %1 dă %3
3.c Adunarea lui %2 cu %4 dă %4
4.c Adunarea lui %0 cu %3 dă %3
5.c Împărţirea lui %0 la %4 dă %6
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 %1 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
%0 (care este calculat de instrucţiunea 1) şi %3 (care este calculat de instrucţiunea 2). Instrucţiunea 5
trebuie să aştepte terminarea instrucţiunii 1 (care calculează %0) şi terminarea instrucţiunii 3 (care
calculează %4).
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
 . Condiţiile pentru menţinerea determinării au fost considerate de Bernstein [1966].
Acestea sunt următoarele: Pentru două operaţii  şi  astfel încât  o precede pe  în precedenţa
liniară a programului,  poate să înceapă înaintea lui  dacă şi numai dacă  nu are nevoie de
rezultatele lui  ca intrări şi rezultatele lui  nu modifică nici intrările, nici rezultatele lui .
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ă ce foloseşte regiştrii p, şi  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 şi regiştrii p, şi . 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
registru ca intrare. De aceea, această schemă nu poate produce programări cu paralelism maxim
27
[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 care operează cu
regiştrii p,  şi ´, 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.)

 
 # *
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.

   




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 
 
 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  
 . 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ă  

  . 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
begin
input (y1 ); a
input (y2 );
y3 :=1;
while y1>0
do begin b F      

if add(y1)
T a Input(y1); Input(y2); y3 :=1;
then begin
b y1>0?
y3 :=y3 *y2;
F c T c add(y1 )?
y1 :=y1 ± 1;
end; d y3:=y3 *y2; y1 :=y1-1;
d e y2:=y2 *y2;
y2 :=y2 *y2;
y1 :=y1/2; f Output(y3 );
end;
Output(y3); e
end;
Æ   O interpretare a
acţiunilor schemei logice din figura
f
Æ   Un 3.21 ce reprezintă programul din
program simplu. Acest figura 3.20
program este modelat
ca schemă logică în Æ   O schemă
figura 3.22 şi ca reţea logică pentru programul din
Petri în figura 3.24 figura 3.21

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, nodur ile 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ă.
ai ai ai ai

Calcul r Calcul r T F
Decizii
e
aj aj
aj ak aj ak
Æ   Translatarea nodurilor de decizie şi de calcul dintr-o schemă logică în tranziţii într-o
reţea Petri
29
a
f
bF

bT
Æ   Reprezentarea sub formă de reţea
Petri a figurii 3.21 derivată din schema logică
cT
din figura 3.22
cF

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.

   

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 p determină continuarea procesului curent la
locaţia p"1 şi crearea unui nou proces cu începerea execuţiei la locaţia . 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

Æ    Modelarea operaţiilor FORK şi
pi pi pj JOIN cu ajutorul reţelelor Petri
(a) FORK (executată la locaţia p, creează două
Ramificare Uniune
noi procese la locaţiile  şi )
(b) JOIN (unifică cele două procese care se
pj pk pk
termină la locaţiile p şi  într-un proces care
(a) (b)
continuă la locaţia )

O altă sugestie pentru introducerea paralelismului este introducerea structurii de control



 . 
 [Dijkstra 1968]. Această structură de control a fost sugertă de Dijkstra şi are
forma generală:

 
S1;
S2;
«
Sn;

 
unde p sunt descrieri de instrucţiuni în limbaj de programare. Semnificaţia structurii
 

 este aceea că instrucţiunile 1,2,, se execută în paralel. Această construcţie poate fi
reprezentată ca o reţea Petri, după cum se arată în figura 3.26.

Parbegin






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

 j 

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
    

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  a
valorii datei la care se are acces comun, fie    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.c Primul proces citeşte valoarea % din obiectul la care se are acces comun
2.c Al doilea proces citeşte valoarea % din obiectul la care se are acces comun
3.c Primul proces calculează o valoare nouă %R(%)
4.c Al doilea proces calculează o valoare nouă %(%)
5.c Primul proces scrie % în obiectul la care se are acces comun
6.c Al doilea proces scrie % în obiectul la care se are acces comun, distrugând valoarea %.
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 (%), în loc de (R(%)), sau R((%)).
[Considerăm cazul în care (%) este Äo retragere de 1000 $ din contul %´, iar R(%) este Äo depunere de
1000 $ în contul %´ şi procesele 1 şi 2 sunt funcţionari bancari.]
Pentru a preveni acest tip de probleme, este necesară folosirea unui mecanism pentru
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       . 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 ÷ 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 1 sau 2, după caz, care să anunţe că se doreşte intrarea
în secţiunea critică, şi de asemenea trebuie să existe un jeton în ÷ care să semnalizeze permisiunea
de a intra. Dacă ambele procese doresc să intre simultan, atunci tranziţiile 1 şi 2 sunt în conflict, şi
numai una dintre ele se poate declanşa. Declanşarea lui 1 va dezactiva tranziţia 2 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
÷.

p1 p2

t1 t2
Æ      
Secţiune critică
m Secţiune critică
 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ă

Proces 1 Proces 2

32
 
   

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 M reprezintă bufferul; fiecare jeton reprezintă un articol care a fost produs dar nu a fost încă
consumat.

Producător
Scoate din buffer Æ   Problema producător
/consumator modelată ca o reţea Petri

Pune în buffer Consumator

Producător Consumator

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  producători şi  consumatori am
pornit sistemul cu  jetoane în locaţia iniţială a procesului producător şi  jetoane în locaţia iniţială a
procesului consumator. Astfel am reprezentat  producători şi  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.

s 

Producător
Scoate din buffer Æ   Problema multipli
producători /multipli consumatori.
M
Sunt  producători şi  consumatori,
cu  şi  fixate
Pune în buffer Consumator

Producător Consumator

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  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: M reprezintă numărul de articole care au fost produse dar nu au fost încă consumate
(numărul de locaţii ocupate), iar M reprezintă numărul de locaţii libere în buffer. Iniţial M are 
jetoane şi M nici unul. Dacă buffer-ul se umple, atunci M nu va avea nici un jeton, iar M va avea 
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 M pentru a valida această tranziţie.

33
Producător Scoate din buffer

Æ  Problema producător


/consumator cu buffer finit.
M
Consumator Bufferul, reprezentat prin locaţiile
M şi M este limitat la cel mult 
Pune în buffer articole

MG
Producător Consumator

      


 

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 j1,..,j5 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, ²p şi &p 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.

E3 E4

M3 c3 M4 Æ  Problema
filozofilor care iau masa
împreună. Fiecare filozof este
modelat prin două locaţii,
c2 c4 meditare (Mi) şi mâncare (Ei).

M2 M5

c1 M1
c5
E2 E5
E1

34
       

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 . Într-un sistem
în care numărul de procese cititor nu este limitat, numai  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).

s 

Æ   Problema cititori /scriitori când


numărul de cititori este maxim . Iniţial sunt 
Citire  Scriere cititori şi  scriitori

Cititori Scriitori

   ! "

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 şi " pe semafoare, definite iniţial
de Dijkstra [1968]. Un  este un tip de dată care poate să ia numai valori întregi nenegative.
Operaţia " creşte valoarea cu 1, în timp ce operaţia o micşorează cu 1. Operaţia poate apărea
numai atunci când valoarea semaforului va rămâne nenegativă după executare; dacă valoarea
semaforului este zero, operaţia va trebui să aştepte până ce un alt proces execută o operaţie ".
Amândouă operaţiile şi " 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 foloseşte locaţia semaforului ca intrare; o operaţie
" foloseşte locaţia semaforului ca ieşire. Avantajul acestei abilităţi de a modela operaţiile şi "
este acela că multe sisteme sunt scrise sau proiectate folosind operaţiile şi ". De exemplu,

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

P(S)
S Æ  Modelarea operaţiilor şi " pe un semafor 

V(S)

     

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 p 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
a,0
Start

b,4
Săpare

Fundaţie
c,2

r,1
Schelet de lemn d,4 f,1

e,6 p,2 g,2


Zidărie
h,3
Terminare p,2 ,4
acoperiş Încălzire

Streaşini, q,1 ,10


burlane

v,8 l,3

',5 o,3 m,1 ,2

s,2 ,3
Zugrăvire

Terminare instalaţie
%,0 u,1
Terminare electrică

  
 
 Timpul necesar
 jjobului
b,4

Identificatorul
 jjobului

Æ   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
a Start

r d f

e p g
h

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

%
Terminare

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
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   
   [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    
p÷ 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 %%"1
20  "1
30 %" 
Instrucţ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 R,R,R şi R. 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.

a d
c

f
b e

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

39
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:
H2C2 O4 M 2CO2 + 2H+ + 2e-
2e- + 2H+ + H2O2 M 2H2 O
H2C2O4

CO2

H+
Æ  O reţea Petri reprezentând oxido-
reducerea acidului oxalic şi a peroxidului de
hidrogen în dioxid de carbon şi apă
H2O2
e-

H2O

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

Æ   Producerea etanului din hidrogen şi etilen


H2
în prezenţa catalizatorului platină

C2H6

C2H2

Meldman şi Holt [1971] au sugerat că   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
  
   [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
să dezvoltăm instrumente de analiză care ne vor permite să examinăm o reţea Petri şi să-p
determinăm proprietăţile. Aceasta ne conduce la următorul capitol, în care prezentăm metode de
analiză pentru reţelele Petri.

    ! 

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
À     

Î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?

 ‘ +   !  

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.

   

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

  
O    p a unei reţele Petri j(, ,,Ý) cu marcajul iniţial ½ este   dacă pentru toate
½ §2(j,½), ½  1. O  este   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 p care va fi forţată să fie sigură va fi
suplimentată printr-o altă locaţie p . Tranziţiile care folosesc p ca intrare sau ieşire, se modifică
după cum urmează:
±c Dacă p§() şi p·Ý() atunci se adaugă p' la Ý().
'
±c Dacă p§Ý() şi p·() atunci se adaugă p la ().

42
'
Scopul acestei noi locaţii p este acela de a reprezenta condiţia ³ p este goală´. De aceea, p
' '
şi p sunt complementare, adică p are un jeton numai dacă p nu are nici unul, şi viceversa. Orice
'
tranziţie care mută un jeton din p trebuie să depoziteze unul în p , şi orice tranziţie care mută un
'
jeton din p trebuie să depoziteze unul în p. Marcajul iniţial trebuie şi el să fie modificat pentru a
oferi exact un jeton fie lui p, fie lui p' (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.

p3
p1 p2
t1 t2 t3
t1 t2 t3

p1 p2

Æ  O reţea Petri. Æ   Reţeaua Petri din figura 4.1 poate
Această reţea nu este sigură fi forţată să fie sigură după cum se arată aici

  # 

Siguranţa este un caz special al proprietăţii mai generale de mărgini. 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 -sigură, sau -mărginită
dacă numărul de jetoane din acea locaţie nu poate fi mai mare de .

   
O locaţie p§ a unei reţele Petri j(, ,,Ý) cu un marcaj iniţial ½ este 9 
dacă pentru
fiecare ½ §2(j,½), ½ .
O locaţie care este 1-sigură este simplu numită sigură. Observăm că limita  a numărului de
jetoane care se pot afla într-o locaţie poate fi o funcţie a locaţiei (exp: locaţia 1 este 3-sigură, în
timp ce locaţia 2 este 8-sigură). Totuşi, dacă o locaţie p este -sigură, atunci este, de asemenea, G -
sigură, pentru toţi u. De vreme ce există numai un număr finit de locaţii, putem alege  ca fiind
maximul limitelor fiecărei locaţii şi să definim o reţea Petri ca fiind -sigură de vreme ce fiecare
locaţie a reţelei este -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   dacă este kj-sigură
pentru unii . 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.)

43
 j   

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,     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.

  
O reţea Petri j(, ,,Ý) cu marcajul iniţial ½ este       dacă pentru toate
/
½ §2(j,½),  ȝ (p )   ȝ(p ) .
pi


i
pi 

i

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ă () 
Ý(), deoarece în caz contrar declanşarea tranziţiei  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 1 sau 2 va micşora numărul de jetoane
cu 1, în timp ce declanşarea oricăreia dintre tranziţiile 3 sau 4 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ă.

p1 p2
p1 p2

t1 t2
t1 t2
p3 p4
p3 p4
p5
p5
t3 t4
t3 t4

Æ  O reţea Petri care nu este Æ  O reţea Petri strict conservativă
strict conservativă care este echivalentă cu reţeaua din figura 4.3

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
  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 ' = (w1, «
,wn) defineşte o pondere wi pentru fiecare locaţie pi § P.
44
  
O reţea Petri j(, ,,Ý) cu marcajul iniţial ½ este  
   
 
   

 
 i '  ('1,  , '),   , 'p u 0, dacă pentru toate ½  § 2(j, ½ ),
 iȝ / (p i )  iȝ(p i ) .
i i
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    dacă este conservativă cu respectarea aceluiaşi vector nenegativ de ponderi, '(
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ă.

Æ  O reţea Petri neconservativă

 "   

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 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  şi  şi două procese  şi . 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  cere mai
întâi resursa  şi apoi resursa , eliberând în final atât resursa  cât şi resursa . Procesul  este
similar, doar că cere mai întâi resursa  şi apoi resursa . Figura 4.6 ilustrează aceste două procese şi
alocarea resurselor cu ajutorul unei reţele Petri.
p1 p6

t1 t4
p2 p7
Æ  Alocarea resurselor pentru două procese ( şi
) şi două resurse ( modelată de 4 şi  modelată de 5)
t2 t5
p3 p8

t3 t6

45
Iniţial, indicatoarele de marcaj  ( 4) şi  ( 5) sunt disponibile şi procesele  şi  sunt
pregătite. O execuţie a acestei reţele este 123456; o alta este 456123 . Nici una dintre aceste
execuţii nu generează interblocare. Totuşi, dacă considerăm secvenţa 14, procesul  are  şi cere ,
iar procesul  are  şi cere , 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 2 şi 5 nu se pot
declanşa. O tranziţie este    dacă nu este interblocată, şi aceasta nu înseamnă că tranziţia este
executată, ci că poate fi executată. O tranziţie  a unei reţele Petri j este
     ! 
într-un marcaj ½ , dacă există un marcaj ½ §2(j,½) astfel încât  este posibilă în ½. O tranziţie este
   !  $½ dacă este potenţial declanşabilă în fiecare marcaj din 2(j,½ ). 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 j cu marcajul ½ după cum urmează:
©  O tranziţie  este   m m m0 dacă nu poate fi niciodată declanşată.
©  O tranziţie  este   m m m1 dacă este potenţial declanşabilă; adică, dacă există
un marcaj ½§2(j,½ ) astfel încât  să fie posibilă în½ .
©   O tranziţie  este   m m m2 dacă pentru fiecare întreg  există o secvenţă de
declanşare în care  apare de cel puţin  ori.
©  O tranziţie  este   m m m3 dacă există o secvenţă de declanşare infinită în care
 se petrece de un număr infinit de ori.
©  O tranziţie  este   m m m4 dacă pentru fiecare marcaj ½§2(j,½) există o
secvenţă de declanşare  astfel încât  să fie posibilă în g(½,).
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 p dacă fiecare tranziţie este activă la nivelul
p = 1«4.
Pentru a exemplifica aceste nivele de viabilitate, considerăm figura 4.7. Tranziţia 0 nu se
poate declanşa niciodată, deci este blocată. Tranziţia 1 se poate declanşa o singură dată, deci este
activă la nivelul 1. tranziţia 2 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 3. Dacă dorim să declanşăm 2 de cinci ori,
atunci declanşăm 3 de cinci ori, apoi 1 şi apoi 2 de cinci ori. Totuşi, odată ce 1 se declanşează (şi 1
trebuie să se declanşeze înainte să se poată declanşa 2), 2 poate declanşa de un număr de ori fixat.
Astfel, 2 este activă la nivelul 2, dar nu la nivelul 3. Tranziţia 3, 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ă 1, 3 nu mai poate fi declanşată.

t3 t2

t1
Æ   O reţea Petri ce ilustrează diferitele nivele de
viabilitate

t0

46
     !  
 

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.

  
      Dată fiind o reţea Petri cu marcajul ½ şi un marcaj ½, ½§2(j,½)?

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 4 şi 9 se aşteaptă să se excludă mutual. Dorim să ştim dacă orice stare este accesibilă cu
4 u 1 şi 9 u 1. Această problemă este similară cu accesibilitatea, dar este uşor diferită şi se
numeşte problema acoperii. Un marcaj ½ acoperă un marcaj ½  dacă ½u½.
p1

t1

b0 k0 b1

b0 b1
p2 p7

t2 t8

k1 p3 k0 k1 p8 k0
t5 t3 t9 t11

k1 k0 k1 k0
p5 p4 p9 p10
b1 b0
t4 t10
t6 t12

b1 b0 b0 b0
p6 p11
k1 k0
t7 t13

k0 k1

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

47
  
 
   Dată fiind o reţea Petri j cu marcajul iniţial ½, există un marcaj accesibil ½
§2(j,½) astfel încât ½u½?

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 4 şi 9; marcajele celorlalte locaţii nu sunt importante. Astfel, putem considera
accesibilitatea sau acoperirea ÷   o mulţime de locaţii. Astfel apar 
m÷ m 
 ÷
 m  şi 
m÷ 
 ÷
 m .
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 
m÷
m  ÷ m÷ şi 
m÷  

 ÷ m÷. 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.

     !

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  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 39 sau 410, sau
mai general 3  9, unde  este orice secvenţă de declanşări ce nu conţine 4. Aceste întrebări de
analiză introduc conceptul de limbaj al reţelelor Petri ce va fi investigat în detaliu în capitolul 6.

    !  

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-p 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
  )  

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 

m 
m  . Cealaltă tehnică presupune ecuaţii cu matrice. Le vom discuta pe fiecare din acestea
pe rând.

      

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 1 şi 2. 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.
p2
(1 0 0)

t1 t3 t1 t2

(1 1 0) (0 1 1)
p1 p3
t2

Æ  O reţea Petri marcată Æ  Primul pas în construirea unui


pentru a ilustra construcţia unui arbore de accesibilitate
arbore de accesibilitate

Acum trebuie să considerăm toate marcajele accesibile din aceste noi marcaje. Din marcajul
(1 1 0) putem declanşa din nou 1 [rezultând (1 2 0)] şi 2 [rezultând (0 2 1)], iar din marcajul (0 1 1)
putem declanşa 3 [rezultând (0 0 1)]. Astfel rezultă arborele din figura 4.11.
(1 0 0)
t1 t2
(0 1 1) Æ   Al doilea pas în
(1 1 0)
construirea unui arbore de
t1 t2 t3 accesibilitate

(1 2 0) (0 2 1) (0 0 1)

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
49
către acest marcaj mort (dead). De asemenea, observăm că marcajul produs prin declanşarea
tranziţiei 3 în (0 2 1) este (0 1 1), care a fost, de asemenea, produs direct din marcajul iniţial prin
declanşarea tranziţiei 2.

(1 0 0)
t1 t2
(0 1 1)
(1 1 0) Figura 4.12: Al treilea pas
t1 t2 t3
în construirea unui arbore
de accesibilitate
(1 2 0) (0 2 1) (0 0 1)
t1 t2
t3

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

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.)

10
t1
01
t2
10
t1 t2
t1 Æ   O reţea Petri simplă cu un arbore
01 infinit de accesibilitate
t2
10
t1

Reducerea la o reprezentare finită poate fi realizată prin mai multe metode. Trebuie să găsim
o metodă de a limita noile marcaje (numite  
 R
 
) 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  
 
÷m. O altă
clasă de marcaje sunt acele marcaje care au apărut anterior în arbore. Aceste marcaje duplicate sunt
cunoscute ca  
 m , ş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 1 2 3 nu produce noduri
50
următoare în arbore, de vreme ce a mai apărut mai devreme în arbore ca rezultat al secvenţei 2 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  ori pentru a produce un marcaj
½ " (½! ½). 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 1 de câte ori este nevoie pentru a construi un
număr arbitrar de jetoane în 2.
Reprezentăm numărul infinit de marcaje care rezultă din aceste tipuri de bucle folosind un
simbol special ', 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ă , definim operaţiile : '"'; ')';
*'; ' ', singurele necesare pentru construirea arborelui de accesibilitate.
Actualul algoritm pentru construirea arborelui de accesibilitate poate fi acum precizat exact.
Fiecărui nod p din arbore p se asociază un marcaj extins ½•p+, pentru a permite astfel ca numărul de
jetoane dintr-un marcaj să fie fie un întreg nenegativ, fie simbolul '. 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 % un nod de frontieră ce urmează să fie procesat.
1.c Dacă există un alt nod în arbore care nu este nod de frontieră şi are acelaşi marcaj asociat,
adică ½(%)½( ), atunci nodul % este un nod duplicat.
2.c Dacă nici o tranziţie nu este posibilă pentru marcajul ½ •%+ (adică, g(½•%+,) nu este definită
pentru nici un § ), atunci % este nod terminal.
3.c Pentru toate tranziţiile  § care sunt posibile în ½ •%+ (adică, g(½•%+, ) este definită),
creează un nou nod  în arborele de accesibilitate. Marcajul ½•+ asociat cu acest nou nod este,
pentru fiecare locaţie p :
a)c Dacă ½ •%+', atunci ½ •+p'.
b)c Dacă există un nod pe drumul de la rădăcină la nodul % cu ½• +*g(½•%+,) şi
 ½ • +p*g(½ •%+,)p, atunci ½•+p'.
c)c Altfel, ½•+p*g(½•%+,)p.
Un arc, etichetat , este direcţionat de la nodul % la nodul . Nodul % este redefinit ca un nod
interior; nodul  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)
t1 t2
(0 1 1)
(1 ' 0)
t1 t2 t3
Æ   Arborele de accesibilitate
(1 ' 0) (0 ' 1) (0 0 1)
pentru reţeaua Petri din figura 4.9.

t3

(0 ' 1)

(1 0 1 0)
p2 t2
t3
p1 p4
(1 0 0 1)
t1
t2

p3 (1 • 1 0)

Æ  O reţea Petri pentru a ilustra t1 t3


construcţia arborelui de accesibilitate.
(1 ' 0 0) (1 ' 1 0)

t2

 (1 ' 1 0)

Æ   Arborele de accesibilitate
pentru reţeaua Petri din figura 4.15

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.


Î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ă.
  
Începem de la rădăcină cu nodul %0. Deoarece există numai un număr finit de succesori direcţi ai lui
%0, dar numărul total de noduri din arbore este infinit, cel puţin unul dintre succesorii direcţi ai lui %0
trebuie să fie rădăcina unui subarbore infinit (dacă toţi subarborii având ca rădăcini succesorii
direcţi ai lui %0 ar fi finiţi, atunci arborele cu rădăcina %0 ar fi finit.) Se alege un nod %1 care este un
succesor direct al lui %0 ş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 %2 un astfel de succesor direct.
Continuând în această manieră, obţinem un drum infinit %0,%1,%2 în arbore.

52
 
Fiecare secvenţă infinită de întregi nenegativi conţine o secvenţă infinită care nu este
descrescătoare.
  
Apar două cazuri:
1.c Dacă un element al secvenţei apare de o infinitate de ori, atunci fie %0 un astfel de element.
Secvenţa infinită %0,%0,este o subsecvenţă infinită care nu este descrescătoare.
2.c Dacă nici un element nu apare de o infinitate de ori, atunci fiecare element apare numai de
un număr finit de ori. Fie %0 un element arbitrar al secvenţei. Sunt cel mult %0 întregi care sunt
nenegativi şi mai mici decât %0 [0,1,, %0!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 %1 cu %1 u%0. Similar, trebuie să existe un %2 mai departe în secvenţă, cu %2 u%1, şi aşa
mai departe. Definim astfel o secvenţă infinită care nu este descrescătoare: %0,%1,%2,.
În fiecare dintre aceste două cazuri, există o secvenţă infinită care nu este descrescătoare.


Fiecare secvenţă infinită de vectori de dimensiune  peste întregii nenegativi extinşi (întregi
nenegativi plus simbolul ') conţine o subsecvenţă infinită care nu este descrescătoare.
  
Prin inducţie după , dimensiunea spaţiului vectorial:
1)c 
R

(1)
Dacă există un număr infinit (') 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 () conţine o subsecvenţă infinită care nu este descrescătoare, conform
lemei 4.2.
˜   
( ÷,÷,,  p÷ ,÷,,,p  "1)
Considerăm prima coordonată. Dacă există un număr infinit de vectori cu ' 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 ' 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 , 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ă:



Arborele de accesibilitate al unei reţele Petri este finit.
  
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 %0,%1,%2,de la rădăcina %0. (Numărul de succesori pentru fiecare nod din
arbore este limitat de ÷, numărul de tranziţii.) Apoi, ½•%0+, ½ •%1+, ½ •%2+, este o secvenţă infinită
de vectori de dimensiune  peste -  ë'} şi, conform lemei 4.3, conţine o subsecvenţă
› › ›
½ %p0  ½ %p1  ½ %p2  ... . Dar, din construcţie, nu putem avea ½•%p+ ½•%+, deoarece astfel unul
ar fi un nod duplicat şi nu ar avea succesori. Astfel, trebuie să avem o secvenţă infinită strict
› › ›
crescătoare ½ %p0  ½ %p1  ½ %p2  ... . Dar, din nou din construcţie, deoarece ½•%p+ * ½•%+, ar
53
›
trebui să înlocuim cel puţin o componentă a lui ½•%p+ printr-un ' în ½•%+. Astfel, ½ %p1 are cel puţin
o componentă care este ', ½ ›% are cel puţin două componente care sunt ', iar ½ ›% are cel puţin
p2 p

 componente care sunt '. Deoarece marcajele sunt -dimensionale, ½ ›% are toate componentele
p

› ›
'. Dar apoi ½ %p1 nu poate fi mai mare decât  %p . 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

   !  

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  astfel încât numărul de jetoane din fiecare locaţie să nu
fie mai mare de . Fiecare dintre aceste proprietăţi poate fi testată folosind arborele de accesibilitate.
O reţea Petri este mărginită , p  ÷p , simbolul ' nu apare niciodată în arborele său de
accesibilitate. Apariţia simbolului ' 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 ', reţeaua nu este mărginită. În plus, simbolul ' 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 ' trebuie să apară pentru a reprezenta
numărul infinit de marcaje accesibile.
Dacă reţeaua Petri este mărginită şi simbolul ' 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ărginirii
Observă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
t6 1000

t1 t2 t3
t1 p2
p4 0100 0110 0010
t2
t4 t4 t4
t5
p1
t3 0010 0020
p3
t5

0001

Æ  Determinarea mărginirii pentru t6
o reţea Petri folosind arborele de accesibilitate
1000

  j   

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 ' trebuie să fie considerat cu atenţie în evaluarea conservării. Dacă un marcaj are
' ca marcaj pentru locaţia p, atunci ponderea locaţiei trebuie să fie ³0´ pentru ca reţeaua să fie
conservativă. Vă reamintim că simbolul ' 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 '.´ De aceea, dacă există un marcaj
cu ponderea nonzero ', 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 ', cu
' ( 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 ', 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  şi un vector de ponderi '  ('1, '2,,
' ). Pentru fiecare marcaj ½ •%+ al arborelui de accesibilitate trebuie să avem:
 '1½ •%+1"'2½•%+2""'½ •%+.
Aceasta defineşte, pentru  noduri din arborele de accesibilitate, o mulţime de  ecuaţii
liniare cu  " 1 necunoscute. Dacă adăugăm la acestea constrângerile 'p ô 0, p  1, avem
definite constrângerile pentru vectorul de ponderi.

55
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.

  
  

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 ½  u ½ este accesibil. Dat fiind un marcaj iniţial ½, construim arborele de accesibilitate.
Apoi, putem căuta orice nod %, cu ½•%+u½ . 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, ½ •%+ 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 ' trebuie tratat ca reprezentând o mulţime infinită de valori.
Dacă o componentă a marcajului acoperitor este ', 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 ', 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
1, urmate de o declanşare a lui 2, şi apoi mai multe declanşări ale lui 3. Problema este să
determinăm de câte ori 1 şi de câte ori 3. De vreme ce vrem 14 jetoane în 2 şi 1 pune un jeton în
2, putem încerca 1 de 14 ori. Totuşi, avem nevoie de 3 de 7 ori, şi fiecare 3 mută un jeton din 2,
aşa că de fapt avem nevoie de 1 de cel puţin 21 de ori, apoi 2 şi în cele din urmă de 3 de cel puţin 7
ori (dar nu atât de mulţi 3 astfel încât să golim 2 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.

          

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 '. Simbolul '
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 2 este întotdeauna un număr par (până când se
declanşează 1), în timp ce în figura 4.19 poate fi un întreg oarecare. Simbolul ' nu permite acestui
tip de informaţie să fie detectată, făcând imposibilă folosirea arborelui de accesibilitate în
rezolvarea problemei accesibilităţii.

56
p2 p2

p1 p4 p1 p4

t1 t1

p3 t3 p3 t3

Æ   O reţea Petri cu arborele de Æ  O a doua reţea Petri cu arborele
accesibilitate cel din figura 4.20 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
(1 0 1 0) numai un număr par de jetoane în locaţia %, în
timp ce această reţea are ca marcaj pentru
t3 locaţia % un întreg arbitrar.
(1 0 0 1)

t2

(1 w 1 0)

t1 t3

(1 w 0 0) (1 w 0 1)
Æ    Arborele de accesibilitate al reţelelor Petri
din figurile 4.20 şi 4.21
t2

(1 w 1 0)

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 1 2 3 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.

p3
t4

t1 t3
p3

p1 p2
t2
t1 t3

p1 t2 p2
t4

Æ   O reţea Petri cu o Æ    O reţea Petri care nu se poate


interblocare posibilă 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
57
10 0

t3

10w

t1 t2
Æ    Arborele de accesibilitate al reţelelor
Petri din figurile 4.23 şi 4.24
10w 01w

t3 t4

01w 10w

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.

      

O a doua abordare în analiza reţelelor Petri se bazează pe o vedere matricială a reţelelor


Petri. O alternativă la definirea (, ,,Ý) a reţelelor Petri este să definim două matrice !- şi "
pentru a reprezenta funcţiile de intrare şi ieşire. (Acestea sunt echivalente cu funcţiile Æ şi M din
definiţia reţelelor Petri a lui Hack, prezentate în secţiunea 2.6). Fiecare matrice are ÷ linii (una
pentru fiecare tranziţie) şi  coloane (una pentru fiecare locaţie). Definim !! (,p)  ( p, ()) şi
"(,p)( p,Ý()).  defineşte intrările tranziţiilor şi " defineşte ieşirile.
Această formă de definire matricială a unei reţele Petri, (, ,!!,"), este echivalentă cu
forma standard pe care am utilizat-o, dar permite exprimarea ei în termeni de vectori şi matrice. Fie
•+ un vector unitate de dimensiune ÷ care este zero peste tot cu excepţia componentei . Tranziţia
 este reprezentată de vectorul unitar m-dimensional •+.
Acum, o tranziţie  este posibilă într-un marcaj ½ dacă ½ u•+!!, şi rezultatul declanşării
tranziţiei  în marcajul ½ , dacă este posibilă, este:
g(½,p)½!•+ !!"•+ "½ "•+ (!!!"")½"•+ , unde am definit matricea
de schimbare compusă "!!!.
Acum, pentru o secvenţă de tranziţii ce se declanşează   1 ,   2 ,...,   , avem:
g(½,)g(½ ,  1 ,   2 ,...,   ) ½!•1+ "•2+ ""•+ ½ "(•1+"•2+"
"•+) ½"R() .
Vectorul R()•1+"•2+""•+ se numeşte 
m
 al secvenţei
  1 ,   2 ,...,   . Al p-ulea element al lui R(),R( )p, reprezintă numărul de declanşări ale tranziţiei
p în secvenţa  1 ,   2 ,...,   . Astfel, vectorul de declanşări este un vector de întregi nenegativi.
(Vectorul R() este 
   % a secvenţei P [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
58
conservativitatea, este necesar să găsim un vector de ponderi diferit de zero pentru care suma
ponderilor peste toate marcajele accesibile este constantă. Fie ' un vector coloană de dimensiune 
%1. Apoi, dacă ½ este marcajul iniţial şi ½ este un marcaj accesibil arbitrar, trebuie ca: ½ '½ '.
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, ½g(½,)½"R() .
De vreme ce această relaţie trebuie să fie adevărată pentru toţi R(), rezultă că trebuie să
avem '0.
Deci, o reţea Petri este conservativă dacă şi numai dacă există un vector pozitiv ' astfel
încât '  0, oferindu-se astfel un test simplu pentru conservativitate. Se produce, de asemenea,
vectorul ' 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ă R() este o soluţie în întregi nenegativi în următoarea ecuaţie matricială în %:
½  ½  % (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.
p2 t2

p1 p4
Æ    O reţea Petri pentru a ilustra analiza cu
t1 ajutorul ecuaţiilor matriciale

p3 t3

Matricele  şi " sunt


1 1 1 0 1 0 0 0  0 1 1 0 
 o  o  o
   0 0 0 1 o şi    0 2 1 0 o , deci matricea  este    0 2
 
1  1o .
 0 0 1 0o 0 0 0 1o  0 0 1 1 o
  
Cu un marcaj iniţial ½ (1,0,1,0), tranziţia 3 este posibilă şi conduce la marcajul ½, unde
 0 1 1 0 
'
 o
½  1 0 1 0  0 0 1  0 2 1  1o  1 0 1 0  0 0  1 1  1 0 0 1 .
 0 0 1 1 o

Secvenţa 3 23 21 este reprezentată de vectorul de declanşări R()(122) şi produce
marcajul:

0 1 1 0
 o
½  1 0 1 0  0 2 21  0 2

1  1o  1 0 1 0  0 3  1 0  1 3 0 0 .
0 0 1 1o

Pentru a determina dacă marcajul (1 8 0 1) este accesibil din marcajul (1 0 1 0), avem
ecuaţia:

59
0 1 1 0  0 1 1 0 
 o  o
1 8 0 1  1 0 1 0  %  0 2 1  1o  1 8  1 1  % 0 2 1  1o , care
0 0 1 1 o 0 0 1 1 o
 
are o soluţie %(0,4,5) care corespunde secvenţei 323232323.
Arătăm mai departe că marcajul (1 7 0 1) nu este accesibil din marcajul (1 0 1 0), deoarece
ecuaţia matricială:
0 1 1 0   0 1 1 0 
 o  o
1 7 0 1  1 0 1 0  %  0 2 1  1o  1 7  1 1  %  0 2 1  1o nu are
0 0 1 1 o  0 0 1 1 o
 
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  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 şi ", şi astfel se vor anula în matricea "!!!. Acest lucru s-a reflectat
în exemplul anterior pentru locaţia 1 şi tranziţia 1.
O altă problemă este pierderea de informaţie reprezentativă în vectorul de declanşări.
Considerăm reţeaua Petri din figura 4.25.
t2

p2 t5

Æ    O altă reţea Petri pentru


t1 t4 analiza cu ajutorul ecuaţiilor matriciale
p1 p5
p4

p3
t6
t3
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:
 1 2 1 0 0
 o
0 0 0 0 0o
0 0 1 0 0o
0 0 0 0 1  1 0 0 0 0  %  o . Această ecuaţie nu are o soluţie
 0 1 0 1 0o
 o
0 2 0 0  1o
0 0 1  2 1 o

unică, dar reduce mulţimea soluţiilor la ë#R( )(1,%2,%6)1,2%6,%6)1,%6)}. Aceasta defineşte
relaţiile între declanşările de tranziţii. Dacă luăm %6   1 şi %2  1, avem R()  (1 1 0 2 0 1),
secvenţele 1  2 4 4 6 şi 1 4 2 4 6 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.

60
p2

p1 p4 Æ   O reţea Petri care arată că o soluţie a


ecuaţiei matriciale este o condiţie necesară, dar nu
t1 t2 suficientă pentru accesibilitate

p3

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


ecuaţia:
 1 1 1 0
0 0 0 1  1 0 0 0  R ( )  oo .
 0 1 1 1
Această ecuaţie are soluţia R()(1,1), corespunzătoare reprezentărilor 12 şi 21, dar nici
una dintre aceste două secvenţe de tranziţii nu este posibilă, deoarece nici 1 nici 2 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.

    ! 

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
{     
    

Î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.

 ‘ %! , +  

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.

  
  Date fiind două reţele Petri marcate jp(p, p,p,Ýp),p12, cu marcajele
½ p,p12, avem (j1,½1) (j2,½2)?

   
    Date fiind două reţele Petri marcate jp  (p, p, p, Ýp), p  12, cu
marcajele ½p,p12, avem (j1,½1)º (j2,½ 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ă (j1, ½1)  (j2, ½2), putem să folosim mai întâi algoritmul pentru
problema submulţimii pentru a determina dacă (j1, ½1) º (j2, ½2), şi apoi să folosim acelaşi
algoritm pentru a determina dacă (j2,½ 2)º (j1,½1).
(j1, ½1)  (j2, ½2) dacă şi numai dacă (j1, ½1) º (j2, ½ 2) şi (j2, ½2) º (j1, ½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ă   
m . Î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

62
modelul său de calcul: maşina Turing. Importanţa maşinii Turing este aceea că se poate arăta că nu
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ă O este reductibilă la o problemă M: o instanţă a problemei
O poate fi transformată într-o instanţă a problemei M. Dacă problema M este decidabilă, atunci
problema O este decidabilă şi algoritmul pentru problema M poate fi folosit pentru a rezolva
problema O. O instanţă a problemei O poate fi rezolvată transformând-o într-o instanţă a problemei
M şi aplicând algoritmul pentru problema M pentru a determina soluţia. Astfel, dacă problema O se
reduce la problema M şi problema M este decidabilă, atunci problema O este decidabilă.
Negaţia este de asemenea adevărată: dacă problema O se reduce la problema M şi problema
O este nedecidabilă, atunci problema M este nedecidabilă; dacă problema M ar fi fost decidabilă,
procedura de mai sus este o tehnică de decizie pentru problema O, 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)c o procedură de soluţionare pentru problema submulţimii, fie
(2)c 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  m  dacă
se pot reduce reciproc una la alta. Aceasta înseamnă că problema O este echivalentă cu problema M
dacă problema O se poate reduce la problema M şi problema M se poate reduce la problema O. Î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.

63
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ă
factorii constanţi. Complexitatea pentru o problemă de dimensiune  este determinată a fi de ordin
2, sau   sau  log  ignorând termenii mai mici şi factorii constanţi. În particular, sunt importante
două clase generale de algoritmi: algoritmii cu complexitate polinomială (, 2,  log  ,, şi aşa
mai departe) şi aceia cu complexitate nepolinomială (în special exponenţială, 2, şi factorială (!)).
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  numere
este de complexitate  log  . Astfel, algoritmii de complexitate  log  nu pot fi semnificativ
îmbunătăţiţi.
Reducerea poate fi utilă în determinarea complexităţii. Dacă o problemă O poate fi redusă la
o problemă M şi M are o complexitate RM(), atunci complexitatea lui O este cel mult complexitatea
lui M plus costul transformării de la O la M (Ţ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 O la problema M ne dă fie o limită
superioară pentru complexitatea lui O (dacă complexitatea lui M este cunoscută), fie o limită
inferioară pentru M (dacă complexitatea lui O 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.

  +  +    

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 j(, ,,Ý) cu
marcajul iniţial ½ .

  
      Dat fiind marcajul ½, avem ½§ (j,½)?

  
      $  Pentru o submulţime  º şi un marcaj ½, există ½ §
(j,½) astfel încât ½( p)½( p) pentru toţi p§?

  
!     
Există ½§ (j,½) astfel încât ½( p)0 pentru toţi p§? [0§ (j,½ )?]

  
 !     
       Pentru o poziţie dată p § , există ½  §
(j,½) cu ½ ( p)0?

64
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
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 . Problema zero-accesibilităţii pentru
o singură locaţie este reductibilă la problema accesibilităţii submarcajului considerând ë p} ş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.

Problema accesibilităţii

Problema zero-accesibilităţii
Æ   Reducerea problemelor de
accesibilitate. Un arc de la o problemă la
Problema accesibilităţii submarcajului alta indică faptul că prima se reduce la a
doua
Problema zero-accesibilităţii pentru o singură locaţie

Mai întâi arătăm că problema accesibilităţii submarcajului se reduce la problema zero-


accesibilităţii. Presupunem dată o reţea Petri j1  (1, 1, 1, Ý1) cu marcajul iniţial ½ 1, o
submulţime de locaţii  º1, şi un submarcaj ½. Vrem să ştim dacă există ½ § (j1, ½ 1) cu ½ 
( p) ½ ( p) pentru toate p §. O abordare este crearea unei noi reţele Petri j2(2, 2,2,Ý2)
cu marcajul iniţial ½2 astfel încât să existe ½ § (j1, ½1) cu ½ ( p) ½ ( p) pentru toate p §
dacă şi numai dacă 0 § (j2,½ 2).
Construcţia lui j2 pornind de la j1 este descrisă în continuare.
Începem cu j2 la fel cu C1. Pentru a permite oricărei locaţii p care nu este în  să se
golească adăugăm o tranziţie  p cu intrarea ë p} şi ieşirea nulă. Această tranziţie se declanşează de
fiecare dată când există un jeton în p, 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 p din  sunt exact ½ G(pi) jetoane. Pentru a ne asigura de aceasta,
creăm o nouă locaţie p pentru fiecare p § cu un marcaj iniţial de ½ ( p) jetoane şi o tranziţie p
cu intrarea ë p, 
p } şi ieşirea nulă. Dacă în p sunt exact ½ ( p) jetoanei, atunci tranziţia
'
corespunzătoare se poate declanşa de exact ½G ( p) ori, reducând marcajele lui p şi p la zero. Dacă
 '
numărul de jetoane din p nu este ½ ( p), atunci tranziţia  poate să se declanşeze de un număr de ori
p
'
egal cu minimul dintre cele două marcaje, şi astfel vor rămâne jetoane fie în p, fie în p , fapt care
împiedică ajungerea la un marcaj zero.
Figura 5.2 ilustrează cele două tipuri de tranziţii introduse.

65
 p Æ   O reţea Petri ce arată că
problema accesibilităţii
pi · PG submarcajului poate fi redusă la
Reţea Petri
problema zero-accesibilităţii.
originală  p ½ G(pi) Submulţimea de poziţii  va avea
marcajul ½  în reţeaua originală dacă
pi § PG şi numai dacă marcajul zero este
accesibil în reţea aşa cum este
modificată aici.

Formal, definim j2 astfel:


21 ë p' # p§}
2 1ë p #1}
2()1() pentru § 1
2( p' )ë p} pentru p§ë p, '
p }pentru p§
Ý2( )Ý1() pentru § 1
Ý2( p )ë} pentru p§1,
cu un marcaj iniţial ½ 2( p)½1( p), pi § P1, ½2( 
p ) = ½ G(pi), pi § PG.


Problema accesibilităţii submarcajului este reductibilă la problema zero-accesibilităţii.
  
Arătăm că pentru reţeaua Petri j2 construită mai sus din j1, 0 § (j2, ½2) dacă şi numai
dacă ½§ (j1,½1), cu ½( p)½( p), pentru toate p§.
Pentru a arăta că 0§ (j2,½2) dacă şi numai dacă există un marcaj ½§ (j1,½1), cu ½( p)
½ ( p), pentru toate p§, presupunem mai întâi că există ½ în (j1, ½1). Apoi, în j2, putem de
asemenea ajunge la marcajul ½ din locaţiile p § 1, declanşând numai tranziţiile din 1. Acum,
pentru fiecare p§, putem să declanşăm  p' de exact ½( p) ori, reducând atât pe p cât şi pe p' la
zero. Apoi putem să declanşăm p' pentru fiecare p · de câte ori este nevoie pentru a ajunge aici
la zero jetoane, adică să avem 0§ (j2,½2).
Acum presupunem 0 § (j2,½ 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 ½ ( p) declanşări ale lui
p pentru p § (pentru a elimina jetoanele din p ) şi un număr de declanşări ale lui p pentru p·
. Observăm că prin declanşarea tranziţiilor doar sunt mutate jetoane din j1 şi deoarece g(½ , )
este definită de fiecare dată când g(½,) este definită, pentru ½ u ½ (jetoane suplimentare nu strică
niciodată), secvenţa  cu toate p' declanşate eliminate este de asemenea legală şi va conduce la un
marcaj ½  cu exact ½ ( p) jetoane în p, pentru p§. Astfel, dacă 0§ (j2,½2), atunci ½ § (j1,
½ 1), cu ½ ( p)½( p), pentru toate 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 j1  (1, 1, 1, Ý1 ) cu marcajul iniţial ½1, vrem să
determinăm dacă 0 § (j1, ½1). Pornind de la j1 construim o nouă reţea Petri j2 cu o locaţie
suplimentar㠄 (2 ë„ }) astfel încât să existe un marcaj ½ § (j2, ½2) cu ½(„)0 dacă şi
numai dacă 0§ (j1,½ 1).

66
Construcţia lui j2 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 j1. Astfel, dacă ½(„)0, atunci sunt 0 jetoane
în toate locaţiile lui j1 şi viceversa. Definim marcajul iniţial ½2 prin ½ 2( p) ½1( p) pentru p §P1,
cu ½ 2 ( )   ½1 ( p ) (Acum, fiecare tranziţie  § 1 este completată în j2 cu arce către locaţia „.)


p 1

Definim     #( p , Ý (  )) # ( p ,  (  )) . Astfel,  înregistrează modificarea numărului de


 §1

jetoane care rezultă prin declanşarea tranziţiei . Dacă  ( 0, atunci  jetoane trebuie adăugate
locaţiei , şi de aceea adăugăm  arce de la  la ; dacă *0, atunci ! jetoane trebuie scoase din
locaţia  prin ! arce de la  la .
Dacă (0 atunci (,())0 şi (,Ý()).
Dacă *0 atunci (,())! şi (,Ý())0.
Dacă 0 atunci (,())0 şi (,Ý())0.
Cu această construcţie, orice secvenţă de tranziţii care se declanşează şi care conduce j1
către marcajul 0, va conduce j2 către un marcaj ½ cu ½()  0 [½( p)  0, de asemenea] şi
viceversa.

 
Problema zero-accesibilităţii este reductibilă la problema zero-accesibilităţii pentru o singură
locaţ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:


Următoarele probleme de accesibilitate sunt echivalente:
1.c Problema accesibilităţii
2.c Problema zero-accesibilităţii
3.c Problema accesibilităţii submarcajului
4.c Problema zero-accesibilităţii pentru o singură locaţie.

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

  ! ! &    

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

2  
Multiplicitatea oricărei locaţii este întotdeauna mai mică sau egală cu 1. Deci, ( p,()) 1 şi ( p,
Ý())  1 pentru toţi p § şi  § . Aceasta restricţionează categoriile de intrare şi ieşire la a fi
mulţimi.

2   
Nici o locaţie nu poate fi atât intrare cât şi ieşire a aceleiaşi tranziţii, adică () mÝ() . Acest
fapt se scrie de obicei ( p,()) ( p,Ý())0 pentru toţi p şi .

Reţelele Petri care satisfac restricţia 1 se numesc


m 


. Reţelele Petri care
satisfac cea de-a doua restricţie se numesc
m 
 
Rm . Reţelele Petri care satisfac
67
ambele restricţii se numesc
m 


  . Relaţiile dintre aceste clase de reţele Petri
sunt ilustrate în figura 5.3

Reţele Petri generale

Æ   Relaţiile dintre clasele de


Reţele Petri ordinare Reţele Petri fără bucle reţele Petri. Un arc indică includerea;
(fără arce multiple) arcele pentru indicarea reductibilităţii vor fi
direcţionate în direcţia opusă

Reţele Petri restricţionate


(fără arce multiple sau bucle)

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.


Problemele accesibilităţii pentru următoarele clase de reţele Petri sunt echivalente:
1.c Reţele Petri generale
2.c Reţele Petri ordinare
3.c Reţele Petri fără bucle
4.c Reţele Petri restricţionate
  
Următoarele reduceri sunt evidente din definiţii:
1)c Problema accesibilităţii pentru reţele Petri ordinare este reductibilă la problema
accesibilităţii pentru reţele Petri generale.
2)c Problema accesibilităţii pentru reţele Petri fără bucle este reductibilă la problema
accesibilităţii pentru reţele Petri generale.
3)c 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 p,1 sau se pot răspândi uniform pentru a acoperi toate
cele p locaţii din inel. Astfel, o tranziţie care are nevoie de trei jetoane din locaţia p poate lua câte

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

p ,p
pi,2 Æ   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ă.
Numărul p de locaţii reprezentând o locaţie p
este determinat de suma multiplicităţilor maxime
ale locaţiei

pi,3

pi,4
Formal, pentru o reţea Petri generală j1  (1, 1, 1, Ý1) cu marcajul ½1 definim o reţea
Petri restricţiontă j2(2, 2,2,Ý2) cu marcajul ½2 după cum urmează. Mai întâi definim pentru
fiecare p§1 un întreg p prin:
 p  max (# (

p ,  (  ))  # ( p , . (  )))
 1


Reţeaua Petri restricţionată j2 este definită prin:


 2ë p,
# p§1,
§1..p}
 2 1ëp,
# p,
§2}
Funcţiile de intrare şi ieşire pentru tranziţiile ³normale´ sunt definite astfel:
1, dacă
1..( p,1())
( p,
,2()) =
0, altfel
1, dacă
( p,1())"1..( p,1())"( p,Ý1())
( p,
,Ý2()) =
0, altfel
în timp ce pentru tranziţiile inel avem: 2 (p,
)ë p,
},Ý2ë p,
#1"(
÷ p)}
Marcajul ½2 este definit prin:
½ 2( ,1)½1( p ) pentru p §1 
 ½ 2( p,
)0 pentru
(1
Prin construcţie, pentru orice marcaj ½ care este accesibil în j2, există un marcaj ½ al lui j2 
astfel încât:
 ½ ' ( p,
)  ½ ( p ) pentru toţi p§1.

În particular, este posibil să se mute în j2 toate jetoanele din p,


în p,1 , la orice moment.
Astfel putem defini un marcaj ½ după cum urmează:
½ ( p,1)½( p) pentru p§1
½ ( p,
)0 pentru
(1 şi ½ este accesibil în reţeaua Petri restricţionată j2 dacă şi numai
dacă ½ este accesibil în j1.

69
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].

Reţele Petri generale

Æ   Reductibilitatea problemei


Reţele Petri ordinare Reţele Petri fără bucle accesibilităţii pentru clasele de reţele
(fără arce multiple) Petri mărginite

Reţele Petri restricţionate


(fără arce multiple sau bucle)

  - +      +    

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 j(, ,,Ý) cu marcajul iniţial
½ . O reţea Petri este activă dacă fiecare tranziţie este activă. O tranziţie  este activă într-un marcaj
½ dacă pentru fiecare ½ § (j, ½ ) există o secvenţă  astfel încât  este posibilă în g(½, ). O
tranziţie  este moartă (blocată) într-un marcaj ½dacă nu există nici un marcaj accesibil în care să se
poată declanşa.

  
     Pentru toate tranziţiile § , este  activă?

  
    
      Dată tranziţia § , 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  § ; dacă   ÷, atunci trebuie să rezolvă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 p poate fi zero în orice marcaj
accesibil pentru o reţea Petri j1(1, 1,1,Ý1) cu marcajul iniţial ½1, construim o reţea Petri j2
(2, 2, 2, Ý2) cu un marcaj iniţial ½2, care este activă dacă şi numai dacă marcajul zero nu este
accesibil din ½ 1.
Reţeaua Petri j2 este construită din j1 prin adăugarea a două locaţii, 1 şi 2, şi a trei
tranziţii, 1,2 şi 3. Mai întâi modificăm toate tranziţiile lui 1 pentru a include 1 atât ca intrare cât

70
şi ca ieşire. Marcajul iniţial ½ 2 va include un jeton în 1. Locaţia 1 este o locaţie de rulare, deoarece
atâta timp cât jetonul rămâne în 1, tranziţiile din 1 se pot declanşa normal. Astfel, orice marcaj
care este accesibil în locaţiile lui 1 în j1 este de asemenea accesibil şi în j2. Tranziţia 1 este
definită ca având 1 ca intrare şi o ieşire nulă. Aceasta permite mutarea jetonului din 1, dezactivarea
tuturor tranziţiilor din 1 şi ³îngheţarea´ marcajului lui 1. (Observăm că toate tranziţiile din 1 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 1 şi tranziţia 1 permit reţelei j1 să atingă orice marcaj accesibil şi apoi, pentru 1,
să declanşeze şi să îngheţe reţeaua la acest marcaj. Acum avem nevoie să vedem dacă locaţia p este
zero. Introducem o nouă locaţie 2 şi o tranziţie 2 care are p ca intrare şi 2 ca ieşire. Dacă p poate
să devină vreodată zero, această tranziţie nu este activă; de fapt, întreaga reţea este blocată (moartă)
dacă tranziţia 1 se declanşează în acest marcaj. Din acest motiv, dacă p poate fi zero, reţeaua nu
este activă. Dacă p nu poate fi zero, atunci 2 se poate declanşa întotdeauna, punând un jeton în 2.
În acest caz trebuie să punem înapoi un jeton în 1 şi să ne asigurăm că toate tranziţiile din j2 sunt
active. Trebuie să ne asigurăm că j2 este activă, chiar dacă j1 nu este. Acest fapt este realizat de o
tranziţie 3 care ³inundă´ reţeaua j2 cu jetoane, asigurându-ne că fiecare tranziţie este activă, dacă
întotdeauna este pus un jeton în 2. Tranziţia 3 are 2 ca intrare şi fiecare locaţie a lui j2 (toate p
din j1 plus 1 şi 2) este ieşire. Această construcţie este ilustrată în figura 5.6.

Reţeaua Petri
C1
tj r1 s1
p1

p2
p4
pi Æ  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ă?)

s2

p3 r2

Acum, dacă un marcaj ½ este accesibil în (j1,½1) cu ½ ( p)0, atunci reţeaua j2 poate, de
asemenea, atinge acest marcaj pe locaţiile din 1 executând aceeaşi secvenţă de tranziţii care se
declanşează. Astfel, 1 se poate declanşa, îngheţând submulţimea j1. Atâta vreme cât ½ ( p)  0,
tranziţia 2 nu se poate declanşa şi j2 este blocată (moartă). Prin urmare, dacă p poate deveni zero,
atunci j2 nu este activă.
Reciproc, dacă j2 nu este activă, atunci un marcaj ½ trebuie să fie accesibil în fiecare ½ (2)
0 şi nu există nici o stare accesibilă în care 2 să conţină un jeton. (Dacă 2 are un jeton, 3 este
posibilă şi 3 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ă 2 nu are nici un jeton şi nu poate
primi nici unul, atunci marcajul lui p trebuie, de asemenea, să fie zero. Astfel, dacă j2 nu este
activă, atunci un marcaj este accesibil acolo unde marcajul lui p este zero.
Pe baza acestei construcţii s-a obţinut următorul rezultat:


Problema accesibilităţii este reductibilă la problema viabilităţii.
71
Acum avem nevoie să arătăm următoarele.


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 -blocate. O reţea Petri nu este activă pentru o tranziţie  dacă şi numai dacă un marcaj
este accesibil acolo unde tranziţia j nu se poate declanşa şi nu poate deveni declanşabilă. Un marcaj
de acest tip se numeşte  -blocat. Pentru orice marcaj ½ putem testa dacă este j-blocat construind
arborele de accesibilitate cu rădăcina ½ şi testând dacă tranziţia  se poate declanşa oriunde în
arbore. Dacă nu poate, atunci ½ este -blocat. Astfel, pentru a se verifica dacă tranziţia  este
viabilă, trebuie să se verifice dacă vreun marcaj -blocat este accesibil.
În general, totuşi, s-ar putea să existe un număr infinit de marcaje -blocate şi o mulţime
infinită de marcaje în care să găsim marcaje -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 -blocat, atunci orice marcaj ½ ½ este de asemenea -blocat. (Orice secvenţă de
declanşare posibilă din ½ este, de asemenea, posibilă şi din ½ , astfel că dacă ½ poate conduce la
declanşarea lui , acelaşi lucru îl poate face şi ½ .) În al doilea rând, marcajele anumitor locaţii nu
vor afecta -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 ' pentru a indica faptul că în această locaţie se poate afla un număr
arbitrar de mare de jetoane fără a afecta -interblocarea marcajului. Acum, de vreme ce orice ½ ½
este -blocat dacă ½ este -blocat, nu trebuie să considerăm aceste locaţii p cu ½( p)'. Aceasta
înseamnă că folosim problema accesibilităţii submarcajului cu ë p#½( p)ë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 -blocate, dar ele pot fi finit reprezentate prin mulţimea ë(2, 0), (1, 0),
(0, 20)}.

p1
t2

Æ  O reţea Petri Pentru a ilustra marcajele -blocate (moarte)


t1

p2

Hack [1974c, 1975c] arată că pentru o reţea Petri j (extinsă pentru a include ') există o
mulţime finită de marcaje astfel încât j este activă dacă şi numai dacă nici un marcaj din  nu
este accesibil. Dacă un marcaj din  conţine ', este implicată accesibilitatea submarcajului.
Mai departe,  poate fi efectiv calculată. De vreme ce  este finită, componentele diferite
de 'ale marcajelor au o margine superioară . Marginea  este caracterizată ca cel mai mic număr
astfel încât pentru orice marcaj ½ cu ½( p)   " 1 pentru toate p, dacă ½ este -blocat, atunci
submarcajul ½, cu ½( p) ½ ( p),este -blocat dacă ½ ( p)  şi ½ ( p)'dacă ½( p)1". Cu
această caracterizare a lui , vom construi  după cum urmează:
4)c Calculez . Pornesc cu   0Ã şi îl măresc până când găsesc o valoare a lui  care să
satisfacă caracterizarea de mărginire definită mai sus. Testarea pentru  necesită verificarea
tuturor celor ("2) marcaje cu componente mai mici sau egale cu "1.

72
5)c Calculez  prin testarea tuturor marcajelor şi submarcajelor cu componente mai mici sau
egale cu , sau egale cu '.  este mulţimea de marcaje -blocate din această mulţime de ("
1)marcaje.
Odată ce am construit , aplicăm problema accesibilităţii submarcajului pentru fiecare
element al lui . Dacă există un element al lui  din marcajul iniţial care este accesibil, reţeaua
Petri nu este activă; dacă nici un element al lui  nu este accesibil, reţeaua Petri este accesibilă.
Din aceste două teoreme avem următoarele:


Următoarele probleme sunt echivalente.
1.c Problema accesibilităţii
2.c Problema viabilităţii
3.c Problema viabilităţii pentru o singură tranziţie.

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

  %!   +  

Î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 j1 cu marcajul ½ 1 şi j2 cu marcajul ½2 nu se poate decide dacă (j1,½ 1)º
(j2,½2).
Mai târziu Hack [1975a] a întărit acest rezultat arătând că nu se poate decide dacă (j1,½ 1)
 (j2, ½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).

  
Dat un polinom  cu  variabile şi coeficienţi întregi, există un vector (%1,,% ) de întregi astfel
încât (%1,,%)0?
Ecuaţia (%1,,%)0 se numeşte   R  .În general, va fi o sumă de termeni:
 ( %1 ,..., %  )   p ( %1 ,..., % ) , p ( %1 ,..., % )  p %> 1 %> 2 ... %>  .
p
Ecuaţiile diofantice includ %10,3%1 %2"6%30, ş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.

     


   

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
73
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

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

  
Graful ’() al unui polinom diofantic (%1,,%) cu coeficienţi nenegativi este mulţimea:
’()ë(%1,,%,/)#/ (%1,,%) 0 %1,,%}.

  
Problema incluziunii grafurilor polinomiale este de a determina pentru polinoamele O şi M dacă
’(O)º’(M).

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.


Problema incluziunii grafurilor polinomiale este nedecidabilă.
  
1)c Reducem demonstraţia noastră la probleme cu soluţii nenegative. Dacă (%1,, %) este o
soluţie pentru (%1,, %) 0, cu %p * 0, atunci (%1,,!%p,,% ) este soluţie pentru (%1,,!
%p,, % )  0. Astfel, pentru a determina soluţia unui polinom arbitrar, trebuie doar să testăm
fiecare dintre cele 2 polinoame care rezultă din schimbarea semnului unei submulţimi de
variabile pentru soluţiile nenegative.
2)c Similar, de vreme ce 2 (%1,,%)  0 dacă şi numai dacă (%1,,%)  0, avem nevoie să
considerăm numai polinoamele unde valoarea este nenegativă.
3)c Acum putem separa orice polinom (%1,,%) în două polinoame ½1 (%1,,%) şi ½2(%1,,%)
astfel încât (%1,,% ) ½1(%1,,%) )½2 (%1,,%) punând toţi termenii cu coeficienţi pozitivi
în ½1 şi toţi termenii cu coeficienţi negativi în ½2. Deoarece (%1,,% ) u0 (conform punctului
(2) de mai sus), avem ½1(%1,,%) u ½2(%1,,% ) şi (%1,,%)  0 dacă şi numai dacă
½1(%1,,%)½2(%1,,%).
4)c Considerăm două grafuri polinomiale:
 ’(½1)ë(%1,,%, )#  ½1(%1,,%)}
 ’(1"½2)ë(%1,,%, )#  1"½2(%1,,% )}
Acum, ’(1 " ½2) º ’(½1) dacă şi numai dacă pentru toate %1,, % nenegative şi ,  1 "
½2(%1, ,%) implică   ½1 (%1, ,%). Această relaţie este adevărată dacă şi numai dacă nu
există %1,,% şi  astfel încât ½1(%1,,% )*  1"½2 (%1,,%).
Dar, din punctul (3) de mai sus ½1u½2, astfel încât
 ½1(%1, ,% ) *   1 " ½2(%1, ,%)  1 " ½1(%1, ,%) şi, deoarece toţi cuantificatorii sunt
întregi,   1 " ½2(%1,,%) 1 " ½1(%1,,%) este adevărată dacă şi numai dacă ½1  ½2.

74
Astfel, vedem c㠒(½2"1) º’(½1 ) dacă şi numai dacă nu există %1,,% astfel încât ½1(%1,
,%)½2 (%1,,%), adică nu există %1,,% astfel încât (%1,,% )0.
5)c De aceea, pentru a determina că ecuaţia (%1, ,%)  0 are o soluţie, trebuie să arătăm
numai că nu suntem în cazul în care ’(½2"1)º’(½1).

  j &'% 


  (

Acum avem nevoie să arătăm că reţelele Petri pot calcula (într-un sens) valoarea unui
polinom ½(%1,,%). Am mărginit cu atenţie polinomul ½ 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 %1,,% sunt codificate de %p jetoane în i, pentru p1. 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 jetoane, unde  ½(%1,% ).

p1 x1

p2 x2
Ieşire 
Æ   Structura de bază a unei reţele Petri pentru a calcula
pn xn slab valoarea polinomului ½(%1,%)

Pornire Terminare

Această reţea Petri va calcula slab valoarea ½(%1, % ). Calcul slab înseamnă că deşi
valoarea calculată nu va depăşi ½(%1, %), ea poate fi orice valoare nenegativă mai mică decât
½(%1, %). 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 ’(½)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.

px
t1

t2
p1 p2
Æ   O subreţea pentru înmulţire. Această
t4 t3
subreţea calculează slab produsul dintre % şi
p3
py

pxy

75
Această reţea va calcula slab produsul numerelor, % şi , 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 % şi , se declanşează mai întâi tranziţia 1, mutând un jeton din % în 2.
Acest jeton activează tranziţia 3, care poate acum să copieze jetoane din poziţia , punându-le în
3, şi punând jetoane în poziţia % de ieşire. Acum se poate declanşa tranziţia 2, ce pune jetonul
din 2 înapoi în 1. Se activează astfel tranziţia 1, care poate copia cele jetoane din 3 înapoi în .
Acest întreg proces poate fi repetat de exact % ori, de fiecare dată punându-se jetoane în % . Apoi,
marcajul locaţiei % este redus la zero şi reţeaua trebuie să se oprească. Numărul total de jetoane din
locaţia % este produsul dintre % şi .
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 % . Totuşi, jetoanele din locaţia 2 activează atât tranziţia 3 cât şi tranziţia 2, şi
este posibil ca 2 să se declanşeze înainte ca toate cele jetoane să fie copiate din în 3 şi să fie
adăugate la % . În acest caz, numărul de jetoane depozitate în % va fi mai mic decât % . Deoarece 3
se poate declanşa de maximum ori pentru fiecare declanşare a lui 1 şi 1 se poate declanşa de
maximum % ori, putem fi siguri că numărul de jetoane din % nu depăşeşte niciodată % , dar, datorită
naturii permisive a declanşării tranziţiilor, nu putem fi siguri că numărul de jetoane din % va fi
exact % ; s-ar putea să fie mai mic. Astfel, această reţea Petri calculează slab produsul dintre % şi .
Acum, pentru a calcula slab un termen p care este produsul p %U1 %U 2 ...%U
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 p.

ai
xS1

xS2

Æ   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.

xSh

Ri = ai xS1 xS2 « xSh

În acest caz, figura 5.12 arată cum poate fi calculat slab un polinom   1 "  " .
Fiecare subreţea este de forma arătată în figura 5.11 şi calculează slab valoarea unui termen. Ieşirile
celor  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
%1,,%şi să înregistrăm această valoare în locaţiile 1,, .
Pentru fiecare pi este creată o tranziţie p cu intrare nulă şi ieşire prin p astfel încât fiecare
locaţie care este o intrare corespunde lui %p într-un termen  care foloseşte %p.
De aceea, în polinomul %1"%1 %2 vom avea o tranziţie 1 cu ieşiri în 1 şi la cele 1 intrări ale
celor doi termeni %1 şi %1 %2 care folosesc %1; 2 va ieşi în 2 şi la cele %2 intrări ale termenului %1 %2.

76
xS

R1
xS

Ieşire

Æ   O reţea Petri pentru a calcula slab (%1,,


xt1 % ) folosind o colecţie de subreţele de forma celor din
figura 5.11
Rk
xtf

P = R1+ « Rk

Aceste tranziţii pot să se declanşeze de un număr arbitrar de ori, creând orice valoare în
1 ,, . Astfel, pentru fiecare  (%1,,%) este accesibil un marcaj ½ cu ½ ( 1 )%1,, ½(  )
% şi ½ (pp) . Valoarea (%1,,%) poate fi atinsă declanşând mai întâi 1 de %1 ori, punând
%1 jetoane în 1, apoi declanşând 2 de %2 ori, şi aşa mai departe până când  se declanşează de % ori.
Subreţeaua pentru fiecare termen p 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 O şi M,
dorim să determinăm dac㠒(O)º’(M).
(1)c Construim reţeaua Petri jO care calculează slab O(%1, ,% ) şi reţeaua Petri jM care
calculează slab M(%1,,%).
(2)c 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)c Acum trebuie să eliminăm efectele tuturor locaţiilor interne mulţimilor de accesibilitate. Se
pune în evidenţă o mulţime de  " 1 locaţii în fiecare dintre reţelele jO şi jM, locaţiile
corespunzătoare valorilor %1, ,% ş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ă p din jO şi corespunzător p' din jM există un marcaj ½ din (jO,½O) diferit de marcajul
½ din (jM,½ M), deoarece ½( p )ë½( p ) pentru toate ½ p (jM,½ M).
Pentru a preveni această problemă adăugăm la jO două noi locaţii,  şi , (rezultând j O ), şi la
CB alte două locaţii,  şi rG, (rezultând j M ). În j O ,  şi  nu sunt folosite pentru nici o tranziţie,
şi iniţial  este goală iar  este marcată cu un jeton. În j M ,  este o locaţie de pornire care este
iniţial marcată. Fiecare tranziţie din j M este modificată pentru a include atât ca intrare cât şi
ca ieşire. Astfel, atâta timp cât jetonul rămâne în , reţeaua j M poate funcţiona ca înainte. O
nouă tranziţie transferă jetonul de activare de la  la , dezactivând toate tranziţiile din j M şi
³îngheţând´ marcajul. Acum adăugăm două noi tranziţii pentru fiecare locaţie internă din j M .
Pentru fiecare locaţie internă p unde marcajul este neimportant, o tranziţie are locaţiile  şi p
ca intrări şi numai pe  ca ieşire (permiţând marcajului din p să fie decrementat cu 1), şi o altă
tranziţie are  ca intrare şi atât  cât şi p ca ieşiri (permiţând marcajului din p 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ă.

77
(4)c Noua construcţie este ilustrată în figura 5.13. Pentru aceste două reţele Petri, 
O şi 
 cu
' ' ' ' '
marcajele iniţiale ½ , respectiv ½ , ’(O)º’(M) dacă şi numai dacă ( j , ½ )º ( j , ½ ).

O M O O M M

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


Pentru O :
1,,  Ieşire   Locaţii interne
%1,,% y  A(x1, «, xn) 0 1 Un marcaj arbitrar
Pentru  :
1,,  Ieşire   Locaţii interne
%1,,%  M(%1,,%) 1 0 Un marcaj arbitrar
%1,,%  M(%1,,%) 0 1 Toate marcajele arbitrare
Astfel, dac㠒(O) º ’(M), atunci ( j O' , ½ 'O ) º ( j M' , ½ M' ) şi reciproc, dacă ( j O' , ½ 'O ) º
(  , ½  ) atunci ’(O)º’(M).
Astfel se încheie demonstraţia pentru următorul rezultat:


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].

p1 r p1 pG
tj
p2 q p2
qG
pi

pn pn

CA Ieşire CB Ieşire

CGA CGB

Æ  Reţeaua Petri construită pentru a testa incluziunea grafurilor polinomiale

   

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 O şi M şi dorim să determinăm dacă (O,½O) º (M,
½ M) (problema submulţimii). Arătăm că două reţele Petri  şi & pot fi definite astfel încât (O, ½O)
º (M,½M) dacă şi numai dacă (,½ ) (&,½ &). Ne bazăm în această demonstraţie pe următorul
rezultat: (O, ½O) º (M, ½M) dacă şi numai dacă (M, ½M) (O, ½ O)  (M, ½M). Atât  cât şi &
sunt construite dintr-o subreţea comună, j. Reţeaua j codifică mulţimile de accesibilitate ale
reţelelor O şi M astfel încât să producă uniunea lor. Figura 5.14 ilustrează construcţia de bază. Cele 
locaţii 1,,  se comportă fie ca  locaţii ale reţelei O, fie ca  locaţii ale reţelei M. Iniţial ele sunt
nemarcate. Se adaugă două noi locaţii, O şi M, ca locaţii de pornire pentru reţeaua O, respectiv
pentru reţeaua M. Toate tranziţiile reţelei O sunt modificate pentru a include O atât ca intrare cât şi

78
ca ieşire, şi, de asemenea, toate tranziţiile reţelei M sunt modificate pentru a include M atât ca intrare
cât şi ca ieşire.

qA E

qB D

B
A
p1 Æ  Construcţia
reţelelor Petri j,  şi & din
rA rB O şi M. Această construcţie
este folosită pentru a arăta
că problema submulţimii se
pn reduce la problema egalităţii
pentru mulţimi de
accesibilitate.

tA tB

C s

Se adăugă încă o locaţie, , şi două noi tranziţii, O şi M. Marcajul iniţial pentru această
întreagă reţea (incluzând O şi M ca subreţele cu locaţii comune, locaţiile O,Mşi  şi tranziţiile O şi
M) este format dintr-un jeton în  şi zero jetoane oriunde altundeva.
Tranziţia O are locaţia  ca intrare şi produce la ieşire marcajul iniţial pentru reţeaua O plus
un jeton în O; tranziţia M are locaţia  ca intrare şi produce la ieşire marcajul iniţial pentru reţeaua M
plus un jeton în M. Astfel, dacă se declanşeazăO, subreţeaua O are marcajul său iniţial, şi oricare
dintre tranzacţiile sale se poate declanşa normal de vreme ce în O se află un jeton. Totuşi,
subreţeaua M este complet dezactivată, deoarece în M nu se află nici un jeton. Dacă se declanşează
mai întâiM, atunci subreţeaua M poate funcţiona şi O este dezactivată. Mulţimea de secvenţe care se
declanşează pentru j este atunci orice secvenţă de forma:
O, <orice secvenţă de declanşări din O>,
sau orice secvenţă de forma:
M, <orice secvenţă de declanşări din M>.
Reţeaua  este obţinută din j prin adăugarea unei noi tranziţii M. Tranziţia M are locaţia M
ca intrare şi nici o ieşire. Observăm că M se poate declanşa numai dacă tranziţia M s-a declanşat
prima; dacă s-a declanşat prima tranziţia O, atunci locaţia M este goală şi M nu se poate declanşa.
Reţeaua &este construită din  prin adăugarea unei noi tranziţii O. Tranziţia O are locaţia
O ca intrare şi nici o ieşire. Observăm că O se poate declanşa numai dacă tranziţia O s-a declanşat
prima. Observăm că reţeaua & este construită din , nu (direct) din j. Astfel, & conţine atât
tranziţia O cât şi tranziţia M.
Acum să examinăm mulţimile de accesibilitate ale reţelelor Petri j,  şi &. În mulţimea de
accesibilitate a lui j sunt toate marcajele de forma:

79
 O M 1,, 
1 0 0 0,«,0
0 1 0 Orice ½§ (O,½O) (dacă se declanşează O)
0 0 1 Orice ½§ (M,½M) (dacă se declanşează M)

Reţeaua Petri  adaugă o altă clasă de marcaje la mulţimea sa de accesibilitate:


 O M 1,, 
1 0 0 0,«,0
0 1 0 Orice ½§ (O,½O) (dacă se declanşează O)
0 0 1 Orice ½§ (M,½M) (dacă se declanşează M)
0 0 0 Orice ½§ (M,½M) (dacă se declanşează M)

Şi reţeaua Petri & mai adaugă o clasă la acestea:


 O M 1,, 
1 0 0 0,«,0
0 1 0 Orice ½§ (O,½O) (dacă se declanşează O)
0 0 1 Orice ½§ (M,½M) (dacă se declanşează M)
0 0 0 Orice ½§ (M,½M) (dacă se declanşează M)
0 0 0 Orice ½§ (O,½O) (dacă se declanşează O)

Acum, dacă (O,½O) º (M,½ M), atunci ultima clasă din (&,½&) [marcajele de forma (0,0,
0,½ ) cu ½§ (O,½O)] este inclusă în ultima clasă din (,½)[marcajele de forma (0,0,0,½) cu ½ 
§ (M, ½M)]. De vreme ce toate celelalte marcaje sunt aceleaşi, (, ½) (&, ½ &) dacă (O, ½O)
º (M,½M).
Similar, dacă (,½ ) (&,½&), atunci trebuie să avem (O,½O)º (M,½M), de vreme ce
pentru fiecare marcaj (0,0,0, ½ ) cu ½  § (O, ½O) din (&, ½&)trebuie să existe un marcaj egal în
(,½ ). Dar, toate marcajele cu ½ (,O,M)(0,0,0) sunt de forma (0,0,0,½) cu ½ § (M, ½M),
aşa că (O,½O)º (M,½M).
Astfel, această construcţie conduce la următorul rezultat.


Următoarele probleme sunt nedecidabile:
1.c Problema incluziunii grafurilor polinomiale
2.c Problema submulţimii pentru mulţimi de accesibilitate pentru reţele Petri
3.c Problema egalităţii pentru mulţimi de accesibilitate pentru reţele Petri

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

 
.  +   +    

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

80
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
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ă (2) de spaţiu pentru depozitare şi o cantitate exponenţială de
timp. Exponentul () 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, «, 2 2 .

Reprezentarea acestui fapt în algoritmul problemei accesibilităţii va necesita cel puţin log2 ( 2 2 ) =
2 biţi. La fel de important este că în construcţie se folosesc cel mult
 locaţii (pentru o anumită
constantă h).
Demonstraţia lui Lipton se bazează pe posibilitatea de a crea o reţea cu numai
 locaţii care

să poată număra până la 2 2 . 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 şi  astfel încât ½( )" ½( ) să fie o constantă. Dacă
ştim că ½ ( ) " ½( )  , atunci putem testa dacă ½( ) este zero testând dacă ½ ( ) are  jetoane;
dacă ½( ) are  jetoane, atunci ½ ( ) 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 ½ ( ) " ½( ); în acest context, reţeaua trebuie să fie
conservativă, cel puţin cu respectarea acestor două locaţii.
Pentru numere  mici, putem testa dacă marcajul unei locaţii este  considerând locaţia ca
fiind intrare pentru o tranziţie de  ori (figura 5.15).

Test
G
p p

Æ   Testarea unei locaţii mărginite pentru un


marcaj 0, 1 sau 2. Toate tranziţiile trebuie să păstreze
suma marcajelor

½(p) este ½(p) este ½(p) este


0 1 2

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 ( , ' ) este , şi  este un produs
a doi factori întregi mai mici ( = 12) care sunt sumele constante a două alte perechi de locaţii
( ( 1 , ' 1 ) şi (  2 , ' 2 ) ) şi putem testa dacă ½( 1 )0 şi ½(  2 )0, atunci putem testa dacă ½( )
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
Test pentru
locaţia p Æ   Forma reţelelor Petri pe care le foloseşte Lipton pentru a
½(p) ë 0 construi o reţea mai mare care poate testa o numărătoare mai mare pentru
zero

½(p) = 0

Aceste reţele simple îi permit lui Lipton să construiască o reţea, pentru un  dat, care poate

genera exact 2 2 jetoane într-o locaţie ( ), cu zero jetoane în  şi posibilitatea de a testa ½ ( ) pentru
zero. Numărul de locaţii folosite este de numai  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 2 2 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 2 2 . 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.

 /   ! 

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
à        

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.

 ‘   

Reţelele Petri au fost dezvoltate pentru două scopuri majore:


(1)c descrierea sistemelor propuse sau existente
(2)c 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
 m  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ă "  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
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.

 
  ,!     +$# 

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 mR este o mulţime finită de simboluri. Un 
este orice secvenţă de lungime finită de
simboluri din alfabet. Şirul ( m) „ 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 m÷ 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

÷  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 
m  m÷. 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 j
este un 5-uplu (½, g, ,,Æ), unde ½ este o mulţime finită de stări,  este un alfabet de simboluri,
g½% M½este o funcţie de tranziţie,  §½este starea iniţială şi Æ º½este o mulţime finită de
stări finale. Funcţia de tranziţie g este extinsă în mod natural la o funcţie de la ½%$ la ½. Limbajul

84
L(j) generat de automatul cu stări finite este mulţimea de şiruri peste  definită prin L(j)ë §
$#g(,)§Æ}.
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.

  #    +$  

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.

   

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 ² ë½1,,½} 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ă 0 şi o
mulţime de tranziţii ë1 ,...,   } . Tranziţia   va avea ca intrare un jeton din 0 şi ca ieşire marcajul ½.
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 ½ .
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 ½.

     

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 R   
  M. Variaţiile în definiţia limbajului pot rezulta din diferite restricţii
asupra funcţiei de etichetare.
O reţea Petri m
     (R
 mm) este o reţea Petri unde toate tranziţiile sunt
etichetate distinct [i.e., dacă ()  (p), atunci p  ]. 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.

85
A fost considerată o funcţie de etichetare chiar mai generală care ÷ 
   
 m , () „. 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.
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.

       

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 Æ ca o mulţime finită de marcaje finale. Pentru această definiţie definim
clasa de limbaje pentru reţele Petri de tipul L.

  
Un limbaj L este un m÷

m
  m dacă există o structură (, ,,Ý) de reţea
Petri , o etichetare a tranziţiilor   M , un marcaj iniţial ½ şi o mulţime finită Æ de marcaje finale
astfel încât Lë()§$#§ $ şi g(½,)§Æ}.
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ă g(½ , ) este
definită pentru un marcaj ½ şi o tranziţie , atunci g(½,) este definită pentru orice ½u½ . Din acest
comentariu definim o nouă clasă de limbaje, clasa de limbaje pentru reţele Petri de tipul ’, după
cum urmează.

   
Un limbaj L este un m÷ 

m 
   m  dacă există o structură (, , , Ý) de
reţea Petri, o funcţie de etichetare  M , marcajul ½ şi o mulţime finită Æ de marcaje finale astfel
încât L = ëP() · * /  § T* şi există ½R§Æ astfel încât g(½,)u½R}.

O a treia clasă de limbaje pentru reţele Petri este clasa de limbaje pentru reţele Petri de tipul
. 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 
m
 
÷m. O stare ½ este terminală dacă g(½, ) nu este
definită pentru nici un  § . Astfel, clasa limbajelor pentru reţele Petri de tipul este după cum
urmează.

  
Un limbaj L este m÷

m
  m dacă există o structură (, ,,Ý)de reţea
Petri, o funcţie de etichetare  M  şi un marcaj iniţial ½ astfel încât Lë() · $#  § $ şi
g(½,) este definită, dar g(g(½,),) nu este definită pentru nici un § }.

Încă o a patra clasă de limbaje este clasa limbajelor pentru reţele Petri de tipul  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 , atunci toate prefixele  ale lui  (
 % pentru unii x § *) sunt elemente ale aceluiaşi limbaj.

86
  
Un limbaj L este m÷

m
  m dacă există o structură (, ,,Ý)de reţea
Petri, o funcţie de etichetare  M şi un marcaj iniţial ½ astfel încât L = ëP( ) § * /  § T* şi
g(½,) este definită}.

 j $


   

Î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.

   Æ„  „!   



 L L L„ 
Æ   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 j(, ,,Ý); funcţia de etichetare  M $; marcajul iniţial ½ M şi
mulţimea de marcaje finale Æ (pentru limbajele de tip L şi ’). Definim ¦(j, , ½,Æ) ca fiind o
reţea Petri etichetată cu structura de reţea Petri j, funcţia de etichetare , marcajul iniţial ½ şi
mulţimea stărilor finale Æ. Pentru o reţea Petri etichetată ¦, pot fi definite 12 limbaje: L(¦), ’(¦),
(¦), (¦), L(¦), ’(¦), (¦), (¦), L (¦), ’„(¦), „(¦) şi „(¦).
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.

a p2 b Æ   Un exemplu de reţea Petri pentru a ilustra


diferitele clase de limbaje. Fiecare tranziţie este
etichetată cu eticheta sa.
p1 c p3 d p4

Marcajul iniţial (1, 0, 0, 0) este dat pe reţea şi fiecare tranziţie  este etichetată cu (). Dacă
definim Æë(0,0,1,0)} (un jeton în locaţia p3), limbajul de tipul L este ë# u0}, limbajul
de tipul ’ este ë÷#÷uu0}, limbajul de tipul este ë÷ #÷uu0} şi limbajul de tipul
 este ë÷#÷u0}ë÷ #÷uu0}ë÷ #÷u u0}. 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, LºLºL„, ’º’º’„, º  º „ şi ºº„.
De asemenea, fiecare limbaj de tip  este un limbaj de tip ’ unde Æë(0,0,,0)}. Astfel: º’,
 º’ şi „º’„.
Putem de asemenea arăta că fiecare limbaj de tip ’ sau ’„ este de asemenea un limbaj de tip
L respectiv L . Fie ’ un limbaj de tip ’ pentru o structură de reţea Petri (, ,,Ý), cu marcajul
iniţial ½ şi mulţimea stărilor finale Æ.

87
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  § , fie M mulţimea tuturor submultiseturilor corecte ale Ý(). Fiecare
submultiset din M este folosit pentru a defini o nouă tranziţie cu aceeaşi etichetă şi intrări ca şi ,
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  din reţeaua Petri din figura 6.2, multisetul său
de intrare este ë 1 }, iar cel de ieşire ë 1, 2 }. Submultiseturile lui ë 1, 2 } sunt ë 1}, ë 2 } şi ë} (
). 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  şi vor avea ca intrare multisetul ë 1 }, 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 , , şi , 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.
p2

d a b b Æ   O reţea Petri al cărei limbaj


a
d de tip L este acelaşi cu limbajul de tip ’
p4 al reţelei Petri din figura 6.2
p3
p1 c
a c d

Această nouă reţea a fost modificată astfel încât jetoanele suplimentare care depăşesc o stare
finală din Æ 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 ’ 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 ’ şi L. Dar, ’ºL,’„º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  locaţii un -
vector peste -  ë'}. Dacă o componentă a unui marcaj final este ', aceasta înseamnă că nu ne
interesează care este valoarea acestei componente într-o stare finală. O stare  este stare finală dacă
există un marcaj final R astfel încât pentru toţi p, p  1, dacă Rp ë ' atunci p  Rp. 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 R
incomplet specificat. Fie ± mulţimea tuturor locaţiilor pentru care Rp'. Pentru fiecare tranziţie §
pentru care Ý() m ± ë , fie  Ý() m ± şi ñÝ()!. Multisetul  conţine toate locaţiile
unde marcajele nu contează, în timp ce multisetul ñ conţine toate locaţiile unde marcajele trebuie
să fie exact cum s-a specificat în marcajul final R.
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 , dar cu colecţia de ieşire ñ " U, unde U acoperă toate subultiseturile lui
. 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  astfel încât $pRp pentru Rpë' şi p0 pentru Rp'.
Astfel, limbajul de tip L pentru reţeaua Petri construită cu un marcaj final RG (unde toate '-urile din
marcajul R 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 R 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
88
î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
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 este astfel încât nici o tranziţie  nu se poate
declanşa (adică, ½ u() oricare ar fi  § ). Condiţia care specifică o stare finală pentru un limbaj
de tipul este de aceea exact condiţia opusă condiţiei care specifică o stare finală pentru un limbaj
de tipul ’ (Putem numi limbajele de tipul  
m limbajelor de tipul ’). Nu este dificil de văzut
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 [½ u (2,0) şi ½  u (1,1)] este
echivalentă cu [½(0,20)sau ½(1,0)]. Un limbaj de tipul (sau, mai general, un limbaj invers
unui limbaj de tipul ’) poate astfel fi rescris ca un limbaj de tipul L generalizat (adică, incomplet
specificat) şi deci ca un limbaj de tipul L. Astfel, º L şi „º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.

 „!    Æ„  



 „  



 L„ L L Æ   Relaţiile cunoscute între clasele de
 limbaje pentru reţele Petri. Un arc de la o clasă
 O la o clasă M înseamnă că clasa O conţine clasa

 ’„ ’ ’ M
 
 

 „   

      +$  

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 ’ şi
cele de tipul 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 ’, şi . Astfel, limbajele de tipul L sunt

89
î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,
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ă.

  
O

 etichetată ¦(j, , ½,Æ) cu limbajul L(¦)ëR
÷ 
 satisface următoarele
proprietăţi:
1)c Marcajul iniţial ½ are exact un jeton într-o locaţie de pornire şi zero jetoane în restul
locaţiilor, ·Ý() pentru nici un § .
2)c Există o locaţie R§ astfel încât:
a)c Æë R} dac㠄·L(¦), sau Æë R, } dac㠄§L(¦)
0c R·() pentru nici un § 
c)c g(½,) este nedefinită pentru toţi § şi ½§ (j,½) care are un jeton în R [adică,
½ ( R )(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ă:


Fiecare reţea Petri este echivalentă cu o reţea Petri în forma normală.
  
Demonstraţia este constructivă. Fie ¦(j, , ½,Æ) o reţea Petri etichetată, cu j(, ,,
Ý). Arătăm cum se construieşte o reţea ¦ (j, , ½, Æ), cu j  (, , , Ý ) dată în formă
normală (figura 6.5).
Pentru început, definim trei noi locaţii , R şi s care nu sunt în . Locaţia  este locaţia de
pornire, locaţia R este locaţia finală şi  este o locaţie de rulare; un jeton trebuie să fie în  pentru a
permite oricărei tranziţii din să se declanşeze. Marcajul iniţial al lui j va avea un jeton în  dacă
„§L(j ), sau în R dac㠄·L(j ).

90
Locaţie de
rulare
 p
pr
Locaţie
finală

    pf

Locaţie de
pornire

ps

Reţea Petri
originală

Æ   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 j care ne conduce de la
marcajul iniţial la marcajele finale este minimizată în j. Pentru aceasta considerăm trei tipuri de
şiruri în L(2 ). Mai întâi, şirul vid „ este corect mânuit de definiţia lui Æ. Putem determina dac㠄§
L(2) verificând dacă marcajul iniţial ½ este şi marcaj final, adică dacă ½ §Æ.
În al doilea rând, pentru toate şirurile de lungime 1 din L(2), includem în C` o tranziţie
specială de la  la R după cum urmează: pentru §cu §L(2), definim t § T` cu ( )ë }
şi Ý( )  ë R}. Eticheta pentru  este . Putem determina dacă  §L(2 ) prin verificarea tuturor
tranziţiilor § cu (), pentru a vedea dacă g(½,)§Æ.
Î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  1  2 ... p . Am putea să definim o secvenţă  1 ... p  , cu a şi b
tranziţii noi. Noua tranziţie  va avea ca intrare un jeton din  şi va scoate la ieşire marcajul iniţial
½ al lui j, plus un jeton în . Fiecare tranziţie   din  este aceeaşi cu secvenţa  din cu excepţia
faptului că are pe  atât ca intrare cât şi ca ieşire. Aceasta ne permite să dezactivăm toate tranziţiile
din  prin mutarea jetonului din . În cele din urmă, tranziţia  va muta jetonul din , va scoate un
marcaj final ½ şi va duce un jeton la . Cu această construcţie, jetonul din poziţia de intrare se va
' '
muta în poziţia finală din j numai ca rezultat al unei secvenţe  1 ... p  care corespunde unei
secvenţe  1  2 ... p care ne conduce de la ½ la un marcaj final din j.
Din nefericire, în acest mod se va produce o secvenţă care este prea lungă, deoarece
simbolurile suplimentare corespunzătoare tranziţiilor  şi  există pentru j dar nu şi pentru j. O
soluţie ar fi o etichetare nulă a tranziţiilor  şi , dar limbajele de tipul L nu permit etichete nule.

Pentru a rezolva această problemă vom încerca să reunim tranziţiile  şi  1 într-o tranziţie  1 , şi
 
tranziţiile  şi  p într-o tranziţie  p . Pentru aceasta, pentru toţi  § vom defini următoarele
tranziţii în  :
1.c Definim   § , cu (   )()ë } şi Ý(   )Ý()ë }

91
2.c Dacă () º ½ (adică intrările pentru  sunt o submulţime a marcajului iniţial, astfel încât 
poate fi prima tranziţie care se declanşează), atunci definim o tranziţie   cu (   )  ë } şi
Ý(   )½ !()"Ý()ë }.
3.c Dacă Ý() º ½  pentru unele marcaje ½ § Æ (adică  poate fi ultima tranziţie care se
declanşează, care conduce la un marcaj final), atunci definim o tranziţie   cu (   ) ½!Ý()
"()ë „} şi Ý(   )ë R }.
Acum definim funcţia de etichetare  prin  (   )(   )(   )(). Orice şir §
L(2) este prin definiţie generat de o secvenţă  1  2 ... p cu  (  1  2 ... p ). Prin construcţie, 
(  ''1  '2 ... 'p 1  ''p' ), şi astfel § L(2G ). Prin urmare, deoarece L(2)L(2), cele două reţele 2 şi 2 sunt
echivalente. Prin construcţie, 2 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.
pr
c t1

p2
c a a b
a t2 p2 p1 p3
1'  2'  3'  4'
p1
c b
a t3
1''  4'''
pf
p3 a a
pS
b t4
3''  2'''

Æ  O reţea Petri care Æ  O reţea Petri în forma standard


nu este în forma standard. echivalentă cu reţeaua Petri din figura 6.6
Locaţia ‘ este atât locaţie de
pornire cât şi locaţie finală.

     , ) 

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, 2p  (jp, p, ½p, Æp), p  12 cu Lp  L(2p). Deoarece sunt în forma
standard, reţeaua 2p are o locaţie de pornire p §p. De asemenea, Æpë p , Rp } sau ë Rp }, p
12.
Arătăm cum, din aceste două reţele Petri etichetate, se construieşte o nouă reţea Petri
etichetată 2(j, , ½,Æ) cu limbajul L(2G ) care este compunerea dorită a lui L1 cu L2. Ilustrăm
92
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.

 j  

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   
 execuţiei limbajului primei
reţele Petri cu o execuţie a celui de-al doilea. Concatenarea a două limbaje poate fi formal
exprimată astfel: L1L2ë%1 %2#%1§L1,%2§L2}.

 
Dacă L1 şi L2 sunt limbaje de reţele Petri, atunci L1 L2 este un limbaj de reţea Petri.
  
Definim 2 astfel încât locaţia finală a lui 21 să se suprapună peste locaţia de pornire a lui 22. Astfel,
tranziţia care pune un jeton în R1 semnalând sfârşitul execuţiei lui 21, semnalează de asemenea
începutul unei execuţii a lui 22. De aceea, orice şir din concatenarea lui L1 cu L2 trasează o cale de la

1 la R1  2 şi apoi la R 2 în reţeaua Petri compusă şi este un element al L(2 ). Similar, dacă un

şir este generat de j, trebuie să fie compus dintr-un şir generat de 21 şi un şir generat de 22.
Definiţia formală a lui 2 trebuie să ia în considerare şirul vid şi astfel este mai complexă, dar
poate fi definită ca uniunea lui 21 şi 22 la care se adaugă următoarele tranziţii suplimentare. Pentru
fiecare tranziţie  § 2cu 2()ë 2 }, introducem o nouă tranziţie   cu (   )ë R1 }şi Ý(   )
 Ý2(). Dacă 1 § Æ1, atunci adăugăm de asemenea   cu (   )  ë 1 } şi Ý(   )  Ý2().
Definim  (   ) 2 () şi (   )  2(). Noua mulţime finală este Æ Æ1  Æ2 dacă 2 §Æ2;

altfel, Æ Æ2.

Această teoremă arată că limbajele reţelelor Petri sunt închise la concatenare. Figura 6.8
prezintă construcţia pentru L1(")" şi L2.

a,b a b

a,b a,b a b b
pS1 pf1 pS2 pf2

a,b b
"
L(j‘0("0 L(j%0 

a,b a b Æ   Ilustrează


concatenarea a două
a,b a,b a b b
pS1 pf2 limbaje de reţele Petri
pf1 = pS2

a,b b
L("0"1u‘

93
  ÷  

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: L1L2ë%#%§L1 %§L2}.


Dacă L1 şi L2 sunt limbaje de reţele Petri, atunci L1 L2 este un limbaj de reţea Petri.
  
Demonstraţia acestei teoreme este similară cu demonstraţia teoremei anterioare. Definim o
nouă reţea Petri 2 astfel încât L(2 )L1L2. Noua reţea Petri combină cele două locaţii de pornire
î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 21 (dacă tranziţia a fost în 1 ), fie reţeaua Petri 22 (dacă tranziţia a fost în
2) continuă să funcţioneze la fel cum ar fi făcut singură.
Formal definim o nouă locaţie de pornire ' şi noi tranziţii  '1 pentru fiecare  1 § 1 cu
(  1 )ë 1 }şi  ' 2 pentru fiecare  2  § 2 cu (  2 )ë 2 }. Definim (  '1 )ë '
 }şi (  ' 2 )
'
ë  } cu Ý(  '1 ) Ý1(  1 ) şi Ý(  ' 2 ) Ý2(  2 ). Funcţia de etichetare (  '1 ) 1(  1 )şi  (  ' 2 )
2(  2 ). Noul marcaj iniţial are un jeton în 
 Noua mulţime finală este ÆÆ1 Æ2. Dacă 1 §
Æ1 sau §Æ2 atunci ' §Æ.
2

Figura 6.9 ilustrează construcţia cu L1(") şi L2÷ (÷((1).

a a b

a b a a b
pS pf1 pS2 pf2

a
b
L(j%0 ÷
L(j‘0("0

a b

Æ   Ilustrarea uniunii a două


b
limbaje de reţele Petri. L(CG) =
a(a+b)b + a mbn,
pGS pGf (÷((1)

a b

a a b

L(CG) = a(a+b)b + am bn
a

94
 j  

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 ,§ şi %1,%2§$ prin:
„„
 %1%2(%1%2)"(%1%2)
Compunerea concurentă a două limbaje este atunci L1L2ë%1%2#%1§L1,%2§L2}.
Ca un exemplu simplu, dacă L1ë}şi L2ë} atunci L1L2ë,,}.
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
alt automat stivă push-down, limbajele independente de context nu sunt închise la concurenţă.
Pentru limbajele de reţele Petri, avem următoarea teoremă.


Dacă L1 şi L2 sunt limbaje de reţele Petri, atunci L1 L2 este un limbaj de reţea Petri.
  
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 21 cât şi ale lui22, ca marcaj iniţial, şi defineşte noua mulţime de
marcaje finale ca fiind compusă din orice marcaj care este în Æ1 (peste locaţiile din 1) şi în Æ2
(peste poziţiile din2).
Această construcţie este ilustrată în figura 6.10 pentru L1(")" şi L23 2.

a a a
b
a
pS1 pf1 pS2 pf2
c c c
b
b
L(j‘0("0 " L(j%0 2%

a,b a

a
pS1 pf1

b
Æ 
b Ilustrează
compunerea
pGS pGf
concurentă a două
a limbaje de reţele
b Petri
a
pS2 pf2
c c c
L(j0 ("0"2 % 

95
    

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 L1mL2ë%#%§L1p%§L2}.


Dacă L1 şi L2 sunt limbaje de reţele Petri, atunci L1 mL2 este un limbaj de reţea Petri.
  
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
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ă  § 1şi  § 2sunt astfel încât ()
(), atunci avem o tranziţie , §  cu (,)  1() " 2() şi Ý (,)  Ý1( ) " Ý2 (). Unele
dintre aceste tranziţii au intrări care includ locaţia de pornire. Dacă pentru o tranziţie , din , aşa
cum s-a definit mai sus, (,)ë 1 , 2 }, atunci înlocuim tranziţia cu o nouă tranziţie   , , unde
(   , )ë  }.
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 şiL2. Construcţia este demonstrată
în figura 6.11.

a a
b b

pS1 pf1 pS2 pf2


c c c c c c

L(j‘0 2% L(j%0 %2 

a c
pGS a pGf
c

L(j02 %m%2

Æ  Ilustrează intersecţia a două limbaje de reţele Petri

  

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.
 
 unei propoziţii xR este propoziţia % cu simbolurile în ordine inversă. Definim aceasta
recursiv prin:
 
(%) % , pentru §, x § +
96
Atunci pentru un limbaj avem L ë% #%§L}.


Dacă L este un limbaj de reţea Petri, atunci şi L este un limbaj de reţea Petri.
  
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(2)L(2 ) . Acesta doar porneşte
reţeaua Petri în sens invers şi inversează toate şirurile generate.

 jm
 

Complementara  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 $!L, sau ë%§$#%·L}.
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.

 j
 


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.

j
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.
  
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. j  
R (î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$LLLLLL
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ă   ( ( 1) este un limbaj de reţea Petri. Afirmăm că ( )$ nu este un limbaj de reţea
97
Petri. Toate generatoarele lui ( )$ trebuie să aibă unele locaţii, sau mulţimi de locaţii, care
codifică numărul  pentru fiecare porţiune a şirului. Aceste jetoane controlează generarea
simbolurilor . Pentru ca o reţea Petri să genereze ( )$ 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 ( )$ există anumiţi p, ,  astfel încât reţeaua Petri să genereze, de asemenea, nişte şiruri
     
de forma următoare:   ... p   ...   p ...    , cu p ( . 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 ë } conţin
orice mulţime recursiv enumerativă. Astfel, deoarece limbajele de reţele Petri sunt închise la
intersecţie şi ë } este un limbaj de reţea Petri, dacă ar fi închise la concatenare indefinită, ar fi un
astfel de AFL. Totuşi, ştim că ë'' }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 terminarea a fost definită de Gostelow [1971] pentru modele de calcul complexe
cu grafuri cu bucle duble.

  
O reţea Petri este 
  
÷ dacă de fiecare dată când se termină este sigur că:
(1)c în reţeaua Petri rămâne numai un jeton şi că acesta este în locaţia finală, şi că
(2)c 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.c Conectăm locaţia finală cu locaţia de pornire.
2.c 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
   

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$ şi substituirea lui L2 prin 
î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:


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.

j 
Limbajele de reţele Petri sunt închise la substituţia finită şi homeomorfism.

  0 +$      +$ 

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.

  $

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ă.


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 ë #  ( 1} independent de context. Deoarece acest limbaj nu este regulat,
ştim că nu toate limbajele de reţele Petri sunt limbaje regulate.
99
a b
Æ   Un limbaj de reţea Petri independent
a b b de context care nu este un limbaj regulat
pS pf

L(C) = ëanbn /  > 1} 

   $ 
     

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.

Æ Un limbaj de reţea Petri


a b c
dependent de context, dar nu independent de
context
a b c
pS pf

L(j03#(45

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 ë''  # ' § $} independent de context. De aici
rezultă următoarea teoremă.


Există limbaje independente de context care nu sunt limbaje de reţele Petri.
  
Presupunem că există o reţea cu  locaţii şi m tranziţii care generează limbajul ë'' }. Fie 
numărul de simboluri din , (1. Pentru un şir de intrare %% , fie %| lungimea lui %. Deoarece
sunt  şiruri de intrare % posibile, reţeaua Petri trebuie ca după  tranziţii să aibă  stări accesibile
distincte, pentru a-şi aminti întregul şir %. Dacă nu avem atât de multe stări, atunci pentru unele
şiruri %1 şi %2 avem g(½,%1)g(½,%2), pentru %1ë%2.
Apoi vedem că g(½, %1 %2 )g(g(½,%1), % 2 )g(g(½,%2 ), %1 )g(½, %2 %1 )§Æ şi ca urmare
reţeaua Petri va genera incorect%1 % 2 .
În capitolul 4.4.2 am arătat că pentru fiecare tranziţie  există un vector   •+. astfel
încât dacă g(,) este definită, atunci valoarea lui g(,) este  " . Apoi după  intrări avem o
stare , unde    ½   p , pentru o secvenţă de tranziţii  p1  p2 ... p . O altă cale de a exprima această



sumă este:   ½   R    , unde R este numărul de apariţii ale tranziţiei tj în secvenţa  p1  p2 ... p [R


(R1R2R÷)este vectorul declanşărilor]. De asemenea, avem constrângerea  R    .




În cazul cel mai bun, vectorii 1 2÷ vor fi liniar independenţi şi pentru fiecare vector de
declanşări (R1R2R ÷) va reprezanta o singură stare . Deoarece suma coeficienţilor este , vectorul
(R1R2R÷) este o partiţie a întregului  în÷părţi. Knuth [1973] a arătat că numărul de partiţii ale unui
÷ 1
întreg  în ÷ părţi este   ÷ 1 .

100
÷ 1 (   ÷  1)...(   1)
Acum, deoarece   ÷ 1 


(   ÷) ÷ , înseamnă că după  intrări în


( ÷  1)!
mulţimea stărilor accesibile sunt mai puţin de ( " ÷)÷ stări accesibile. Pentru un  suficient de
÷ 1 '
mare, avem deci j  ÷ 1  (   ÷)   şi este imposibil să fie  stări distincte pentru fiecare din
÷

cele  şiruri de intrare posibile. Astfel, este imposibil ca o reţea Petri să genereze limbajul ë'' }.
Demonstraţia faptului că ë'' } 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   , 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].

  $  


     

Un limbaj independent de context L este un m÷÷


      dacă
există cuvinte '1,,' din $ astfel încât Lº '1* '2* ...'* .
Adjectivul ³mărginit´ se referă la numărul finit de cuvinte, '1,,'. 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].


Familia de limbaje mărginite independente de context este cea mai mică familie de mulţimi definite
de următoarele reguli:
1.c Dacă P este o submulţime finită a lui  $, atunci P este mărginit independent de context.
2.c Dacă P1 şi P2 sunt mărginite independente de context, atunci P1  P2 şi P1 P2 sunt
mărginite independente de context.
3.c Dacă P este mărginită independentă de context şi %, § $, atunci ë%pP p # p u 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
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 ¦(j, , ½ ,Æ ) care generează limbaje de reţea Petri ë%p ' p#p u0}
dându-se reţelele Petri în forma standard ¦%(j%, , ½%,Æ% ), ¦ (j , , ½ ,Æ  ), ¦'(j', , ½ ',
Æ') care generează %, , respectiv '. ¦ combină reţelele Petri ¦%,¦ ,¦' şi o nouă locaţie astfel încât
de fiecare dată când ¦% este executată, se pune un jeton în locaţia . Locaţia numără de câte ori
este executată ¦%. După ce ¦% s-a executat de câte ori se doreşte, se execută ¦ '. În final ¦ este
executată în mod repetat, mutând câte un jeton din la fiecare repetare. Deoarece şirul de intrare
este corect generat numai dacă reţeaua Petri este goală (cu excepţia lui Æ care este definită ca fiind
Æ ), suntem siguri că numărul de execuţii ale lui ¦% este egal cu numărul de execuţii ale lui ¦ .
Această construcţie, care este ilustrată în figura 6.14 pentru %, (") şi ' ",
arată că ë%p' p#p u 0} este un limbaj de reţea Petri. Astfel, orice limbaj mărginit independent de
context este un limbaj de reţea Petri.

pSx pfx pSx p pSy


a b
b
a a b
b
 a
 pS pfw
pS pfw
 b a
b a
 b b b
 b
a a b

 pfx pfy
pSy pfy 
b Æ   O reţea Petri care să genereze limbajul ë%p' p # p u 
0}. Construcţia arată că toate limbajele mărginite independente de
b 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ă (") 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 ë(")" #(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.

  $
     

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
ş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.


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  tranziţii. Acest
număr, notat cu , este, pentru o secvenţă de tranziţii  p  p ... p ,   1   ( . ( p )     ( p ) ) .
1 2   


Deoarece numerele ( , Ý()) şi ( , ()), şi deci şi numerele Ý() şi () (cardinalitatea
multiseturilor de intrare şi ieşire), sunt fixate de structura reţelei Petri, există o valoare maximă  a
lor,   max  Ý(  )     (  )  , şi astfel   1   (| Ý(p  ) |  |  (p  ) |)  1   .
  §


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.
Tipul 0 (T - 0)
T-0
Depente de context (CS)
CS

Limbaje de reţele Limbaje independente BCF


Petri (PNL) de context (CF)
PNL R
CF
Limbaje regulate Limbaje mărginite CF
independente de
context (BCF)

Æ   Ilustrarea rezumat a relaţiei limbajelor de reţele Petri cu clasele tradiţionale de
structuri de limbaje
103
É   L L L„   „
÷   - + + ? + +
    + + + + + +
j   ? + + ? + +
j   ? + + ? + +
   - „-liber + ? Prefix Prefix
g   + + + + + +
É  )  ? - - ? ? ?
j
  - ? - - ? -
    $ - + + - Prefix Prefix
      $ 
   + + + + + +
  &ë(
 
      + + ? + + ?

Æ  Rezumatul proprietăţilor unora dintre limbajele de reţele Petri

 / %!  !  

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.

 L L L„   „



   D D ? D D D
"   ? ? ? D D D
Æ   ? ? ? D D D
   !     ? N N ? N N

Æ  Tabel ce rezumă proprietăţile decidabile ale limbajelor de tipul L şi ale celor de tipul 
(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

÷ m ÷    care sunt izomorfe cu reţelele Petri.

 1   ! 

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ă.

104
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
tipul  ş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 , ’, ’„,  şi „ pentru reţele Petri restricţionate [fără bucle, fără arce multiple; adică toate
„

multiseturile sunt mulţimi, şi pentru fiecare , () m Ý()  ] sunt identice cu clasele
corespunzătoare pentru reţele Petri generalizate. De asemenea, nu este dificil de văzut că clasele L„,
’„ şi „ 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, ,«) şi
limbajele nerestricţionate (L , „,«). Spre exemplu, nu se ştie dacă L = L„, sau nu.

105
              

Î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.

/ ‘ 0     !$! !  

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ă ë 1, 4 } este o
constrângere, atunci fie 1, fie 4 trebuie să nu conţină niciodată nici un jeton. Dacă 1 este marcată,
atunci nu se poate pune un jeton în 4 până când nu sunt scoase toate jetoanele din 1, ş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).

pi
+ Æ  O tranziţie SAU-exclusiv.
Tranziţia  se poate declanşa numai dacă fie p fie  are un jeton şi
tj cealaltă nu
pk

Î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
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ă 

  şi cu exact două ieşiri (una etichetată cu , de la empty (gol)
şi cealaltă etichetată cu R, de la full (plin)). O tranziţie comutator se declanşează când este permisă
(ignorând starea intrărilor speciale).

f f f f

e e e

(a) (b)

Æ    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 , dacă intrarea comutatorului este


goală, sau în cea etichetată cu R, 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, şi ", cu semafoare.
Dijkstra a definit operaţiile şi " 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 " a unui semafor  măreşte valoarea
semaforului cu unu, adică "1. Operaţia a unui semafor, pe de altă parte, micşorează  cu
unu atâta timp cât rezultatul este un număr nenegativ; sistemul trebuie să aştepte până când  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 şi " 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 şi " 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 şi ". Problema
pusă a fost problema R ÷
m

.
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
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 ", şi apoi va aştepta un semafor Ägata´. Procesul corespunzător trebuie să
decrementeze cele două semafoare (cu ajutorul operaţiei ), 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 [(); ( )]. Apoi, fumătorul cu hârtia poate lua
tabacul [()] şi fumătorul cu tabacul poate lua hârtia [( )], dând naştere la o interblocare. Patil a
demonstrat că uneori nu există nici o secvenţă de operaţii şi " care să poată rezolva această
problemă, demonstrând că deşi toate Äsoluţiile´ obţinute cu ajutorul operaţiilor şi " 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.

Fumător cu Fumător cu Fumător cu


hârtie chibrituri tutun
P(S) P(S) P(S)
V(t) V(t) V(p)
P(t) P(t) P(p)
V(m) V(p) V(m)
P(m) P(p) P(m)

Agentul este compus


din trei procese V(S) V(S) V(S)

Æ  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 şi ", 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 1 creează articole
pentru primul proces consumator j1, iar celălalt proces producător, 2, produce pentru cel de-al
doilea proces consumator, j2. Articolele care sunt produse, dar nu sunt încă consumate, sunt puse
într-un buffer, şi anume în bufferul M1 pentru (1,j1) şi în bufferul M2 pentru (2,j2). 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 (1, j1) se cere să aibă prioritate faţă de perechea (2, j2) în folosirea canalului. De
aceea, canalul nu este niciodată folosit pentru a transmite articole de la bufferul M2 la consumatorul
j2 atâta timp cât bufferul M1 nu este gol.
Toate acestea sunt schiţate în figura 7.4.
108
P1 P2

B1 B2 Æ  Modelul producător /consumator cu buffer şi canal


distribuit

Canal distribuit

C1 C2

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
M1 cât şi în bufferul M2. Acum, dacă producătorul 1 ia o pauză, atunci ar putea apărea eventual
cazul în care toate articolele din bufferul M1 au fost transmise consumatorului j1, astfel încât
bufferul M1 este gol. Această situaţie va permite ca un articol din bufferul M2 să fie adus la
consumatorul j2. Astfel, există un drum de la ½ la o stare ½ în care consumatorul j2 poate folosi
canalul.
Acum, dacă din contră producătorul 1 produce  articole în plus, vom fi în starea ½ " , 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 ½
"  în starea ½ " . Deoarece consumatorul p poate folosi canalul în ½ şi reţelele Petri sunt
permisive, consumatorul j2 poate să folosească în continuare canalul, în ciuda prezenţei celor 
articole în bufferul M1. 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  m
[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ă p cu marginea , putem crea o locaţie
complementară p astfel încât suma ½ ( p) " ½( p ) să fie constantă  pentru toate marcajele
'
accesibile. Aceasta ne permite să testăm dacă ½( p) este zero testând dacă ½ ( p ) este  (vezi
capitolul 5.6).]

/  (.  

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 
m
 
. Un arc inhibitor de la o locaţie p la o tranziţie  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 2 se poate declanşa numai dacă se află
câte un jeton în 2 şi 4 şi nici unul în 1. 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

d1 b1 c1 Æ  O reţea Petri extinsă cu un arc inhibitor

p3 p4

d2 c2

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.

  2  

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 j(, ,,Ý) cu o restricţie ½ º. Trebuie să ne asigurăm că toate locaţiile din ½ nu sunt
marcate în nici un marcaj accesibil. Singura modalitate prin care toate locaţiile din ½ ar pute fi
marcate ar fi prin declanşarea unei tranziţii  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  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 , pentru fiecare
locaţie  din restricţia ½ care nu este în ½(). Tranziţia , este identică cu tranziţia  cu excepţia
faptului că mai are în plus un arc inhibitor de la  la ,. Efectul declanşării tranziţiei , este acelaşi
cu al declanşării tranziţiei , şi dacă  poate fi declanşată fără violarea unei restricţii, atunci se poate
declanşa cel puţin una dintre tranziţiile ,.
Pentru a exemplifica pentru această construcţie, considerăm reţeaua Petri din figura 7.6.
Dacă impunem restricţia ë 3, 7 } (adică, 3 şi 7 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  în două tranziţii   şi   şi o
locaţie 
 . Definim (   )  () (fără arce inhibitoare) şi Ý(   )  Ý(). Locaţia 
 reprezintă
declanşarea tranziţiei , deci Ý(   )  ë 
 }  (   ). Acest fapt este ilustrat în figura 7.8. Acum,
pentru fiecare locaţie p care este o intrare inhibitoare pentru , definim o restricţie ë , 
 }. Acesta
ne asigură că tranziţia nu se poate declanşa dacă marcajul lui p este diferit de zero.

110
p7 p7

t6
t6
p5 p2
p5 p2
t1 t4 t1 t4

p3 p6 p3 p6
p1 p1

t2 p4 t3 t2 p4 t3

t5 t5

Æ   O reţea Petri cu o restricţie Æ  O reţea Petri cu arce inhibitoare
3 21 6 5. Restricţia semnifică faptul că în corespunzătoare reţelei Petri cu restricţii din
nici un marcaj accesibil nu sunt permise figura 7.6. Arcele inhibitoare ne asigură de
simultan jetoane în locaţiile 2 şi 6. faptul că în locaţiile 2 şi 6 nu se pot afla
simultan jetoane.

tj
I(tj) O(tj)

Æ Convertirea unei tranziţii într-o tranziţie


de început şi una de final şi o locaţie reprezentând
    declanşarea tranziţiei
I(tj) O(tj)

pi

      ÷!  !  

O tranziţie SAU-exclusiv  cu intrarea () 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 (). Fiecare tranziţie are o intrare (normală) şi restul intrărilor sunt arce inhibitoare.
Figura 7.9 este un astfel de exemplu.

(a) +
O(tj)

Æ  Convertirea (a) unei tranziţii SAU-exclusiv (b) în


arce inhibitoare

(b) O(tj)

111
Comutatoarele pot fi de asemenea transformate cu uşurinţă în arce inhibitoare. Acest fapt
este ilustrat în figura 7.10.

e
(a)
f

Æ  Convertirea (a) comutatoarelor în (b) reţele Petri cu


arce inhibitoare
e

(b)

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.

     

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ă şi  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  doi timpi, ±1, şi ±2,. O tranziţie  se poate declanşa numai dacă a fost activată cel
târziu la momentul ±1, şi, de asemenea, trebuie să se declanşeze înainte de momentul ±2,, 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 este zero. Această situaţie este
ilustrată în figura 7.11. Dacă punem un jeton în locaţia 07 şi definim prioritatea tranziţiei 1 mai
mare decât prioritatea tranziţiei 2, atunci vom obţine un jeton într-una din cele două locaţii din
dreapta în funcţie de marcajul locaţiei . Aceasta rezultă din faptul că tranziţia 1 se poate declanşa
numai dacă este activă, şi este activă numai dacă în locaţia se află un jeton. Tranziţia t2 se poate
activa numai în cazul în care tranziţia 1 nu se poate activa deoarece locaţia este goală.
Locaţia p
este vidă
p=0? t1
Æ   Folosirea priorităţilor pentru a testa dacă
marcajul unei locaţii este zero sau nu. Tranziţia 1 are
prioritate asupra tranziţiei 2.
Locaţia p nu
este vidă
p 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  şi  şi setăm ±2,*
±1,, atunci tranziţia  are prioritate asupra tranziţiei  deoarece  trebuie să se declanşeze (dacă este
activă) înainte să i se permită tranziţiei  să se declanşeze.

112
/  %  .     !  <%&   )  

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  cu 1´,
Ämicşorează registrul  cu 1 (numai dacă registrul  nu este 0)´, Äsalt la instrucţiunea 5 dacă
registrul  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.c Dacă registrul 2 este zero, mergi la instrucţiunea 5.
2.c Scade 1 din registrul 2.
3.c Adaugă 1 la registrul 1.
4.c Mergi la instrucţiunea 1.
5.c 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.c P(): Măreşte registrul  cu 1.
2.c D(): Micşorează registrul  cu 1 (registrul  nu este zero).
3.c J()[s]: Salt la instrucţiunea  dacă registrul  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 
regiştrii folosiţi într-un program prin  locaţii, 1' ,..., ' . De asemenea folosim !1locaţii pentru a
reprezenta poziţia registrului de control înainte de instrucţiunea 1 (marcajul iniţial), sau după
instrucţiunea p, p 1, într-un program cu  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.

Æ   Conversia unei
pi pi 
p i  instrucţiuni (la locaţia p)


pentru un dispozitiv de
recunoaştere la o tranziţie

 într-o reţea Petri extinsă
folosind arce inhibitoare. (a)
pS pi+ P() (b) D() (c) J()[s]
pi+ pi+
(a) (b)
(c)

113
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.

/  !+   

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ă
m
 m
m
şi a
sugerat că o altă subclasă,
m
÷m, 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.

 #! 

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
  
O ÷   
este o reţea Petri j(, ,,Ý) astfel încât pentru fiecare  § , ()1 şi
Ý()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.

  *  

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.

   
Un 
R÷
 este o reţea Petri j(, ,,Ý) astfel încât pentru fiecare p§, ( p)ë p 
§Ý( )}1 şi Ý( p)ë p §()}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 m
m acestuia. Un ciclu într-un graf marcat este o secvenţă de tranziţii  1  2 ... 
astfel încât pentru fiecare   şi   1 din secvenţă există o locaţie p cu p1 § Ý(   ), p §(   1 )şi
 1    . 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 1 2 1 este un ciclu, la fel ca şi
secvenţele 434 şi 24312.
t2 p3 t4

p1 p2 p5
Æ  Un graf marcat
p4 p6

t1 t3

Importanţa ciclurilor pentru grafurile marcate derivă din următoarea teoremă:


Numărul de jetoane dintr-un ciclu al unui graf marcat nu se schimbă în urma declanşării tranziţiilor.

115
Cu ajutorul acestei teoreme se arată uşor următoarele:

 
Un marcaj este activ dacă şi numai dacă numărul de jetoane din fiecare ciclu al grafului marcat este
cel puţin 1.


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ă.


Î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.

 2    

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.

  
O

 m
m
este o reţea Petri j(, ,,Ý) astfel încât pentru fiecare  § şi
p§(), sau ( )ë p } sau Ý()ë p}.
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  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
O ÷ m÷  m 
 R  (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].

 2   




Hack a definit de asemenea o altă clasă a reţelelor Petri numită m


mm

÷m
[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.


Nepermise

Reţele cu alegere

Reţele simple

marcate
Grafuri

liberă



Permise


Æ  Un grafic ce indică unele dintre configuraţiile structurale permise şi nepermise pentru
unele subclase de reţele Petri

117
Ú        

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 O este Ämai puţin puternic´ decât un model M 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 O defineşte o clasă de limbaje
L(O). Spunem că două clase de modele O şi Msunt echivalente dacă L(O) = L(M). Aceasta înseamnă
că pentru orice instanţă  a unei clase de modele O cu limbajul L()există o instanţă  a clasei M cu
un limbaj identic L()L().
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 O este  
÷÷ 
  m cu (inclusă în) o clasă de modele M dacă fiind dată o instanţă  a clasei O există un
algoritm pentru a crea o instanţă  a clasei M astfel încât:
1.c Fiecare componentă structurală a modelului  este reprezentată printr-o mulţime (mică)
identificabilă de componente ale modelului . Dimensiunea modelului  (numărul de părţi) este
în cel mai prost caz un multiplu constant al dimensiunii modelului , cu constanta determinată
de clasele de modele O şi M şi nu de instanţele  şi .
2.c Orice secvenţă de acţiuni din  poate fi simulată de o secvenţă din , cu lungimea secvenţei
din  cel mult un multiplu constant al lungimii secvenţei din .
118
3.c Modelul  se blochează definitiv numai când modelul  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  m  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.c Automate cu stări finite [Hopcraft şi Ullman 1969; Bredt 1970b; Gilbert şi Chandler 1972]
2.c Grafuri marcate [Commoner et. al. 1971]
3.c Grafuri computaţionale [Karp şi Miller 1966]
4.c Sisteme / " [Dijkstra 1968; Bruno et. al. 1972]
5.c Sisteme Ämesaj´ [Riddle 1971]
6.c Grafuri UCLA [Ciostelow 1971; Cerf et. al. 1971; Cerf 1972; Cerf et. al. 1972]
7.c Sisteme de adunare a vectorilor [Karp şi Miller 1968]
8.c Sisteme de înlocuire a vectorilor [Keller 1972]
9.c 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.

1 ‘ !   !  #   

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.

1  "#!   

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
Reţele Petri
Æ  Relaţiile dintre reţelele Petri,
automatele cu stări finite şi grafurile marcate
Grafuri marcate Automate cu stări finite

1  "#!  !  23   ‘ 4

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 ’ este definit printr-un graf orientat ’(,O), unde ë1,, }
este o mulţime de vârfuri şi Oë1,,÷}este o mulţime de arce.
Fiecare arc p §O este o pereche ordonată de vârfuri (,) care reprezintă un arc de la  la
. Fiecărui arc p(,) i se asociază un cvadruplu (,,,,P,, ,). Fiecare arc reprezintă o
coadă de date produse de procesor pentru nodul  pentru a fi folosite de procesor pentru nodul .
, dă numărul iniţial de date din coadă pentru arcul de la  la . Un nod  este activ dacă sunt cel
puţin , date pe fiecare arc orientat spre  dinspre nodul . , este un prag. Operaţia asociată
nodului  se execută prin mutarea a P, date din coadă (P,  ,) pentru fiecare arc îndreptat spre
. Când funcţionarea pentru  se termină, pune , date în coada asociată fiecărui arc (, )
îndreptat de la un nod  la un nod . Figura 8.2 este un exemplu de graf computaţional. În starea
iniţială, nodul 1 este activat, de vreme ce are o intrare şi această intrare are trei date în coada sa.
Când 1 se execută mută un articol din acestă coadă şi după terminare pune un articol pe arcul de la
1 la 2. În această nouă stare se pot executa fie 1 , fie 2 de vreme ce fiecare dintre ele au în coada
ataşată suficiente articole pentru a-şi satisface pragurile.
(3 0 1 1)
(1 0 0 1)
v3 (1 1 1 1) v2 (0 1 1 1) v1
(0 1 1 1)

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

(0 1 1 1)

Æ   Un graf
v4 (0 1 1 1) v5 (0 1 1 1) v6 computaţional

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

v7 (0 1 1 1) v8

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  are , arce de intrare din locaţia ce reprezintă un arc de la  la . 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 P, din aceste jetoane, astfel că de la tranziţia  la locaţia
reprezentând arcul de la  la  sunt ,)P, arce direcţionate. În plus, se pun , jetoane în locaţii
reprezentând arce de la nodul  la nodul . Marcajul iniţial este determinat de ,, 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
v3
v2

v4

v1

v5

v6
v7
v8

Æ  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 ,P, pentru toate nodurile . Totuşi, grafurile computaţionale sunt mai
puternice decât grafurile marcate din cauză că pot avea ,(P,.
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.
Reţele Petri

Æ   Adăugarea grafurilor de calcul la


Grafuri de calcul Automate cu stări finite ierarhie

Grafuri marcate

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
1   5-2 $6 ‘ ×7! ‘ 4

Operaţiile şi " 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 şi " între procese. Cu toate acestea, sistemele şi " 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 şi " 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 şi ". Totuşi, sistemele /" 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 /", folosim un proces separat
pentru a modela fiecare stare a automatului cu stări finite. Asociem un semafor fiecărei stări. Fie ½
 ë1, , } mulţimea de stări şi g ½ %  M ½ funcţia de tranziţie, cu o mulţime de acţiuni .
Asociem stării p o stare p şi un proces. Procesul execută mai întâi o (p). În general va aştepta aici
până când starea automatului va deveni p. După (p), procesul declanşează arbitrar orice  § 
pentru care g(p, ) este definită şi execută (), unde  g (p, ). Apoi acest proces revine la
(p) ± ul său. Figura 8.5 ilustrează această conversie într-un sistem /" 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.

q1 q2 Æ  Un automat cu stări finite

q3 q4

P(S1) P(S3)
P(S2) P(S4)
V(S3) V(S3)
V(S1) V(S2) Proces P2 V(S1) V(S4) Proces P4

Proces P1 Proces P3

Æ  Sistem P/V pentru automatul cu stări finite din figura 8.5

Pentru a converti un graf computaţional la un sistem /", asociem un semafor , cu fiecare
arc (, ) din graf. Valoarea semaforului va fi numărul de articole care aşteaptă în coada ataşată
acelui arc. Astfel, valoarea semaforului , este iniţial ,. Pentru fiecare nod din graful
computaţional se crează un proces. Procesul nodului  execută mai întâi Tj, operaţii asupra
semaforului , pentru toate arcele (,) îndreptate spre . Aceasta ne asigură că fiecare coadă are
cel puţin , articole. Apoi, deoarece fiecare operaţie a decrementat semaforul şi efectul corect
este acela de a micşora , cu P,, executăm ,)P, " operaţii asupra semaforului , pentru a

122
reface valoarea corectă a lui ,. Acum terminăm procesul pentru nodul  executând , operaţii
asupra semaforului , pentru fiecare arc (,) care iese din .
Conversia este ilustrată în figura 8.7 pentru nodurile 3 şi 4 ale grafului computaţional din
figura 8.2.

P(S13) P(S24)
P(S33) P(S24)
V(S33) P(S24) Æ  Procesele sistemului /" pentru două din nodurile grafului
V(S37) P(S74) computaţional din figura 8.2
P(S45)

Observăm că graful computaţional poate să testeze şi să introducă din mai multe surse în
acelaşi timp, în timp ce sistemele /" 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 /", 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 /" 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 /" la ierarhia noastră se obţine figura
8.8.
Sisteme de mesaje


Sisteme P/V 
Æ   Adăugarea sistemelor /" la ierarhia
de modele
Grafuri de calcul Automate cu stări finite

Grafuri marcate

1     $2%  ‘ ‘4

Sistemele în care procesele comunică prin operaţii şi " cu semafoare nu sunt dintre cele
mai performante. Sugestia noastră pentru mecanisme mai bune sunt ÷m. Un sistem Ämesaj´
este o colecţie de procese care comunică prin mesaje. Sunt posibile două operaţii cu mesaje:

÷ 
 şi 
÷
. Trimiterea unui mesaj este similară cu o operaţie "; primirea unui mesaj este
similară cu o operaţie . 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 
  m
 (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 
  

÷ şi sunt reprezentate în limbajul de modelare al
proceselor program (PPML).
Un sistem exemplu cu trei procese este dat în figura 8.9.
123
L1
L2

Dispozitiv Dispozitiv
de intrare Program L5 de ieşire

L3

L4

„  c cc   c
Receive L1; A1: Receive L3;
A1: Set READ; If-internal-test A2;
Send L3; Set OUTPUT;
Receive L2; Go to A3;
Unless INPUT A2; A2: Set EOF;
Set OUTPUT; A3: Send L2;
Send L5; Go to A1; Æ  Un sistem de
Go to A1; End; procese descrise în limbajul de
A2: Send L4; cc
 c modelare al proceselor
End; A1: Receive L5; program (PPML)
Go to A1;
End;

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:
!   pune un mesaj de tipul  în bufferul de mesaje
!  m trimite mesajul din bufferul de mesaje la procesul de legătură 
!    m cere un mesaj de la procesul de legătură . Aşteaptă (dacă este necesar) până când
unul este returnat. Mesajul este plasat în bufferul de mesaje
!    testează tipul mesajului din bufferul de mesaje şi sare la instrucţiunea s numai dacă
mesajul nu este de tipul 
! +  + modelează un test intern, dependent de date. Fie continuă cu următoarea
instrucţiune, fie sare la instrucţiunea etichetată cu 
! ! transferă controlul instrucţiunii 
!   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 . Riddle
a arătat cum se construieşte o 

R
÷ 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
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  şi
p într-un sistem PPML. Astfel apar două tipuri de locaţii într-o reţea Petri. Un tip de locaţii,
etichetate p ÷  se comportă ca un numărător pentru mesajele de tipul ÷ din procesul de legătură p.
Celălalt tip de locaţii reprezintă instrucţiunile  şi p ale programelor PPML. Fie
instrucţiunile etichetate unic 1,,. Etichetăm locaţia reprezentând o instrucţiune p cu un mesaj ÷
din bufferul de mesaje, şi anume prin p ÷  . Un jeton într-o locaţie asociată cu o instrucţiune p
înseamnă că instrucţiunea p 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) . În figura 8.10, locaţia
p ÷ reprezintă locaţia asociată cu orice instrucţiune care precede instrucţiune .

 p ,÷

(a) Send ; m

 , ÷  , ÷

 p ,÷

  ,÷   ,÷2   , ÷
1

(b) m1 m2 m3

 ,÷1   ,÷ 2  , ÷

Æ  Transformarea din instrucţiuni  şi p în tranziţii ale unei reţele Petri.
(a)c Modelarea unei instrucţiuni de trimitere la  cu un mesaj de tipul ÷ din bufferul de mesaje.
Procesul de legătură este .
(b)cModelarea instrucţiunii de primire la  de la un proces de legătură . Tipurile de mesaje
posibile din  sunt ÷1,÷2,÷.

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
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  şi p 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 şi p 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.

p1: (Receive L1, _) M (Send, L3, READ) Dispozitiv de intrare


p2: (Send L3, READ) M (Receive L2, INPUT) p7: (Receive L3, READ) M (Send L2, INPUT)
M (Receive L2, EOF) M (Send L2, EOF)
p3: (Receive L2, INPUT) M (Send L5, OUTPUT) p8: (Send L2, INPUT) M (Receive L3, READ)
p4: (Receive L2, EOF) M (Send L4, EOF) p9: (Send L2, EOF) M (Receive L3, READ)
p5: (Send L5, OUTPUT) M (Send L3, READ) Dispozitiv de ieşire
p6: (Send L4, EOF) M ( ) p10: (Receive L5, OUTPUT) M (Receive L5, OUTPUT)

Æ 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ă.

L1, START
s0

START

s1 p1 s0
L2, EOF
READ READ

p7 L2, INPUT p2
OUTPUT
INPUT INPUT
EOF
L3, READ L5, OUTPUT
p8 p9 p4 p3
p10
READ READ EOF OUTPUT OUTPUT

p6 p5

L4, EOF READ


Æ   O reţea Petri echivalentă cu sistemul PPML din figura 8.9

126
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 /" poate fi modelat ca un sistem de transmitere de mesaje ce are toste
mesajele de acelaşi tip, sistemul /" 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 /" î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)c 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)c 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.
Reţele Petri

Sisteme de mesaje

Æ   Adăugarea sistemelor de transmitere


Sisteme P/V mesaje la ierarhie

Grafuri de calcul Automate cu stări finite

Grafuri marcate

1  "#! 8
02
 *‘ ‘×
# ‘ ‘×
#‘ ×
# ‘ 4

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, sisteme le 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
jetoane pe orice arc de ieşire. Numărul de jetoane implicate pentru o pereche nod ± arc dată dă

 m (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  poate să se
declanşeze de fiecare dată când arcul  are un jeton. Când nodul a se declanşează, scoate jetonul din
arcul  şi pune jetoane atât pe arcul O cât şi pe arcul M (AND logic). Pe de altă parte, nodul  va
pune un jeton fie pe arcul 8 fie pe arcul ’ (OR logic). Nodul p este activ de fiecare dată când sunt
două jetoane pe arcul /, sau un jeton pe arcul 8.
S

a
A * B
x
b c
C * G
D x F

d e f g
x Æ  Un graf orientat complex (graf UCLA)
H I

h
*
K
J
2 i x

  
Un 
Rj este un 6-uplu j(,O,L,½,,Æ) unde:
! ë1,, } este o mulţime de vârfuri
! Oë1,,} este o mulţime de arce
! L ëL!,L"}Më$,"} sunt intrările (L!) şi ieşirile (L") logice corespunzătoare fiecărui vârf
! ½ë½!,½"}%OMN sunt gradele de intrare (½!) şi ieşire (½") pentru fiecare pereche arc ±
vârf
! § O este arcul de pornire, Ƨ O 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  printr-o locaţie  şi două tranziţii   şi   . Prima tranziţie  
reprezintă iniţierea operaţiei asociate cu nodul , 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
v

multiarc Æ  Reprezentarea de bază a


nod
elementelor unui graf UCLA ca reţele Petri

 '  ''
pv

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.
a1 al a1 al v v
* * +
+
* * +
v +v a1 al a1 al

Æ  Transformarea
diferitelor părţi ale unui graf
a1 al a1 al v v
UCLA în reţele Petri

vG vG vG vGG vG G vG G

v v a1 al a1 al

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.

Reţele Petri  Grafuri UCLA

Sisteme de mesaje
Æ  Adăugarea grafurilor UCLA la
ierarhie
Sisteme P/V

Grafuri de calcul Automate cu stări finite

Grafuri marcate

129
S 
G 
a


a

aGG 

bG A B 
cG

b C 
cGG cG 
bGG 
F G

C D E 
fG
dG fG gG g gGG 
cG

d e f

GG 
e gGG
GG GG

d f K 
H I 

hG

iG

h


hGG J 

iGG 
i

iGG 

X 

Æ  Reţeaua Petri echivalentă cu graful UCLA din figura 8.14

1 / !     , !  

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.

   
Un  ÷ 
 
m
 este o pereche (M,), unde M ë1,,÷}este o mulţime
de ÷ vectori, numiţi vectori de bază sau deplasare. Vectorul  este vectorul de pornire. Toţi vectorii
sunt compuşi din  valori întregi. Elementele lui  sunt nenegative.
Mulţimea de accesibilitate a unui sistem de adunare a vectorilor  este notată cu () şi
poate fi definită fie recursiv, prin următoarea definiţie:

130
   
² m÷m   ()a unui sistem de adunare a vectorilor (M,)este cea mai mică
mulţime cu proprietăţile:
! § ()
! dacă % § () şi %"u0, atunci % "§ ()

sau prin:

  
% § () dacă există o secvenţă p1 ,..., p de vectori de bază astfel încât:

%     p 
 1


   p  u 0   p  , 0    
 1

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  este marcajul iniţial, cu un vector de bază pentru fiecare tranziţie. Cele  componente
ale vectorilor sistemului de adunare a vectorilor corespund marcajelor celor  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].

  
Un  ÷  ëm  
  
m
constă dintr-un vector de pornire  u 0 şi din ÷ perechi de
vectori (p,p), astfel încât pup.
Vectorii p se numesc 
  . Mulţimea de accesibilitate este definită astfel încât  să
aparţină acesteia, şi dacă % este în mulţimea de accesibilitate astfel încât % ëp u0, atunci % § p 
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
Sistem de înlocuire a vectorilor  Sistem de adunare a
vectorilor  Reţele Petri  Grafuri UCLA

Sisteme de mesaje

Sisteme P/V
Æ  Adăugarea sistemelor de adunare
a vectorilor şi a sistemelor de înlocuire a
vectorilor la ierarhie
Grafuri de calcul Automate cu stări finite

Grafuri marcate

1 1 %  . 

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.

Modele de reţele Petri extinse

Sistem de înlocuire a vectorilor  Sistem de adunare a


vectorilor  Reţele Petri  Grafuri UCLA
Æ    Ierarhia completă a modelelor
calculului paralel
Sisteme de mesaje

Sisteme P/V

Grafuri de calcul Automate cu stări finite

Grafuri marcate

132
       

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 ë,,,}: M1ë,,}, M2ë},
M3ë,,,}, M4ë,,}, M5ë,,,}, M6ë,,,}, M7ë,,,,,,,,,,
, ,, ,}. Unele multiseturi sunt mulţimi, spre exemplu M1 şi M2. De asemenea, ca şi în cazul
mulţimilor, ordinea elementelor nu este importantă, astfel că M5 şi M6 desemnează acelaşi multiset
(multiseturile ordonate sunt secvenţe).
În teoria mulţimilor, conceptul de bază este
m
 . 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 % şi un multiset M, notăm numărul de apariţii
ale lui % în M prin (%,M) şi înţelegem Änumărul de % din M´.
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  (%, M)  1,
atunci dăm peste teoria mulţimilor.

‘ 

Funcţia (%,M) defineşte numărul de apariţii ale unui element % într-un multiset M. De aici
rezultă că (%,M)u0pentru toţi % din M. Distingem două cazuri: număr de apariţii zero şi număr de
apariţii diferit de zero. Un element % este ÷÷
al unui multiset M dacă(%,M)(0. Acest fapt se
notează prin %§M. Similar, dacă (%,M)0, atunci %·M.
Definim multisetul vid ca fiind multisetul fără nici un element. Pentru toţi %, (%, )0.


   

j
m   M a unui multiset M reprezintă numărul total de apariţii ale elementelor din
multiset,     # %,  .
%

9 ! ! &  

Un multiset O este  ÷ m  al unui multiset M (notăm O º M) dacă fiecare element al lui
O este de asemenea un element al lui M de cel puţin atâtea ori:
O º M dacă (%,O) (%,M) pentru toţi %
Două ÷ m 
 sunt m (OM) dacă (%,O)(%,M) pentru toţi %. Din aceste definiţii
putem arăta imediat că:
O  M dacă OºMşi MºO
º M oricare ar fi M multiset
OM implică OM
OºM implică O M|

133
Un multiset O este m 
 într-un multiset M (OšM) dacă OºMşi OëM. Observăm că
(%,O)*(%,M) nu rezultă din OšM, deşi avem că O*M.

: 

Sunt definite patru operaţii cu multiseturi. Pentru două multiseturi O şi M definim:


-
  M: (%,OM) max ë(%,O),(%,M)}
-  
mM: (%,OmM) min ë(%,O),(%,M)}
-  ÷M: (%,O"M)(%,O)"(%,M)
- R
 M: (%,O!M)(%,O)!(%,OmM)

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:
 OmMºOºOM
 O)MºOºO"M
Distincţia dintre reuniune şi sumă se vede clar din următoarele relaţii:
 OMºO"M
 O"MO"M
Din nefericire nu există astfel de relaţii şi între O m M şi O ) M. Stabilirea unei astfel de
relaţii este complicată de imposibilitatea de a scoate elemente dintr-un multiset care nu sunt acolo.

  !  ! 

Numim un  ÷  ca fiind o mulţime de elemente din care sunt construite multiseturi.
Spaţiul de multiseturi  este mulţimea tuturor multiseturilor ale căror elemente sunt în  astfel
încât nici un element nu apare mai mult de o dată. Astfel, pentru toate M § :
! % § M implică %§
! (%,M)  pentru toţi 
Mulţimea ˜ este mulţimea tuturor multiseturilor peste un domeniu ; nu există nici o
limită a numărului de apariţii ale unui element într-un multiset.

%  6)

Pentru un domeniu ë1,,} există o corespondenţă naturală între fiecare multiset M


peste  şi vectorul -dimensional R(R1,,R) definit de Rp(p,M).
Acest vector este cunoscut ca

 

9.

(.

Fie ë,,,} un domeniu. Atunci, pentru multiseturile Oë,}, M ë,,,}, j


ë,,,,} avem:
O2, j5
 OMë,,,}M
Omjë}
Ojë,,,,,}Mj
Mmjë,,}
O"Më,,,,,}
O)M 
j)Oë,,,}
j)Më,}

134

S-ar putea să vă placă și