Sunteți pe pagina 1din 60

Curs 7: Reţele Petri

2016-2017 Dezvoltarea aplicaţiilor interactive


1 / 60
Cuprins

1 Reţele Petri

2 Expresii concurente regulate

3 Reţele Petri descompuse

4 Teorema Kleene pentru reţele Petri


De la expresii la reţele Petri
De la reţele Petri la expresii

2 / 60
Reţele Petri

3 / 60
Reţele Petri

unul din cele mai vechi modele de concurenţă


model de tip maşină de calcul, asemănător cumva cu maşinile cu
regiştri
vom studia comportamentul reţelelor Petri utilizând expresii
concurente regulate
Rezultatul principal:
echivalenţa limbajelor asociate reţelelor Petri cu cele definite de
expresiile concurente regulate

4 / 60
Ideea de bază

Pentru a avea un model de concurenţă adevărată, trebuie să folosim


stări locale, nu globale.
Într-o reţea Petri, o stare locală este reprezentată abstract printr-un
multiset.
un multiset este o mulţime cu elemente cu repetiţie
fiecare element dintr-un multiset are asociat un număr care indică câte
copii ale acelui element sunt ı̂n mulţime
Formal: Fie P tipul elementelor. Un multiset M este o funcţie

M : P → N ∪ {∞}

care specifică câte elemente de fiecare tip sunt prezente ı̂n M.

O reţea Petri este un hiper-graf ı̂n care stările sunt multiset-uri şi o
tranziţie are arce multiple de intrare şi de ieşire spre elemente din P.

5 / 60
Ingredients
Reţele Petri - informal
Ingredients
A Petri net is made up of...
O reţea Petri este formată din:

A Petri
A Petri net
net is
is made
made upup of...
of...
Places = some type of resource
PlacesLocuri
Places
== un
=
anumit
some
some
tip of
type
type
de resource
resurse
of resource
consume and produce
Transitions
consume resources
and produce
produce
Transitions consume and
Transitions
Tranziţii resources
consumă resources
şi produc resurse
= one unity of a
Tokens
certain
= one
one unityresource
unity of aa
Tokens = of
Tokens Tokens
Jetoane =
certain resourceplaces
‘live’
o certain
unitate in the
resource
dintr-o resursă
Jetoanele trăiesc ı̂n Locuri
Tokens ‘live’
Tokens ‘live’ in
in the
the places
places 12

12
12

6 / 60
Reţele Petri - informal

Tranziţii
Transitions
Output places
Input places

13

7 / 60
Reţele Petri - informal

Firing a transition
Tranziţiile consumă jetoane din locurile de intrare şi produc jetoane ı̂n
Transitions consume tokens from the input places
locurile de ieşire
and produce tokens in the output places

14

8 / 60
Firing a transition
Reţele Petri - informal

Tranziţiile consumă jetoane din locurile de intrare şi produc jetoane ı̂n
Transitions
locurile de ieşire consume tokens from the input places
and produce tokens in the output places

Now, the transition


cannot be fired anymore
9 / 60 15
Reţele

Definiţie
O reţea este un triplet (P, T , F ), unde
1 P este o mulţime de locuri (reprezentate prin cercuri)
2 T este o mulţime de tranziţii (reprezentate prin pătrate)
3 F ⊆ P × T ∪ T × P este relaţia de incidenţă
astfel ı̂ncât următoarele proprietăţi sunt adevărate:
(A1) P ∩ T = ∅
(A2) F 6= ∅ şi pentru orice x ∈ P ∪ T , există y ∈ P ∪ T astfel ı̂ncât
xFy sau yFx

elementele din P şi T se numesc noduri


elementele din F se numesc arce

10 / 60
Reţele

Variaţie: Notăm

x = {y | yFx} x • = {y | xFy }.
Uneori vom adăuga condiţia
(A3) pentru orice p1 , p2 ∈ P, dacă • p1 = • p2 şi p1• = p2• , atunci p1 = p2
(permite minimizarea numărului de locuri, cu preţul unei potenţiale măriri
a ponderii arcelor - ı̂n general o evităm)

11 / 60
Reţele

Exemplu
Fie N = (S, T , F ) reţeaua ı̂n care

