Sunteți pe pagina 1din 18

CAPITOLUL I

Conceptul de Sistem cu Evenimente Discrete

BREVIAR
Un sistem dinamic cu evenimente discrete (SDED) este un sistem dinamic
caracterizat printr-un spaţiu discret al stărilor şi prin traiectorii de stare continue pe
porţiuni. Modificările de stare se numesc tranziţii şi survin ca urmare a apariţiei
evenimentelor, în mod asincron.
Evenimentele au durată nulă. În afară de cazul în care apar alte specificaţii, se
consideră că la un moment dat are loc un singur eveniment. Un eveniment poate fi
identificat ca :
 acţiune specifică (ex: lansare operaţie);
 modificare necontrolabilă în cadrul unui proces (ex: defectarea unei resurse
dintr-un motiv oarecare);
 rezultatul satisfacerii simultane a mai multor condiţii.
Evenimentele sunt de regulă etichetate. Mulţimea evenimentelor legate de
funcţionarea unui proces oarecare determină astfel elementele unui alfabet (mulţime
finită de simboluri)  astfel încât ele îşi păstrează semnificaţia de fenomen calitativ
dependent de specificul aplicaţiei.
Astfel, din punct de vedere formal, un sistem cu evenimente discrete se defineşte
astfel:
Definiţie: Un SED este un sistem care evoluează generând spontan evenimente şi
poate fi definit ca un quadruplu:
G  (Q, ,  , q0 )
unde:
Q = mulţimea stărilor sistemului;
 = alfabetul evenimentelor pe care le poate genera sistemul;
q0 = starea iniţială;
 = funcţia de tranziţie de stare, definită astfel;
 : Q  .
Observaţii
1. În funcţie de dimensiunea lui Q, SED se împart în sisteme cu număr finit de stări
şi respectiv sisteme cu număr infinit de stări; indiferent însă de dimensiune, Q
este numărabilă;
2. Funcţia de tranziţie  nu este definită întotdeauna pentru toate perechile din (Q
), ceea ce înseamnă că nu este obligatoriu ca din fiecare stare a sistemului să
poată fi generate toate evenimentele din ;
3. Alfabetul  are întotdeauna un număr finit de evenimente.
În concluzie, modelarea unui proces real ca SED include, indiferent de formalismul
utilizat, următoarele etape:
1. Definirea variabilelor de stare, respectiv a formatului elementelor q  Q; dacă
mulţimea Q este finită, atunci se poate defini în întregime prin enumerare;
2. Stabilirea stării iniţiale q0  Q;
3. Definirea tuturor evenimentelor din  - ca acţiuni care modifică valoarea a cel
puţin o variabilă de stare;
4. Definirea funcţiei de tranziţie , ceea ce revine de fapt la descrierea explicită a
modelului.
În funcţie de complexitatea procesului modelat, etapele 3 şi 4 pot fi completate
simultan.
În funcţie de modul în care tratează timpul, modelele SED pot fi împărţite în
următoarele categorii:
- modele autonome – utilizate pentru analiza calitativă a funcţionării sistemelor; în
cazul acestor modele nu este luată în considerare decât ordinea în care apar
evenimentele şi nu intervalul de timp dintre apariţia a două evenimente
succesive;
- modele temporizate – utilizate atât pentru analiza calitativă cât şi, mai ales
pentru analiza performanţelor sistemelor – intervalul de timp dintre apariţiile a
două evenimente succesive este specificat în mod determinist;
- modele stocastice sau probabilistice – în care succesiunea evenimentelor este
dată prin intermediul unor distribuţii de probabilitate.
Problemă rezolvată
1. Să se modeleze ca SED procesul constând dintr-un server şi o coadă de aşteptare.
Capacitatea serverului este de un client la un moment dat, iar capacitatea cozii este
presupusă a fi nelimitată. Atunci când un client intră în sistem, el intră în coada de
aşteptare. De îndată ce serverul este liber, el preia câte un client din coada de
aşteptare, în ordinea sosirii acestora. Intrarea clienţilor în sistem ca şi durata
serviciului sunt aleatoare. Se presupune că durata de schimbare a clientului servit în
cazul în care coada este nevidă este nesemnificativă. Iniţial, serverul este liber.
Rezolvare:
Procesul propus va fi modelat ca SED autonom, întrucât nu exista nici o indicaţie
temporală.
1. Definirea Q: în mod evident, sistemul va avea un număr infinit de stări,
deoarece capacitatea cozii de aşteptare nu este limitată. În acest caz, se va defini
structura stărilor sistemului prin specificarea variabilelor de stare, şi anume: s –
starea serverului şi l – lungimea cozii de aşteptare.
Întrucât serverul nu poate fi decât liber sau ocupat, se poate considera ca s  {0, 1},
astfel: s = 0 semnifica server liber, iar s = 1 – server ocupat.
Q = {(s, l)  s  {0, 1}, l  }
2. Definirea stării iniţiale: q0 = (0, 0) – server liber şi coada de aşteptare vidă.
3. Definirea alfabetului de evenimente :
Alfabetul de evenimente va conţine două elemente, şi anume:
e1 – intrarea unui client în sistem;
e2 – ieşirea unui client din sistem.
4. Definirea funcţiei de tranziţie:
( s, l  1) daca s  1
 ((s, l ), e1 )  
( s  1, l ) daca s  0
respectiv intrarea unui client în sistem incrementează lungimea cozii, dacă la momentul
intrării serverul era ocupat sau trece serverul în starea de “ocupat”, dacă era liber
( s, l  1) daca l  1
 ((s, l ), e2 )  
( s  1, l ) daca l  0
respectiv ieşirea unui client din sistem decrementează lungimea cozii, dacă aceasta era
nevidă sau eliberează serverul, în caz contrar.
Modelul autonom poate fi modificat în vederea analizei performanţelor sistemului în
cazul în care informaţia despre proces este completată cu informaţii temporale.
Aceste informaţii vor însoţi cele două tipuri de evenimente stabilite anterior, în
maniera următoare: se presupun cunoscute duratele de timp dintre două sosiri succesive şi
de asemenea timpul de servire aferent fiecărui client.
A1 = 0.4; A2 = 1.2; A3 = 0.5; A4 = 0.7; A5 = 0.2; A6 = 0.6;
A7 = 0.2; A8 = 1.4;…
S1 = 2.0; S2 = 0.7; S3 = 0.2; S4 = 1.1; S5 = 3.7; S6 = 0.6;…

În conformitate cu datele de mai sus, evoluţia numărului de clienţi din coada de aşteptare
este cea prezentată în figura următoare:
Q(t)

t
0 1 2 3 4 5 6 7 8 9

e2 = 1.6 e8 = 4.0 e11 = 5.8


Sosiri
e1 = 0.4 e3 = 2.1 e7 = 3.8 e10 = 5.6 e12 = 7.2

e6 = 3.3
Plecări
e4 = 2.4 e5 = 3.1 e9 = 4.9 e13 = 8.6 = T(6)

Ocuparea serverului este cea prezentată în figura de mai jos. După cum se poate observa,
serverul procesează clienţi o durată de timp de 7,7 unităţi de timp din totalul de 8,6 unităţi
de timp. Aceasta reprezintă o ocupare de 89,53%.
B(t)

t
0 1 2 3 4 5 6 7 8 9

e2 = 1.6 e8 = 4.0 e11 = 5.8


Sosiri
e1 = 0.4 e3 = 2.1 e7 = 3.8 e10 = 5.6 e12 = 7.2

e6 = 3.3
Plecări
e4 = 2.4 e5 = 3.1 e9 = 4.9 e13 = 8.6 = T(6)

CAPITOLUL II
Limbaje Formale şi Automate

BREVIAR
Definiţii
 Un alfabet este o mulţime finită de simboluri.
 Un cuvânt este o secvenţă finită de simboluri ale aceluiaşi alfabet.
 Un limbaj este o mulţime de cuvinte cu simboluri ale aceluiaşi alfabet.
Notaţii:
 Lungimea unui cuvânt, w reprezintă numărul de simboluri care compun