S = {s1 , . . . , s6 } T = {t1 , . . . , t4 }
F = {(s1 , t1 ), (t1 , s2 ), (s2 , t2 ), (t2 , s1 ),
1.2. SYNTAX (s3 , t2 ), (t2 , s4 ), (s4 , t3 ), (t3 , s3 ) 11
(s5 , t3 ), (t3 , s6 ), (s6 , t4 ), (t4 , s5 )}
s1 s3 s5

t1 t2 t3 t4

s2 s4 s6

t2 = {s2 , s3 }
Figure 1.1: Graphical representation of the net N
12 / 60
Reţele Petri

Definiţie
O reţea Petri este un 5-uplu N = (P, T , F , W , M0 ) astfel ı̂ncât:
1 (P, T , F ) este o reţea finită (deci P, T , F sunt mulţimi finite)
2 M0 : P → N specifică marcajul iniţial
3 W : F → N \ {0} specifică ponderea arcelor

Un loc este un depozit cu elemente de un anumit tip; folosim


termenul de marcare ı̂n loc de ”stare”, indicând câte jetoane de
fiecare tip sunt disponibile ı̂n starea curentă.
Ponderea unui arc exprimă câte jetoane din locul respectiv sunt
consumate ori produse prin efectuarea tranziţiei.
O reţea Petri normală este o reţea Petri care are toate arcele de
pondere 1.

13 / 60
Reţele Petri

Fie P = {p1 , . . . , pn }. Ordonăm elementele din P, de exemplu,