cuvântul.
 Cuvântul vid:  (corespunde evenimentului nul sau, mai precis, unui eveniment
neobservabil).
 Limbaj vid:  (reprezintă limbajul fără nici un cuvânt).
Evoluţia oricărui SED poate fi reprezentată complet printr-o pereche de limbaje (L, Lm)
cu următoarele proprietăţi:
 L şi Lm sunt definite pe alfabetul de intrare;
 L – reprezintă toate evoluţiile posibile ale SED şi se numeşte limbaj generat;
 Lm – reprezintă toate evoluţiile dorite ale SED şi se numeşte limbaj marcat;
 Lm  L.
Operaţii pe limbaje
Fie L, L1, L2, limbaje definite peste alfabetul . Cele mai utilizate operaţii pe
limbaje sunt:
 Reuniunea
L = L1  L2 ={ v| v  L1 sau (şi) v  L2 }
 Concatenarea
L = L1 L2 = {v | v = s t unde s L1 şi t L2}
 Închiderea iterativă (sau operatorul Kleene)
L = L*

L = *

i 0
Li , Lk+1 = Lk L, L0 = {ε}

Observaţie: Operaţia de închidere iterativă se poate extinde şi la un alfabet


(considerat ca un limbaj cu cuvinte de lungime 1) : * reprezintă mulţimea tuturor
cuvintelor care pot fi formate cu simbolurile lui .
 Închiderea prefixată
pr (L) = L = {s  * |  t L a.î. sw = t}
 Intersecţia
L = L1  L2 = {v | v  L1 şi v  L2}
 Proiecţia lui L peste o submulţime de evenimente ^  
L^= {s^ | s  L} cu
 , daca   ^
()  ,   ^  
  , altfel
( s  ) , daca   ^
() s  ,  , s    ^  
 s  , altfel
Proprietate importantă: Limbajul generat de către un SED este întotdeauna egal cu
închiderea sa prefixata (L = pr(L)).
Definiţie
Fie  un alfabet; atunci o expresie regulată (ER) se defineşte astfel:
  este o ER care modelează limbajul ce conţine doar evenimentul nul;
  este o ER care modelează limbajul vid;
 () a   , a este o ER care modelează limbajul reprezentat de {a}
 dacă a, b sunt ER, atunci (ab), (a + b), a*, b* sunt ER
Proprietate: Dacă  este ER, atunci : * =  + *.

Definiţie: Un automat finit determinist AFD se defineşte ca un quintuplu :


G = (Q, , q0 , , Qm)
unde:
Q = mulţimea (finită) a stărilor;
 = alfabetul de evenimente,
q0 = starea iniţială,
 = funcţia de tranziţie ;  : Q  Q,
() q  Q, a şi w * sunt satisfăcute următoarele relaţii:
a)  (q, ) = q
b) (q, wa) =  ( (q, w), a) = q’ Q
Qm = mulţimea stărilor marcate.
Notaţii:
stare;

starea iniţială (unica !);

stare marcată;

a
tranziţia sub evenimentul a.

Observaţii :
1) Dacă Qm   , atunci automatul se numeşte acceptor.
2) Două automate G1 si G2 sunt echivalente dacă limbajele lor generate şi respectiv
cele marcate, sunt egale:
G1 echivalent cu G2  L(G1) = L(G2) şi Lm(G1) = Lm(G2)
Definiţie : Un automat finit nedeterminist AFN se defineşte ca un quintuplu
G = (Q, , , q0, Qm)
unde singura diferenţă faţă de AFD este dată de modul de definire al funcţiei de tranziţie,
respectiv :
 : Q  2Q cu 2Q - mulţimea tuturor submulţimilor lui Q.
şi
(q, ) = q
(q, a) = {p| pQ}, ceea ce înseamnă că, din starea q, prin evenimentul a, se poate
ajunge într-o mulţime de stări (evoluţia nu este unică).
Un cuvânt de intrare w * este acceptat de un AFN dacă măcar una dintre evoluţiile
(q0, w)  Qm.
Pentru orice AFN G se poate construi un AFD echivalent G’, numit observatorul lui G.
G’ = (Q’, , ’, q0, QF’),
Definiţie : Un AFN cu tranziţii  (AFN- ) se defineşte ca un quintuplu G:
G = (Q,  {  }, q0 , , Qm).
Diferenţa faţă de clasele de automate prezentate anterior este dată de modul de definire al
lui .
Pentru a defini funcţia de tranziţie a AFN- se introduce noţiunea de închidere  a unei
stări q a automatului G (*G (q)) , astfel:
*G (q) = (q, *) ={q’ |q’ Q} - mulţimea tuturor stărilor în care se ajunge
pornind din q sub o secvenţă de .
Atunci funcţia de tranziţie a unui AFN- se defineşte astfel:
 : Q ( {  })  2Q ;

(q, ) =  G* (q)
Pentru un cuvânt de intrare s  ( {  })* si  ,
 
 (q, s )   G* [ ( (q, s),  )]     G   *
q"
q '  q , s   q ''  q ',  
Ca şi în cazul AFN, pentru orice AFN- se poate construi un observator determinist.

Algoritmul de construcţie a unui observator determinist Gobs pentru un automat


nedeterminist general Gnd
Considerând că automatul determinist este definit ca:
Gobs = (Qobs, , obs, q0,obs, Qm,obs)
iar automatul nedeterminist ca:
Gnd = (Qnd, nd, nd, q0,nd, Qm,nd),
în care
 , daca avem un AFN
 nd  
  {ε}, daca avem un AFN - ε
Şi folosind (pentru a putea rezolva cu algoritmul construcţia observatorului atât pentru
AFN cât şi pentru AFN-) următoarea funcţie:
UR: 2Qnd  nd 2Qnd
Cu definiţia:
 x, daca G nd este AFN
UR(x)   *
ε G ( x), daca G nd este AFN - ε
algoritmul de construcţie a observatorului pentru un automat nedeterminist este
următorul:
Pas 1 q0,obs = UR(q0,nd) şi se introduce q0,obs în lista stărilor neexplorate (LSN).
Pas 2 Atâta timp cât există stări în LSN:
Pas 2.1 Extragere a unei stări q din LSN.
Pas 2.2 Includere a stării q în mulţimea Qobs. Dacă qndqobs a.î qndQm,nd atunci se
adaugă qobs în Qm,obs.
Pas 2.3 Pentru fiecare eveniment end
Pas 2.3.1 Evaluare a stării q’obs în care evoluează qobs la apariţia evenimentului e:
obs(qobs, e) = q’obs=UR(nd (qobs, e))=
= UR(  nd(qnd, e))
qnd qobs

Pas 2.3.2 Dacă q’obsQobs


Introducere a lui q’obs în LSN.
Pas 2.4 Întoarcere la Pas 2.

Orice expresie regulată (ER) poate fi reprezentată printr-un AFN-, pe baza definiţiei ER
şi utilizând următoarele operaţii:
Fie r1 şi r2 ER care pot fi exprimate prin AFN- , respectiv
M1 = (Q1, 1, q1, 1, {f1})
M2 = (Q2, 2 , q2, 2, {f2})
Atunci:
1. AFN-  corespunzător reuniunii r = r1 + r2 este
q1 f1 
 M1
f
q0 1
f0
q f
0   0
q2 M2 f2
q f
2 2

Automatul M corespunzător lui r este


M = (Q1 Q2 {q0 , f0 }, 1 2 , , q0 , {f0} )
(q0 , ) = {q1 , q2 }
(q, a) = 1 (q, a) dacă q Q1 \{ f1 }şi a 1 {  }
(q, a) = 2 (q, a) dacă q Q2 \{f2 } şi a 2 {  }
(f1, ) =  (f2, ) = {f0}

2. AFN-  corespunzător concatenării r = r1 r2 este


q1 M1 f1 q2 M2 f2
f q ff
1 2 20
M= (Q1 Q2 , 1 2 ,  , q1 , {f2})
(q, a) = 1 (q , a) dacă q Q1 \ {f1} si a  1  {  }
(q, a) = 2 (q , a) dacă qQ2 şi a  2 {  }
({f1}, ) = {q2}

3. AFN-  corespunzător operatorului Kleene r = r1* este