p1 ≺ . . . ≺ pn .
O marcare se identifică cu un vector M = (m1 , . . . , mn ), unde
mi = M(pi ), i ∈ [n].
(
k, daca xFy si W (x, y ) = k
F (x, y ) =
0, daca nu exista xFy

F (t) = (F (p1 , t), . . . , F (pn , t))
reprezintă jetoanele necesare efectuării lui t
F (t)• = (F (t, p1 ), . . . , F (t, pn ))
reprezintă jetoanele produse de efectuarea lui t
”>”, ”+” şi ”−” se obţin aplicând operaţiile respective pe
componente

14 / 60
Tranziţia unei reţele Petri

Efectuarea unei tranziţii:


Tranziţia t a unei reţele Petri N = (P, T , F , W , M0 ) se poate efectua
ı̂ntr-un marcaj M dacă
M ≥ • F (t)

Rezultatul efectuării tranziţiei este trecerea la marcajul

M 0 = M − • F (t) + F • (t)

15 / 60
Limbajul unei reţele Petri

Notatii:
M[tiM 0 - t se poate efectua ı̂n marcajul M şi
rezultatul este M 0

M[t1 . . . tk iM 0 - există M1 , . . . , Mk cu
M[t1 iM1 . . . Mk−1 [tk iM 0

M[iM 0 - exista w ∈ T ∗ astfel ı̂ncât M[w iM 0

R(N, M) = {M 0 | M[iM 0 } - reprezintă marcajele ce pot fi atinse


din marcajul M ı̂n reţeaua Petri N

R(N) - reprezintă marcajele atinse ı̂n


reţeaua Petri N din marcajul iniţial

16 / 60
Limbajul unei reţele Petri

Fie Ψ o mulţime de locuri finale ı̂ntr-o reţea Petri N.

Limbajul asociat reţelei este

L(N) = {w | M0 [w iM şi M(p) = 0 dacă p ∈


/ Ψ}

(după efectuarea lui w nu mai există jetoane ı̂n locurile nefinale)

17 / 60
Reţele Petri

Exemplu
..Retele Petri
tranziţii: a, b, c, d
Exemplu: q
✲ ❧
locuri: p, q, r
marcaj rest a ✓✛✏
iniţial:
– a, b, c, d sunt1 jeton ı̂n pp,şiq,0rı̂n
tranziţii; locuri ❄c
– iniţial avem: 1 jeton ı̂n p, rest 0
ponderea arcelor: ✻ ✻

&❧ ✒
✲. ✑ ✲ ❧
❄ ✲ ❄
– aa consumă
consumăun unjetonjetondin dinp pşi şi pro-
produce
.b
p r
duce un jeton
un jeton ı̂n p şiı̂nunul
p şi unul
ı̂n q; scriem ı̂n q; ✻
acest fapt prin a : p →
scriem asta astfel: a : p → p ⊗ q p ⊗ q
b :p⊗q →q⊗r
– similar avem: b : p ⊗ q → q ⊗ r, .✛d
c :r ⊗q →r
c :dr:⊗r q→→p r şi d : r → p.
Un comportament tipic ı̂n această reţea este:
• când am un jeton ı̂n p se repetă a, producând jetoane ı̂n q; apoi
are loc b (dacă e cel puţin un jeton ı̂n q) şi se repetă c, dar nu
de mai multe ori ca a; apoi d ne readuce ı̂n situaţia iniţială
18 / 60
Reţele Petri

Exemplu (cont.) ..Retele Petri


Un comportament tipic ı̂n această reţea: q
Exemplu:
✲ ❧
✓✛✏
când avem un jeton ı̂n p se repetă a,
– a, b, c, djetoane
producând ı̂n p şi qp, q, r locuri a
sunt tranziţii; ❄c
– iniţial avem: 1 jeton ı̂n p, rest 0 ✻ ✻

&❧ ✒
✲. ✑ ✲ ❧
apoi are loc b (dacă e cel puţin un ❄ ❄
– aı̂nconsumă un jeton din p şi pro- ✲
jeton q) p .b r
duce un jeton ı̂n p şi unul ı̂n q; ✻
şi se repetă c, dar nu de mai multe ori
scriem asta astfel: a : p → p ⊗ q
.✛d
decât a!
– similar avem: b : p ⊗ q → q ⊗ r,
d ne c : readuce
r ⊗ q → lar şisituaţia
d : r →iniţială
p.
Este un model abstract al unuiı̂nserviciu
Un comportament tipic aceastăproducător
reţea este: – consumator.
• când am un jeton ı̂n p se repetă a, producând jetoane ı̂n q; apoi
are loc b (dacă e cel puţin un jeton ı̂n q) şi se repetă c, dar nu
de mai multe ori ca a; apoi d ne readuce ı̂n situaţia iniţială
• este un model abstract al unui serviciu producător-consumator 19 / 60
Paralelism ı̂n spatiu şi ı̂n timp

Modelul nu face distincţie ı̂ntre paralelism ”ı̂n spaţiu” (uzual) şi cel
”ı̂n timp” (de tip ”pipeline”).
Paralelismul ı̂n spaţiu: o tranziţie poate avea arce din locuri diferite
forţând sincronizarea firelor de execuţie
Paralelismul ı̂n timp: o tranziţie poate folosi mai multe jetoane din
acelaşi loc, puse acolo la momente de timp diferite, producând o
serializare ı̂ntre acţiuni
Modelul nu face distincţie ı̂ntre jetoanele care ajung ı̂ntr-un loc,
pierzându-se cauzalitatea producerii lor.
pentru model, fie că ajung din locuri diferite, fie că sunt produse
dintr-un singur loc la momente de timp diferite, este acelaşi lucru
contează doar numărul jetoanelor, nu şi originea lor

20 / 60
Expresii concurente regulate

21 / 60
Expresii concurente regulate

Se obţin extinzând expresiile regulate uzuale cu operatori pentru paralelism.

Signatură:
α
+, ·, ∗, 0, 1, ||, , [ ], σ

0, 1 sunt constante
∗,α , σ sunt operatori unari
+, ·, ||, [ ] sunt operatori binari

Limbajul ataşat: limbajul unei expresii E depinde de alfabetul ataşat


sign(E ), anume:
|E | ⊆ sign(E )∗

22 / 60
Expresii concurente regulate

Alegere nedeterministă +:
Exprimă capacitatea unui agent de a alege ı̂ntre două comportamente
Este modelată prin reuniunea limbajelor
|E1 + E2 | = |E1 | ∪ |E2 |
sign(E1 + E2 ) = sign(E1 ) ∪ sign(E2 )

Compunere secvenţială ·:
Exprimă posibilitatea de a secvenţializa acţiunile unui agent
Este modelată prin concatenarea limbajelor
def
|E1 · E2 | = |E1 | · |E2 | = {x1 x2 | x1 ∈ |E1 |, x2 ∈ |E2 |}
sign(E1 · E2 ) = sign(E1 ) ∪ sign(E2 )

23 / 60
Expresii concurente regulate

Star (compunere secvenţială iterată) ∗:


Exprimă capacitatea unui agent de a repeta un comportament de un
număr de ori
Pe limbaje este star-ul Kleene
|E ∗ | = {} ∪ |E | ∪ |E |2 ∪ |E |3 . . .
unde Ak = A · . . . · A (de k ori)
sign(E ∗ ) = sign(E )

24 / 60
Expresii concurente regulate

Compunere paralelă ||:


Modelează execuţia paralelă a doi agenţi fără comunicare ı̂ntre ei
În termen de limbaje, este ı̂ntrepătrunderea limbajelor, definită
inductiv astfel:
pe cuvinte, || este definit prin

s|| = ||s = s as||bt = a(s||bt) ∪ b(as||t)

pentru a, b litere şi s, t cuvinte.


apoi se extinde natural la limbaje prin
[
A||B = s||t
s∈A,t∈B

|E1 || E2 | = |E1 | || |E2 |


sign(E1 || E2 ) = sign(E1 ) ∪ sign(E2 )

25 / 60
Expresii concurente regulate

Compunere paralelă iterată α :


Modelează posibilitatea unui agent de a se replica şi de a avea un
număr indefinit de copii ale sale executate ı̂n paralel
Pe limbaje, se defineşte similar cu star-ul Kleene, dar folosit pentru
ı̂ntrepătrundere

A(k) = A || . . . || A (de k ori)

|E α | = {} ∪ |E |(1) ∪ |E |(2) ∪ |E |(3) . . .


sign(E α ) = sign(E )

26 / 60
Expresii concurente regulate

Compunere paralelă cu sincronizare [ ]:


Modeleaza cazul ı̂n care doi agenţi se execută ı̂n paralel
sincronizându-se pe acţiunile din alfabetul comun
Pe limbaje se foloseşte operaţia de ı̂ntrepătrundere cu sincronizare.
|E1 [ ] E2 | = {w | w ∈ (sign(E1 ) ∪ sign(E2 ))∗ ,
w |sign(E1 )∈|E1 | , w |sign(E2 )∈|E2 | },
unde w |A este restricţia cuvântului w la alfabetul A, i.e., toate literele
din w care nu sunt ı̂n A se şterg.
sign(E1 [ ] E2 ) = sign(E1 ) ∪ sign(E2 )

27 / 60
Expresii concurente regulate

Redenumirea σ:
σ : Σ1 → Σ2 ∪ {} este funcţia de redenumire (cu posibilă ştergere)
|σ(E )| = σ(|E |)
sign(σ(E )) = sign(E )

28 / 60
Expresii concurente regulate

Identităţi valide ı̂n interpretarea cu limbaje


A || B = B || A
A || (B || C ) = (A || B) || C
A || {} = A
A || 0 = 0
(A + B) || C = A || C + B || C
P P P
( i∈I Ai ) || ( j∈J Bj ) = i∈I ,j∈J Ai || Bj
(A + B)α = Aα || B α
(A∗ )α = Aα

29 / 60
Expresii concurente regulate

Identităţi valide ı̂n interpretarea cu limbaje


(Aα )α = Aα
(A || B α )α = Aα || B α
A [] A = A
A [] B = B [] A
A [ ](B [ ] C ) = (A [ ] B) [ ] C
(A + B) [ ] C = A [ ] C + B [ ] C

30 / 60
Expresii concurente regulate

Putem acum defini câteva clase de expresii concurente regulate:


1 expresiile regulate peste alfabetul V , notate RegExp(V )
se contruiesc uzual cu 0, 1 şi litere a ∈ V , aplicând operaţiile de sumă,
compunere secvenţială şi star, i.e., +, ·, ∗

2 expresiile unitare peste alfabetul V , notate UnitExp(V )


se obţin plecând de la expresiile regulate RegExp(V ) şi aplicând
operaţiile de compunere paralelă şi compunere paralelă iterată, i.e., ||,α

3 expresiile concurente regulate peste alfabetul V , notate CRegExp(V )


se obţin plecând de la expresiile unitare UnitExp(V ) şi aplicând
operaţiile de compunere paralelă, compunere paralelă sincronizată şi
redenumire, i.e., ||, [], σ

31 / 60
Expresii concurente regulate

Clasele de mai sus sunt distincte


limbajul (ab)n este unitar, dar neregulat
limbajul {an b n c n | n ≥ 0} este concurent-regulat, dar neunitar

Există două nivele care nu se amestecă:


unul de bază pentru fire de execuţie, celălalt pentru paralelism
expresii ca (E1 || E2 ) + E2α + (E1 [ ] E3 ) nu sunt utilizate

Restricţiile de mai sus au o justitificare ı̂n contextul acestui curs:


clasa limbajelor astfel definite coincide cu cea a limbajelor Petri

32 / 60
Reţele Petri descompuse

33 / 60
Reţele Petri descompuse

O reţea Petri descompusă este o pereche (T , U) unde:


1 T este o mulţime finită specificând alfabetul pentru tranziţii
2 U este o mulţime finită de unităţi U = {U1 , U2 , . . . , Uk }, unde fiecare
unitate este un 5-tuplu Ui = (Pi , Σi , δi , Mi , Φi ) format din:
Pi – o mulţime finită de locuri
Σi – o mulţime finită pentru a eticheta tranziţiile
δi ⊆ (Pi × Σi ) × Pi – relaţia de tranziţie
Mi – un marcaj iniţial, unde Mi : Pi → N ∪ {∞}
Φi ⊆ Pi – o mulţime de locuri finale
(observaţi că tranziţiile au o intrare şi o ieşire)

O execuţie ı̂ntr-o retea Petri descompusă este definită similar ca la o reţea


Petri obişnuită, cu diferenţa că toate tranziţiile din unităţi diferite care au
aceeaşi etichetă se execută simultan.

34 / 60
Reţele Petri descompuse

Lema
Orice reţea Petri este echivalentă cu o reţea Petri normală (i.e., cu toate
arcele de pondere 1).

Dem.
Fie p un loc şi k un număr cu proprietatea că toate arcele care pleacă
din sau vin ı̂n p au pondere ≤ k.
Înlocuim pe p cu un grup de k locuri conectate circular cu -tranziţii.
Un arc cu un capăt ı̂n p şi pondere n (n ≤ k) se ı̂nlocuieşte cu un
grup de n arce conectate la diferite locuri din grup.
Aplicând transformarea de mai sus tuturor locurilor din reţea, obţinem
o reţea Petri normală (cu -tranziţii) echivalentă cu cea iniţială.


35 / 60
Reţele Petri descompuse

Teorema
Orice reţea Petri N poate fi descompusă, i.e., există o reţea Petri
descompusă N 0 cu L(N) = L(N 0 ).

Dem.
Cu lema de mai sus ne putem restrânge la reţele normale
N = (P, T , F , W , M0 , Φ).
Fiecare loc din N devine un loc ı̂ntr-o unitate via o funcţie de asignare
f : P → {1, 2, . . . , k} astfel ı̂ncât
pt. or. t ∈ T , or. p1 , p2 ∈ P cu p1 6= p2 ,
dacă {p1 , p2 } ⊆ • t sau {p1 , p2 } ⊆ t • ,
atunci f (p1 ) 6= f (p2 )
(două locuri care sunt intrări sau ieşiri ale unei aceleiaşi tranziţii
trebuie asignate unor unităţi diferite)

36 / 60
Reţele Petri descompuse

Dem. (cont.)
reţeaua Petri descompunsă este D(N, f ) = (T , {U1 , . . . , Uk })
formată din unităţi Ui = (Pi , Σi , δi , Mi , Φi ) definite astfel:
Pi = {p ∈ P | f (p) = i} ∪ {spi } (spi este un loc special pentru
unitatea Ui care conţine un număr infinit de jetoane)
Σi = {t ∈ T | ex. p ∈ Pi , p ∈ • t ∪ t • } (o tranziţie din N induce o
tranziţie ”secţiune” ı̂n fiecare unitate care conţine cel puţin un loc de
intrare sau de ieşire al ei)
δi = {(pj , t, pk ) | t ∈ Σi , pj ∈ • t şi pk ∈ t • }
∪ {(pj , t, spi ) | t ∈ Σi , pj ∈ • t şi t • ∩ Pi = ∅}
∪ {(spi , t, pk ) | t ∈ Σi , • t ∩ Pi = ∅ şi pk ∈ t • }
Mi (p) = M0 (p), pentru orice p ∈ Pi , şi Mi (spi ) = ∞
Φi = (Pi ∩ Φ) ∪ {spi }

37 / 60
Reţele Petri descompuse

Dem. (cont.)
Observăm că:
marcajele iniţiale din N şi D(N, f ) sunt aceleiaşi, cu excepţia locurilor
speciale spi
tranziţiile care pot fi executate ı̂n N şi D(N, f ), plecând de la
marcajele iniţiale, sunt aceleiaşi şi produc marcaje egale (abstracţie
făcând de locurile speciale spi )
marcajele finale sunt aceleiaşi (abstracţie făcând de locurile speciale
spi )
locurile speciale nu creează probleme la execuţie sau acceptare (au un
număr infinit de jetoane).
În consecinţă, L(N) = L(D(N, f )). 

38 / 60
Reţele Petri descompuse

Exemplu
Considerăm exemplul anterior: ..Retele Petri
tranziţii: a, b, c, d
Exemplu: q
✲ ❧
locuri: p, q, r
marcaj rest a ✓✛✏
iniţial:
– a, b, c, d sunt1 jeton ı̂n pp,şiq,0rı̂n
tranziţii; locuri ❄c
– iniţialarcelor:
ponderea avem: 1 jeton ı̂n p, rest 0 ✻ ✻

&❧ ✒
✲. ✑ ✲ ❧
❄ ✲ ❄
– aa consumă
consumăun unjetonjetondin dinp pşi şi pro-
produce
.b
p r
duce un jeton
un jeton ı̂n p şiı̂nunul
p şi unul
ı̂n q; scriem ı̂n q; ✻
prin a : p →
scriem asta astfel: a : p → p q⊗ q
acest fapt p ⊗
b :p⊗q →q⊗r
– similar avem: b : p ⊗ q → q ⊗ r, .✛d
c :r ⊗q →r
c :dr:⊗r q→→p r şi d : r → p.
Un comportament
stările finale: Φ = {r }tipic ı̂n această reţea este:
când
funcţia• de am un jeton
asignare: f (p)ı̂n=pf se
(r )repetă
= 1 şia,f producând
(q) = 2 jetoane ı̂n q; apoi
are loc b (dacă e cel puţin un jeton ı̂n q) şi se repetă c, dar nu
de mai multe ori ca a; apoi d ne readuce ı̂n situaţia iniţială
• este un model abstract al unui serviciu producător-consumator 39 / 60
Reţele Petri descompuse

Exemplu
a : p → p ⊗ q produce tranziţiile:
ap,p : p → p
a∗,q : ∗ → q
b : p ⊗ q → q ⊗ r produce tranziţiile:
bp,r : p → r
bq,q : q → q
c : r ⊗ q → r produce tranziţiile:
cr ,r : r → r
cq,∗ : q → ∗
d : r → p nu produce nimic nou; o rescriem dr ,p : r → p

40 / 60
Reţele Petri descompuse

Exemplu
Obţinem două unităţi:
U1
locuri: {p, r , sp1 }
tranziţii: ap,p : p → p, bp,r : p → r , cr ,r : r → r , dr ,p : r → p
iniţial: (p, r , sp1 ) = (1, 0, ∞)
finale: {r , sp1 }
U2
locuri: {q, sp2 }
tranzi̧tii: a∗,q : sp2 → q, bq,q : q → q, cq,∗ : q → sp2
iniţial: (q, sp2 ) = (0, ∞)
finale: {sp2 }

41 / 60
Teorema Kleene pentru reţele Petri

42 / 60
Teorema Kleene pentru reţele Petri

Clasa limbajelor reprezentate cu expresii concurente regulate coincide cu


clasa limbajelor recunoscute de reţelele Petri.

43 / 60
De la expresii la reţele Petri

44 / 60
De la expresii la reţele Petri

Lema 1
Fie A, B expresii regulate. Atunci:
1 Aα || B α = (A + B)α
2 (A || B α )α = Aα || B α

Dem.
(1) Dacă s ∈ Aα || B α , atunci s ∈ a1 || . . . || am || b1 || . . . || bn , pentru
nişte ai ∈ A, bj ∈ B. Deci s ∈ (A + B)α .
Invers, dacă s ∈ (A + B)α , atunci s ∈ c1 || . . . ||ck cu ci ∈ A + B. Folosind
comutativitatea lui ||, factorii compunerii paralele pot fi rearanjaţi după
apariţiile lui A şi apoi din B. Obţinem: s ∈ Aα || B α .

45 / 60
De la expresii la reţele Petri

Dem. (cont.)
(2) Dacă s ∈ (A || B α )α , atunci s ∈ s1 || . . . || sm cu m ≥ 0 şi pentru
fiecare i avem
si ∈ ai || b1i || . . . || bni i ,
cu ai ∈ A si bji ∈ B. Rearanjând factorii compunerii paralele după apariţiile
din A şi apoi din B, obţinem s ∈ Aα || B α .
Invers, dacă s ∈ Aα || B α , atunci s ∈ a1 || . . . || am || b1 || . . . ||bn , pentru
nişte ai ∈ A, bj ∈ B. De aici deducem că

s ∈ (a1 || ) || . . . || (am−1 || ) || (am || b1 || . . . || bn ) ∈ (A || B α )α .

46 / 60
De la expresii la reţele Petri

Lema 2
O expresie unitară este echivalentă cu una ı̂n ”formă normală”, anume de
tipul RegExp || RegExp α .

Dem.
Inducţie după numarul de apariţii ale lui || şi α . Pasul iniţial este simplu,
iar cel de inducţie se face astfel:
U1 ||U2 = (A1 || B1α ) || (A2 || B2α ) (ipoteza)
= A1 || A2 || B1α || B2α
= (A1 || A2 ) || (B1 + B2 )α (Lema 1)
α
= A||B

Uα = (A || B α )α
= (A + B)α (Lema 1)
unde A, A1 , A2 , B, B1 , B2 sunt expresii regulate. 
47 / 60
De la expresii la reţele Petri

Lema 3
Clasa limbajelor Petri include clasa limbajelor regulate şi este ı̂nchisă la
||, [], σ.

Dem.
Este clar că limbajele regulate sunt şi limbaje Petri. Presupunem, ı̂n plus,
că reţelele Petri de mai jos au un singur jeton iniţial (cu -tranziţii pot
simula cazul general). Închiderea la celelalte operaţii rezultă astfel:
||: Fie L1 , L2 limbaje cu reţele Petri asociate N1 , N2 . Limbajul
L = L1 || L2 este recunoscut de reţeaua Petri N formată din:
reuniunea disjunctă a lui N1 cu N2
un nou loc iniţial p (cele din N1 , N2 nu sunt iniţiale)
o -tranziţie din p ce pune jetoanele iniţiale ı̂n N1 şi N2

48 / 60
De la expresii la reţele Petri

Dem. (cont.)
[ ]: Fie Li , Ni ca mai sus. Repetăm construcţia de mai sus, dar:
tranziţiile cu etichete din sign(L1 ) ∩ sign(L2 ) care apar ı̂n ambele
reţele sunt sincronizate
pentru fiecare pereche de tranzi̧tii t1 din N1 şi t2 din N2 cu aceeaşi
etichetă a, construim o nouă tranziţie, notată t1 ⊕ t2 , etichetată cu a,
şi care colectează toate conexiunile lui t1 şi t2 ; vechile tranziţii t1 , t2 se
şterg.

σ: Evident, printr-o simplă redenumire a etichetelor tranziţiilor reţelei


Petri. 

49 / 60
De la expresii la reţele Petri

Lema 4
Clasa limbajelor Petri include clasa limbajelor unitare.

Dem.
Cu lemele de mai sus, este suficient să arătăm că există reţele Petri pentru
limbaje de tipul RegExp α :
Fie E α , cu E regulată şi  ∈ / L(E ) (nu contează dacă  ∈ L(E ) sau
nu). Fie A NFA-ul asociat lui E , având o unică stare iniţială s care nu
este finală şi ”izolată” (ı̂n care nu intră arce). Orice automat care nu
acceptă  este echivalent cu unul de acest tip.

50 / 60
De la expresii la reţele Petri

Dem. (cont.)
Interpretăm automatul A ca reţeaua Petri descompusă punând un
număr infinit de jetoane ı̂n s. Apoi eliminăm s (locul etichetat ∞) şi
obţinem astfel o reţea Petri uzuală N cu L(N) = L(E α ) \ {}
(tranziţiile de start din N sunt fără locuri iniţiale, putându-se efectua
oricând, de oricâte ori vrem).
În final, există o reţea Petri pentru L(N) ∪ {} = L(E α ). 

51 / 60
De la expresii la reţele Petri

Teoremă
Limbajele reprezentate cu expresii concurente regulate sunt recunoscute de
reţele Petri.

Dem.
Rezultă din lemele de mai sus. 

52 / 60
De la reţele Petri la expresii

53 / 60
De la reţele Petri la expresii

Trecerea se face via reţele Petri descompuse ı̂n doi paşi:

1 limbajele unităţilor pot fi reprezentate cu expresii unitare

2 limbajele reţelelor descompuse sunt reprezentate cu expresii


concurente regulate

54 / 60
De la reţele Petri la expresii

Lema 1
O unitate cu mai multe locuri cu marcaj ∞ este echivalentă cu una cu un
singur loc marcat ∞.

Dem.
Putem identifica locurile marcate cu ∞, conservând limbajul. 

55 / 60
De la reţele Petri la expresii

Lema 2
O unitate este echivalentă cu una având două zone:
tip I: cu un singur jeton iniţial
tip II: cu o infinitate de jetoane iniţiale, toate ı̂ntr-un singur loc

Dem.
Putem presupune că avem ı̂n U un unic loc marcat ∞, notat p∞ .
fie C componentă conexă a unităţii ce conţine p∞
dacă C are şi alte jetoane iniţiale, cum ele produc fire ce evoluează
independent, putem descompune C ı̂n două:
o parte C1 cu jetoane iniţiale din locurile diferite de p∞
cealaltă C2 cu toate jetoanele iniţiale ı̂n p∞
C1 şi partea rămasă din U (neinclusă ı̂n C ) pot fi combinate ı̂ntr-o
unică componentă cu un unic jeton iniţial (un număr finit de jetoane
iniţiale produc, prin ı̂ntrepătrundere, un limbaj regulat) 
56 / 60
De la reţele Petri la expresii

Lema 3
Limbajul recunoscut de o unitate de tip II poate fi reprezentat cu o
expresie de tipul RegExp α .

Dem.
Fie U o unitate cu marcajul iniţial M satisfăcând M(p∞ ) = ∞, şi 0 ı̂n rest.
Dacă A este NFA-ul cu starea iniţială p∞ , tranziţiile şi stările finale din U,
atunci L(U) = L(A)α . Într-adevăr:
L(U) ⊆ L(A)α :
fie s ∈ L(U)
ı̂n procesul de acceptare se folosesc un număr de jetoane n
ele evoluează independent, generând cuvinte s1 , . . . , sn din L(A) cu
s ∈ s1 || . . . || sn , deci s ∈ L(A)α

57 / 60
De la reţele Petri la expresii

Dem. (cont.)
L(A)α ⊆ L(U):
fie s ∈ L(A)α
deci s ∈ s1 || . . . || sn , pentru cuvinte s1 , . . . , sn din L(A)
atunci s se poate genera ı̂n U folosind n fire de execuţie generate de
jetoane din p∞ , fiecare generând un cuvânt si


58 / 60
De la reţele Petri la expresii

Teorema
Limbajul acceptat de o reţea Petri descompusă N poate fi reprezentat cu o
expresie concurentă regulată.

Dem.
Cu Lema 2, fiecare unitate din N se descompune ı̂n două zone (de tip
I şi II) – limbajul unităţii este obţinut prin ı̂ntrepătrunderea unui
limbaj regulat cu unul de tipul RegExp α , deci este capturat de o
expresie unitară
cu operaţia de compunere paralelă cu sincronizare, obţinem limbajul
lui N (ı̂n termeni de tranziţii) din limbajele unităţilor
ı̂n final, cu operaţia de redenumire ı̂nlocuim tranziţiile cu literele
asociate, găsind o expresie concurentă regulată pentru L(N).


59 / 60
Pe săptămâna viitoare!

60 / 60

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