M=(Q1 {q0 , f0} , 1  {} ,  , q0 , {f0})
(q0 , ) = {q1 , f0}
(q , a) = 1 (q, a) pentru q  Q1 \ {f1} şi a  1
(f1 , ) = {q1 , f0}

 
q0 q1 M1 f1 f0
q f f
0 1 0

Teoremă: Dacă L este un limbaj acceptat de un automat finit determinist, atunci L poate
fi scris ca expresie regulată.

Expresia Regulată a limbajului acceptat de către automat este o reuniune


R
toate
n
1k
a
q k Q m

tuturor traiectoriilor care conduc de la starea iniţială către o stare marcată.

n
Observaţie: Rij reprezintă toate traiectoriile de la qi la qj fără să treacă printr-o stare cu
un număr mai mare decât n.
Definiţii:
R ijk  R ikk 1 (R kkk1 )* R kkj1 R ijk 1

{a | δ(q i , a)  q j } daca i  j


R ij0  
 {a  ε | δ(q i , a)  q j  {ε }daca i  j
Definiţie: Fie două Automate Finite (Deterministe)
G1 =( Q1 , 1 , α1 , 1 , q01 ,Qm1)
G2 =( Q2 , 2 , α2 , 2 , q02 ,Qm2)
Se numeşte compunere sincronă a automatelor G1 şi G2 notată G1 || G2 un automat G
care are stările G =(Q ,  ,  , q0, Qm) astfel:
Q = Q1  Q2
 = 1  2
q0 = (q01 , q02)
Qm = Qm1  Qm2
Definirea funcţiei de transfer :
() q = (q1 , q2)  Q şi 
(  1(q1, ) , 2(q2, ) ) dacă  1  2 şi   1 (q1, ) şi   2(q2, )

(  1(q1, ) , q2 ) dacă   1 \ 2 şi   1 (q1, )


 (q,) =
( q1, 2(q2, ) ) dacă   2 \ 1 şi   2 (q2, )

Nu se defineşte pentru orice caz care nu corespunde celor definite mai sus

În acest caz, limbajul generat de automatul rezultat şi limbajul marcat al automatului


rezultat au următoarele definiţii:
1) Lm (G1 || G2) = { s* / s 1  Lm (G1) şi s 2  Lm (G2) }
2) L (G1 || G2) = { s* / s 1  L (G1) şi s 2  L (G2) }
Observaţie: Dacă 1 = 2 atunci Lm(G1 || G2) = Lm (G1)  Lm(G2) şi L(G1 || G2) =
L(G1)L (G2).
Automatele studiate până acum pot fi considerate ca maşini de stare cu ieşiri binare: faţă
de un cuvânt de intrare dat w se poate specifica numai dacă acesta este sau nu acceptat
(respectiv daca (q0, w)Qm). În anumite situaţii este de dorit să se diferenţieze stările
marcate, respectiv nemarcate, între ele. Pentru aceasta se folosesc aşa-numitele maşini de
stare cu ieşiri : Moore şi Mealy.

Definiţie: O maşină Moore se poate defini ca un sextuplu


M = (Q ,  ,  ,  ,  , q0)
unde:
Q = mulţimea (finită) a stărilor
 = alfabetul de evenimente (finit şi el)
q0 = starea iniţială
 = funcţia de tranziţie  : Q  Q
 = alfabetul ieşirilor
 = funcţia de alocare a ieşirilor  : Q  
Conform definiţiei, orice maşină Moore dă un răspuns (q0) asociat unei intrări nule ().
Exemplu:
Să se proiecteze maşina Moore care calculează restul modulo 3 pentru un şir binar de
intrare (care are semnificaţia unui număr întreg în format binar)
Evident, exista doar trei ieşiri posibile:  = {0, 1, 2}, ceea ce înseamnă că numărul
maxim de stări este tot trei.
Pentru intrarea nulă (echivalentă cu numărul 0), ieşirea generată trebuie să fie 0. Rezultă,
prin definiţie, că (q0) = 0.
În continuare, se foloseşte următorul raţionament: dacă un şir de intrare binar w
corespunde numărului natural n, atunci w0 îi corespunde lui 2n şi w1 lui (2n+1).
Rezultă următoarea structura pentru maşina Moore dorită:

1 0
1 2
0
1
q0 q1 q2

0
1 0

Definiţie: O maşină Mealy poate fi definită ca un sextuplu


Me = (Q, , , , , q0)
unde :
Q = mulţimea (finită) a stărilor;
 = alfabetul de evenimente (finit şi el);
 = alfabetul ieşirilor;
q0 = starea iniţială;
 = funcţia de tranziţie cu definiţia :Q   Q;
 = funcţia de alocare a ieşirilor :Q    .
Conform definiţiei, pentru o intrare nulă () o maşină Mealy generează o ieşire nulă ().
Din punctul de vedere al puterii de modelare, maşinile Moore şi Mealy sunt echivalente;
din punctul de vedere al lungimii cuvântului de ieşire, maşina Mealy va da un răspuns de
lungime cu 1 mai mică decât maşina Moore pentru aceeaşi lungime a cuvântului de
intrare.
Minimizarea automatelor :
Fie x, y L. Atunci RL este o relaţie de echivalenţă asociata limbajului L (sau x RL y)
dacă şi numai dacă pentru () z  *,
1. fie xz L şi yz  L
2. fie xz L şi yz L.
Relaţia RL împarte limbajul L în clase de echivalenţă. Numărul de clase de echivalenţă se
numeşte index.
Se poate demonstra că indexul unui limbaj regulat este finit.
Fie M= (Q, , , q0, Qm) un AFD. Se defineşte relaţia de echivalenţă RM asociata
automatului M astfel:
pentru x , y  *, x RM y dacă şi numai dacă (q0, x) = (q0, y).
În plus, dacă x RM y, pentru () z * avem xz RM yz. (Ceea ce revine la (q0 , xz) =
((q0 , x), z) = ((q0 , y), z) = (q0 ,yz))
O relaţie de echivalenţă de acest tip se numeşte invariantă la dreapta (faţă de operaţia de
concatenare).
Teoremă (criteriul Myhill-Nerode): Următoarele afirmaţii sunt echivalente:
1. Limbajul L  * este acceptat de un automat finit;
2. L este reuniunea unor clase de echivalenţă determinate de o relaţie de
echivalenţă invariantă la dreapta cu index finit;
3. Fie relaţia de echivalenţă definită pe limbajul L astfel:
() x, y  L , x RL y dacă şi numai dacă () z  * , xz  L numai în cazul în care şi
yz  L .
Ca o consecinţă a teoremei de mai sus, o stare p este echivalentă cu o stare q a
automatului M dacă şi numai dacă pentru orice şir de intrare x, (p, x) este stare marcată
numai atunci când (q, x) este o stare marcată.
Algoritmul de minimizare a unui automat
Start
Pas 1: pentru fiecare p Qm şi q Q \ Qm bifează în tabel locaţia corespunzătoare
(stările marcate nu sunt echivalente din punct de vedere al obiectivului cu cele
nemarcate);
Pas 2: pentru fiecare pereche de stări distincte (p, q)  Qm  Qm sau
(p, q) (Q/Qm)(Q/Qm)
Pas 2.1 dacă () a   , ((p, a), (q, a)) este bifată în tabel:
atunci
1) bifează (p, q);
2) bifează succesiv toate perechile din lista de echivalenţe a perechii (p,q).
altfel
pentru toţi a
introducere a perechii (p, q) în lista de echivalenţe a perechii
((p,a), (q,a)) în afara cazului în care (p,a) = (q, a).
Stop
Algoritmul de minimizare a automatelor a fost elaborat pe baza criteriului Myhill –
Nerode. Acest algoritm urmăreşte găsirea perechilor de stări care sunt echivalente (au
aceeaşi evoluţie). Acest lucru se realizează prin eliminarea stărilor care nu sunt
echivalente. Algoritmul verifică toate perechile distincte de stări.
Fie automatul G = (Q, , , q0, Qm). Se construieşte un tabel care să conţină toate
perechile de stări distincte. Din matricea care are pe linii şi pe coloane toate stările se
păstrează doar elementele de sub diagonala principală a matricei.
În acest fel, toate perechile (p, q) rămase nemarcate reprezintă două câte două stări
echivalente.
Probleme rezolvate
2. Să se proiecteze un AFD peste alfabetul  = {a, b}care acceptă cuvintele care nu
conţin 3a consecutiv.
Rezolvare.
Automatul obţinut este cel din figura 2.1.

b
q2 q3 a,b
q0 q1
a a a
b
b

Figura 2.1
3. Să se proiecteze AFD peste alfabetul  = {a, b}care acceptă şirurile “a”, “bb” şi
“aba”.
Rezolvare.
AFD cerut este ilustrat în figura 2.2.
a

b a,b
q02 q10 q20 q30
b a a,b
a

q5 q40
a
b b

Figura 2.2

Probleme propuse
4. Să se proiecteze un AFD peste alfabetul  = {a, b}care acceptă cuvintele ce conţin
minim 3a şi nu se termina cu b.

5. Să se proiecteze automatul determinist peste alfabetul  = {a, b} care acceptă


cuvintele în care perechea “aa” este urmată de subşirul “bab”.

6. Care este AFD care peste alfabetul  = {a, b} acceptă şirurile cu număr par de “a”
şi nu conţin subşirul “bb”?
7. Să se proiecteze AFD care acceptă peste alfabetul  = {a, b, c} cuvinte cu număr
par de “a”, par de “b” şi impar de “c”.

8. Să se proiecteze AFD care acceptă peste alfabetul  = {a, b, c} cuvinte care conţin
minim 2 “c” (nu neapărat consecutivi) şi nu conţin secvenţa “aca”.

9. Să se construiască peste  = {a, b} un AFD care acceptă şirurile ce conţin cel puţin
2 ”a” şi nu conţin subşirul “bb”.

10. Să se proiecteze un AFD care acceptă toate şirurile peste alfabetul ={a, b} care
conţin cel puţin 3 ”a” şi cel mult 2 ”b”.

11. Să se proiecteze AFD care peste alfabetul  = {a, b}acceptă cuvintele ce conţin
subşirul “aba” şi nu conţin subşirul “bb”,.

12. Să se construiască AFD peste alfabetul = {1, 2, 3} care acceptă cuvintele în care
suma ultimelor două simboluri este 4.

13. Să se construiască un AFD peste alfabetul  = {a, b} care acceptă cuvinte ce conţin
număr par de “a” şi nu conţin subşirul “abb” .

14. Să se proiecteze AFD peste alfabetul  = {1, 2, 3}, care acceptă toate cuvintele care
se termină cu subşirul “123”.

15. Care este automatul care peste alfabetul  = {a, b, c} recunoaşte cuvintele ce conţin
număr par de “a” şi număr impar de “c”?

16. Care este automatul care peste alfabetul  = {a, b} recunoaşte cuvintele ce conţin
număr impar de “b” şi care nu conţin subşirul “bba”?

17. Fie un lacăt electronic prevăzut cu două butoane etichetate cu “a” şi respectiv “b”.
Lacătul se deschide dacă se apasă pe butoane în combinaţia “aba”. Din poziţia
“deschis” el poate fi închis numai prin apăsarea butonului “b”. Să se modeleze
funcţionarea lacătului printr-un automat finit determinist.

18. Să se construiască AFD care acceptă setul tuturor şirurilor din alfabetul  = {0, 1}
cu număr egal de 0 şi 1 astfel încât fiecare prefix are cel mult încă un 0 în plus fata
de numărul de 1 şi încă cel mult un 1 în plus faţă de numărul de zerouri.

19. Să se construiască AFD aferent unui sistem de parolare peste alfabetul  = {a, b, c,
d} care funcţionează după următoarele reguli:
 parola are trei caractere dintre care două trebuie sa fie identice dar
neconsecutive;
 caracterul d nu trebuie să facă parte din parolă – dacă da, atunci se ajunge într-o
stare de blocaj;
 parola corecta conduce într-o stare marcata în automat.
20. Ce şiruri accepta automatele:
a) b b a,b
a a

b) b
a b
b a b

a a
?

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