Sunteți pe pagina 1din 49

Limbaje formale si automate , Laborator 1

1. S se rezolve problema verificrii parantezelor. S se citeasc o expresie aritmetic de la tastatur cont innd numere(operanzi), operatori (+,-, , *, /, ) si paranteze ( (, ),[,],{,} ). Cu ajutorul unei stive s se verifice , corectitudinea expresiei. Exemplu: 12 {[(4 + 5)/(4 1)] 2 4} 10
CaracterContinut stivOperatia asupra stivei , , 1 2 * { [ ( 4 + 5 ) / ( 4 1 ) ] 2 4 } 1 0 { {[ {[( {[( {[( {[( {[ {[ {[( {[( {[( {[( {[ { { { { pop,dac top={ pop,dac top=( pop,dac top=[ push pop,dac top=( push push push

Dac s-a parcurs expresia s i stiva rmne goal nseamn c expresia , este corect, altfel expresia este incorect. 1

2. S se transforme o expresie din forma infix cu paranteze n forma polonez invers (form postfix) folosind o stiv s i o coad, apoi s se , evalueze expresia obtinut, folosind o alt stiv. , a. se citeste expresia de la tastatur , b. se verific corectitudinea parantezelor (vezi Problema 1.) c. se creeaz forma polonez invers d. se evalueaz expresia Observatie: , - form infix ($10 + 25) - form postfix $10 25 + (unde $ reprezint semnul minus) Notatia postfix nu necesit paranteze s i poate fi evaluat usor cu o stiv. , , , Algoritmul de transformare din infix n forma polonez invers (postfix) Expresia este parcurs caracter cu caracter. Dac caracterul actual este parantez deschis ((,[,{) sau operator (+, , , /, ) atunci el se pune n stiv. Dac este operand se pune ntr-o coad de s iruri de caractere (coad post, fix). Dac caracterul actual este o parantez nchis, atunci se scot din stiv operatiile pn la cea mai apropiat parantez deschis (pn la perechea , sa). Atentie n cazul operatorilor avem o except ie, un operator mai put in , , , prioritar nu se poate pune peste un operator mai prioritar. (operatorii aditivi nu pot veni exact dup un operator multiplicativ sau putere, respectiv operatorii multiplicativi un pot fi puse n stiv peste operatorul putere). n acest caz se scoate din stiv operatorul mai prioritar s i se pune n coada post, fix si se pune n stiv n locul lui operatorul mai put in prioritar. Dac aces ti , , , operanzi nu sunt unul peste cellalt n stiv, ci sunt desprt, ite de paranteze, atunci aceast regul nu se aplic. Evaluarea expresiei din coada postfix Se spun pe rnd operanzii (numerele) n stiva de evaluare, dac vine un operator el nu se pune n stiva de evaluare, ci se scot dou (n cazul operatorului binar) operanzi din stiv se execut operat ia ntre ele (operand2 <operat ie> , , operand1)si rezultatul lor se pune napoi n stiv. n final un numr va , rmne n stiv, care va fi de fapt valoarea expresiei. 2

Limbaje formale si automate , Laborator 2

Notiuni introductive ,
1. Alfabet (vocabular): O mult ime finit si nevid de elemente. Notat ie: , , , V 2. Simbol (liter): Un element al alfabetului V. Notatie: litere mici , 3. Cuvnt peste alfabetul V: Sir finit constnd din 0 sau mai multe simbo, luri ale lui V, unde un simbol poate s apar de mai multe ori. Notat ie: , w 4. Cuvnt vid: sau 5. Multimea tuturor cuvintelor din alfabetul V: V + = V \{} , 6. Concatenare: w1 w2 si Putere: wi = wi1 w si w0 = , , 7. |w|: lungimea cuvntului w 8. Na (w): Numrul de aparitii al simbolui a n cuvntul w. , 9. Limbaj peste alfabetul V:L V o submultime de siruri. , , Limbajul vid nu contine niciun cuvnt, iar L = {} contine un , , element, deci nu este vid 10. Exsit dou reprezentri ale limbajelor: - : n cazul limbajului finit cuvintele pot fi enumerate - : n cazul limbajului infinit cuvintele sunt descrise printr-un mecanism generativ 1

11. Sistem de rescriere: SR = (V, F ), unde w V si (, ) F . Elemen, tele lui F sunt reguli de rescriere sau product ii. Notatie , , 12. : Dac exist o secventa prin care obtinem din , folosind , , regulile de resciere, pe 13. Gramatic: Un quadruplu format din G = (VT , VN , S, P ) - VT : multimea terminalelor, o mult ime finit. Se noteaz cu litere , , mici - VN : multimea netermimalelor, o mult ime finit. Se noteaz cu litere , , mari VT VN = - : P productii sau reguli de derivare , Cuvintele (w, u, v, . . . ) contin totdeauna numai terminali w T , , , . . . sunt siruri care contin si terminali si neterminali. , , , , (N T ) - : S simbol de start, S VN

Probleme propuse
1. S se enumere cuvintele peste alfabetul V = {a, b, c} astfel nct - niciun simbol s nu se repete - lungimea cuvintelor s fie cel mult 3 2. S se detemine urmtoarele cuvinte , , 2 , 2 , 2 2 , 2 2 , dac = ab si = bc , 3. S se construiasc gramatica pentru generarea limbajului L = {ai bi , unde i > 0} 4. Se d urmtoare gramatic G = ({a, b, c}, {S, B}, S, P ) S aSBc| cB Bc P: aB ab bB bb S se derive cuvntul a3 b3 c3 . 2

5. Ce limbaj genereaz urmtoarea gramatic G = ({a, b, c, d}, {S, A}, S, P ) S aSd|aAd P: A bAc|bc 6. S se schimbe product iile de la punctul anterior astfel nct limbajul , generat s fie: L = {ai bi cj dj , unde i > 0, j > 0} 7. S se construiasc o gramatic pentru generarea s irurilor formate din , 0 si 1, cu lungimea sirului multiplu de 3. , , 8. S se construiasc gramatica pentru generarea limbajului L = {w {0, 1} , w nu contine sirul 101} , , 9. S se gseasc gramatica pentru expresii aritmetice. Simbolurile terminale sunt: a, +, , (, ). Gramatica s genereze numai expresii aritmetice valide ca de exemplu (a + a) a. 10. S se scrie un program care verific egalitatea simbolurilor a si b n , cuvintele peste alfabetul V = {a, b} folosind o stiv. Cuvntul se introduce de la tastatur. S se extind programul astfel nct s verifice egalitatea simbolurilor a, b si c n cuvintele peste alfabetul V = {a, b, c}. ,

Limbaje formale si automate , Laborator 3

Ierarhia lui Chomsky


a. gramatici de tip 0 - fr restrict ii , unde , (VT VN ) , b. gramatici de tip 1 - gramatici dependente de context (DC) A , unde , , (VT VN ) si A VN , avem o exceptie S , c. gramatici de tip 2 - gramatici independente de context (IDC) A , unde A VN si (VT VN ) , d. gramatici de tip 3 - regulate (R) A aB sau A a, unde A, B VN , B VN si a VT+ , Observatie: (R) (IDC) (DC) (0). ,

Probleme propuse
1. Se d gramatica G = {VT , VN , S, P }, unde VT = {a, b}, VN = {S, A, B, C} S aA|bB|b A aS|bC Ce limbaj genereaz gramatic? si P: , B aC|bS C aB|bA|a 2. Se d gramatica G = {VT , VN , S, P }, unde VT = {a, b}, VN = {S, S1 , S2 } S S1 S2 | si P: S1 aS1 b| Ce limbaj genereaz gramatic? , S2 bS2 c| 1

4. S se afle gramatica peste alfabetul V = {a, b} care genereaz limbajul cu urmtoarele propriett i: , b. Na = 2k + 1 si Nb = 2k, k N , a. Na = 2k si Nb = 2k, k N ,

3. Se d gramatica G = {VT , VN , S, P }, unde VT = {b, c}, VN = {S, B, C} S aSBC|abC CB BC Ce limbaj genereaz gramatic? si P: bB bb , bC bc cC cc

d. Na = 2k + 1 si Nb = 2k + 1, k N , 5. S se construiasc gramaticile care genereaz limbajele: b. L> = {ai bj , i, j > 0, i > j} c. L = {ai bj , i, j > 0, i = j} S se construiasc gramaticile care genereaz limbajele: 6. L = {am bn , n < m sau n > 2m, n, m > 0} 7. V = {a, b, c} toti simboli a apar nainte de toti simboli b si toti simboli , , , , b apar nainte de toti simboli c. , 8. L = {xx1 |x {a, b} } 9. S se determine gramatica care genereaz mult imea numerelor naturale, , multimea numerelor ntregi s i multimea numerelor reale. , , , 10. S se scrie un program care afis eaz continutul unui fisier text. Caut , , , prima aparitie a unui cuvnt dat de la tastatur. La cerere (apsarea , unei taste) cutarea se continu cu urmtoarele aparit ii ale cuvntului , dat. a. L< = {ai bj , i, j > 0, i < j}

c. Na = 2k si Nb = 2k + 1, k N ,

Limbaje formale si automate , Laborator 4

Transformri de gramatici de tip II (Independente de context)


1. Eliminarea -productiilor , 2. Eliminarea recursivitt ii stnga , 3. Eliminarea simbolurilor neterminale neutilizate 4. Substitutia de nceputuri ,

1
-

Eliminarea productiilor ,
productie care s aib n partea dreapt s irul vid, adic . , ,

O gramatic se numeste -free, dac satisface urmtoarele condit ii: , ,

- Avem o singur except ie, din simbolul de start putem deduce , adic , S este permis. Algoritmul de transformare a unei gramatici n gramatic -free: 1. Se construieste multimea neterminalelor care pot fi transformate n , , direct sau indirect. 2. Dup ce se obtine ultima multime Nn , atunci simbolurile aflate n , , multime pot fi substituite cu . ,

Exemplu

Primul neterminal nlocuibil direct cu este A. N0 = {A}. Dac A poate fi nlocuit cu atunci si C poate fi nlocuit cu . , N0 = {A} N1 = {A, C} N2 = {A, C, B} N3 = {A, C, B, S} Dac S N3 atunci se introduce o nou product ie S S|. S va fi noul , simbol de start. Se rescriu productiile, astfel nct fiecare neterminal aflat n mult imea N3 s , , fie nlocuit pe rnd cu . Obtinem setul de reguli: , S S| S ABC|BC|AC|AB|A|B|C A BB|B B CC|C|a C AA|A|b

S ABC A BB| Fie gramatica G = ({a, b, }, {S, A, B, C}, S, P ), unde P: B CC|a C AA|b
3.

Eliminare simbolurilor neterminale neutilizate

O gramatic poate s cont in simboluri neterminale n plus, care pot fi eli, minate fr a afecta gramatica. - Un simbol neterminal este n plus, dac din el nu ajungem niciodat la un cuvnt (o form final care s cont in doar terminale). Acest , simbol se numeste neterminal nefinalizat. , - Un simbol neterminal este redundant, dac pornind de la S folosind orice regul posibil pe parcursul derivrii nu apare niciodat acel simbol. Acest simbol se numes te neterminal inaccesibil. , Eliminarea neterminalelor neutilizate atrage dup sine eliminarea neterminalelor nefinalizate si inaccesibile. ,

Exemplu
S aA|bB A cA|dA|CA B bB|b C eaC|e D dBd|ede Pasul I: Pormind de la VT construim multimile T . T0 = {a, b, c, d, e} Acest , multime se completeaz pas cu pas cu terminalele din care pot fi deduse , elementele multimii anterioare. , T1 = {a, b, c, d, e, B, C, D} T2 = {a, b, c, d, e, B, C, D, S} / Multimea T2 nu poate fi completat cu alte neterminale. A T2 , A , este un simbol nefinalizat (nu produce niciodat cuvnt). Productiile care contin A pot fi eliminate. , , Obtinem: , S bB B bB|b C eaC|e D dBd|ede Pasul II: Pornind de la S construim mult imile N. N0 = {S}. , N1 = {S, b, B}. Simbolurile nu C,D nu pot fi deduse din elementele multimii N1 , deci ele sunt inaccesibile, deci se elimin din gramatic: , Gramatica final fr simboluri neutilizate devine astfel: S bB G = ({b}, {S, B}, S, P ), unde P: B bB|b

Eliminarea recursivitt ii stnga ,

Se numeste gramatic recursiv stnga o gramatic care contine un netermi, , nal A, astfel nct s existe relat ia: , A A, unde (VT VN )
+

Recursivitatea poate fi direct (evident): product ia are forma A A, sau , indirect: pe parcursul derivrii ajungem dup k pasi la o astfel de form A. , 3

Eliminare recursivitt ii stnga A A| se face prin introducerea product iilor: , , A A A A |

Exemplu
S Aa|Bb A Sa|a B Bb|b Dac nlocuim product iile (1) si (2) n (3) atunci obt inem , , , A Aaa|Bba|a Productie recursiv stnga , Elinim recursivitatea stng ( = a sau = Bba si = aa): , A BbaA |aA A aaA | n ultima productie a (5)-a avem recursivitate imediat: B Bb|b , Dup eliminarea recursivitt ii obtinem ( = b si = b): B bB , , , B bB | Astfel productiile originale se transform n: , S Aa|Bb A BbaA |aA A aaA | B bB B bB |

Probleme propuse
S se gseasc gramatica -free echivalent: S ABc A aAb|BD 1. B cB| D a|b|c|B

S ABC A BB| 2. B CC| C AA| S se determine neterminalele neutilizate: S ABC|D A aBa|aB B bCc|bC 3. C bCAE|cA D dD|d E eE S AB|CD A aAb|CaD 4. B bB|SB C cCc|cDc D aCa|a S A|B A aB|bS|b 5. B AB|BA C AS|b S se elimine recursivitatea stng A BC|a 6. B CA|Ab C AB|cC|b 7. S aAa A Ab|b

S aAa A CaB|b 8. B Aab|a C Ba|Ca 5

9.

S Aa|aSb A Ac|

Limbaje formale si automate , Laborator 5

Automate finite
Un automat finit notat cu M = (Q, , , q0 , F ) este format din: - Q multimea strilor, o multime finit si nevid , , , - : alfabet finit de intrare - : o aplicatie numit functie de tranzitie, care ataseaz unei stri si a , , , , , unui simbol de intrare o nou stare : Q Q, adic trece dintro stare ntr-o alt stare, dac pe banda de intrare automatul cites, te simbolul corespunztor. Exemplu: (q0 , a) = q1 - q0 : starea initial , - F Q multimea strilor finale , Automatul analizeaz fiecare cuvnt (cites te literele cuvntului) de la stnga , la dreapta. Cuvnt acceptat : Un cuvnt este acceptat/recunoscut de automat, dac automatul pornind din starea init ial se va opri ntr-o stare final dup prelucra, rea ntregului cuvnt. n cazul n care nu exist tranzit ie dintr-o stare n cea, lalt cu ajutorul simbolului citit, atunci automatul se blocheaz. (qi , a) = . Limbaj acceptat : Limbajul acceptat de un automat finit este mult imea tutu, ror cuvintelor acceptate de acel automat. Configuratie instantanee: Numim configuratie instantanee perechea (q0 , x), , , 1

adic starea actual a automatului s i sirul de caractere din cuvntul rmas , , nc necitit (neanalizat). Dac un automat foloses te tranzitia (q, a) = p, , , atunci notm modificarea configurat iei astfel (q, a) (p, ). , Un automat poate fi definit prin tabelul de tranzit ie sau prin diagrama de , stare (diagrama de tranzit ie). , Exemplu Fie M = (Q, , q0 , F ), unde Q = {q0 , q1 , q2 , q3 } q0 q1 q2 q3 a q1 q1 b q2 q2 c q3 q3 = {a, b, c} si F = {q3 } ,

Diagrama corespunztoare tabelului de tranzitii , Simularea acceptrii unui cuvnt: Fie cuvntul de intrare aaabbbbcc. Prima configuratie este (q0 , aaabbbbcc). Cuvntul va fi acceptat, dac automatul , dup prelucrarea complet a cuvntului se opres te n configuratia (q3 , ). , , (q0 , aaabbbbcc) (q1 , aabbbbcc) (q1 , abbbbcc) (q1 , bbbbbcc) (q2 , bbbcc) (q2 , bbcc) (q2 , bcc) (q2 , cc) (q3 , c) (q3 , ). Cuvntul este acceptat ntruct am ajuns n starea final s i cuvntul a fost , prelucrat n ntregime. Automat finit nedeterminist AFN : Un automat finit nedeterminist este format din tranzactii prin care dintr-o stare cu acelas i simbol citit se poate , , ajunge n mai multe stri. Automat finit determinist AFD : Un automat finit determinist este format din tranzactii prin care dintr-o stare cu acelas i simbol citit se poate ajunge , , n cel mult o stare. Teorem 1 : Fie L limbajul acceptat de un AFN atunci exist un AFD care accept L. Teorem 2 : Fie G = (VN , VT , S, P ) o gramatic de tip 3 (regulat), atunci exist AFN M = (Q, , q0 , F ) cu T(M)=L(G). Teorem 3 : Fie M = (Q, , q0 , F ) AFN atunci exist G = (VN , VT , S, P ) o gramatic de tip 3 astfel nct L(G)=T(M). 2

Metoda de transformare a unui limbaj regulat n automatul finit echivalent


Gramatic regulat dreapta A aB sau A a Gramatic VN neterminale VT terminale A aB Aa A S simbol de start Automat Q stri F stare final (alfabet de intrare) (A, a) = B (A, a) = F (F stare final) A va fi stare final S stare initial ,

Automat Q stri (alfabet de intrare) (A, a) = B (A, a) = F (stare final) Pt. stare final F q0 stare initial , Gramatic regulat stnga A Ba sau A a Gramatic VN neterminale VT terminale A Ba Aa A S simbol de start

Gramatic VN neterminale VT terminale A aB Aa F S simbol de start

Automat Q stri q0 stare initial , (alfabet de intrare) (B, a) = a (q0 , a) = A (q0 stare initial) , A va fi stare initial , S stare final

Automat Q stri (alfabet de intrare) (B, a) = A (q0 , a) = A (q0 stare initial) , Pt. stare initial q0 , F stare final

Gramatic VN neterminale VT terminale A Ba Aa q0 S simbol de start

Limbajul regulat dreapta pentru automatul dat n exeplul precedent: q0 : S q1 : A q2 : B q3 : C S aA A aA|bA B bB|cC C cC pt. (B, c) = C introducem B C vezi linia 4 din tabelul 2. pt. q3 stare final introducem C vezi linia 5 din tabelul 2.

Probleme propuse
1. Se d automatul:

S se determine dac cuvintele sunt acceptate: 1010, 0110, 010011. 2. Fie G=({S,B},{0,1},S,P) unde P: S 0B B 0B|1S|0 S se construiasc M care accept limbajul L generat de gramatica G.

3. S se creeze automatul finit nedeterminist pentru problemele din Laboratorul2 (3,4,5,6,7,8), Laboratorul3 (1,3,4,5,6,7,8,9). S se deduc cte un cuvnt acceptat s i respins. ,

Limbaje formale si automate , Laborator 6

Transformarea unui AFN n AFD


Un automat finit determinist notat cu M = (Q, , , q0 , F ) este format din: - Q multimea strilor, o multime finit si nevid , , , - : alfabet finit de intrare - : o aplicatie numit functie de tranzitie , care ataseaz unei stri si , , , , , a unui simbol de intrare o nou stare : Q Q, adic trece dintr-o stare ntr-o alt stare, dac pe banda de intrare automatul citeste simbolul corespunztor. Exemplu: (q0 , a) = q1 , - q0 : starea initial , - F Q multimea strilor finale , Automat finit determinist AFD : Un automat finit determinist este format din tranzitii prin care dintr-o stare cu un anumit simbol citit se poate ajunge , n cel mult o stare. Un automat finit nedeterminist notat cu M = (Q, , , q0 , F ) este format din: - Q multimea strilor, o multime finit si nevid , , , - : alfabet finit de intrare

- : o aplicatie numit functie de tranzitie , care ataseaz unei stri si a , , , , , unui simbol de intrare mai multe stri, o submult ime de stri P(Q) Q , , adic : Q P(Q), tranzitie dintr-o stare n mai multe , stri, dac pe banda de intrare automatul cites te un anumit simbolul. , Exemplu: (q0 , a) = q1 , (q0 , a) = q2 - q0 : starea initial , - F Q multimea strilor finale , Automat finit nedeterminist AFN : Un automat finit nedeterminist este format din tranzitii prin care dintr-o stare cu un anumit simbol citit se poate , ajunge n mai multe stri. AFN poate accepta un cuvnt de intrare parcurgnd mai multe secvent, e de tranzitii ale automtului. Pot exista mai multe drumuri (ramuri) care ac, cept acelasi cuvnt. (Tipul de atribuire: unu la mai multe). , Un AFN accept un cuvnt, dac exist cel put in un drum de tranzitii astfel , , nct dup prelucrarea cuvntului automatul s fie ntr-o stare final. n cazul AFD unui cuvnt i se atribuie doar o sigur modalitate de acceptare (secvent de tranzitii) . (Tipul de atribuire: 1 la 1). , , Teorem 1 Pentru orice AFN exist un AFD echivalent cu acesta.

Algoritmul de transformare al unui AFN n AFD


- AFD foloseste o singur stare init ial care colecteaz toate strile init iale , , , din AFN. - O stare este final n AFD dac s i numai dac contine cel putin o stare , , , final din AFN. AFD poate s aib mai multe stri finale. - Se elimin nedeterminismul, dac pentru fiecare tranzit, ie care dintr-o stare si un simbol citit ajunge n mai multe stri, comasm strile t, int. , Exemplu: AFN (q0 , a) = q1 si (q0 , a) = q2 atunci n AFD vom avea , not. (q0 , a) = {q1 , q2 } = q1,2

Exemplu Fie M = (Q, , q0 , F ), unde Q = {q0 , q1 } = {0, 1} si F = {q1 } , q0 q1 0 {q0 , q1 } 1 q1 {q0 , q1 } Diagrama corespunztoare tabelului de tranzitii ,

Determinalizat

q0 q1 {q0 , q1 }

0 {q0 , q1 } {q0 , q1 }

1 q1 {q0 , q1 } {q0 , q1 } Diagrama corespunztoare tabelului de tranzitii ,

Eliminarea -tranzitiilor ,
O -tranzitie are forma (q0 , ) = q1 , adic fr a citii un simbol de pe banda , de intrare putem trece n starea urmtoare. -tranzitii reprezint un nedeterminism, pentru c necitind simbol automatul , poate s rmn n starea curent sau dac exist -tranzitie poate trece n , starea urmtoare. Adic (q0 , ) = q0 sau (q0 , ) = q1 . Avem nedeterminism ntruct cu ajutorul unui simbol ajungem n mai multe stri.

Algoritmul de eliminare a -tranzitiilor ,


Starea de plecare a -tranzitiei va fi comasat cu starea t int a tranzitiei. , , , Toate tranzitiile care pornesc din starea t int vor porni si din starea coma, , , sat. Creem -nchiderea pentru fiecare stare: q = ({q}) Exemplu

q0 q1 q2

a q1

b q1

c q2

q0 Diagrama corespunztoare tabelului de tranzitii ,

Determinalizat (-free) Determinm -nchiderea fiecrei stri q0 = (q0 )=q0 q1 = (q1 )=q1 q2 = (q2 )={q2 , q0 } q 0 = q0 q 1 = q1 q2 = {q2 , q0 } q1 a q1 b q1 c {q2 , q0 }

Diagrama corespunztoare tabelului de tranzitii ,

Probleme propuse
S se transforme AFN n AFD.

1.

2.

3.

4.

5.

6. S se scrie un program care cites te dintr-un fisier datele unui automat , , finit determinist. (Prima linie cont ine strile automatului separate prin , spatiu, a doua linie cont ine alfabetul, a treia linie starea init ial, a patra , , , linie strile finale separate prin spat iu, urmtoarele linii cte o tranzit ie: , , stare liter stare). Se cere de la tastatur un cuvnt. S se verifice dac automatul accept cuvntul dat. Indicatie: Printr-o matrice se va reprezenta tabelul de taranzit, ii (i, j) = , m[i][j], unde i este indicele rndurilor, adic a strilor, j este indicele coloanelor, adic simbolul alfabetului, iar valoare m[i][j] va fi starea urmtoare. algoritm ciclu parcugere sir , daca m[stare_actuala][sir[indice_litera_actuala]] = atunci stare_actuala= m[stare_actuala][sir[indice_litera_actuala]] incrementare indice_litera_acuala altfel stop cuvnt inacceptat sf. daca sf. ciclu cuvnt acceptat sf. algoritm

Limbaje formale si automate , Laborator 7

Minimizarea unui AFD


Fiecrui AFD i corespunde un AFD minim, care accept acelas, i limbaj, dar contine un numr minim de stri. , Exist dou surse de minimizare: 1. elimiarea strilor inaccesibile 2. comasarea strilor care au acelas i comportament, adic sunt echivalente , ntre ele. Definitie 1 O stare este inaccesibil, dac nu exist nicio secvent, de tranzitii , , prin care s ajungem din starea init ial n aceast stare. , Definitie 2 Un AFD M = (Q, , , q0 , F ) si dou stri q1 si q2 . Spunem , , , c un cuvnt x distige strile q1 si q2 , dac din q1 dup citirea cuvntu, lui ajungem ntr-o stare q3 final(nefinal) si din q2 dup citirea cuvntului , ajungem ntr-o stare q4 nefinal(final), adic: (q1 , x) (q3 , ) si , (q2 , x) (q4 , ) / / unde q3 F si q4 F sau invers q3 F si q4 F . , ,

Algoritmul de minimizare al unui AFD


Exemplu Fie automatul:

vezi exemplul

Primul pas grupm strile n dou grupe finale s i nefinale. , 1 a b 2 a b 1 q1 1 1 1 q1 1 2 q4 1 2 q2 2 3 q2 1 2 q3 1 2 2 q3 2 3 q0 3 1 q4 1 1 q0 2 1 3 q5 3 1 2 q5 2 1

Nicio clas de echivalent nu poate fi separat, deci q1 q4 si q2 q3 si , , , q0 q5 . Nou automat contine 3 stri q0 , q1 si q2 . , ,

Probleme propuse
S se gseasc AFD minim pentru urmtoarele AFD

1.

2.

3.

4.

5.

6.

7.

Limbaje formale si automate , Laborator 8

Expresii regulate
Se numeste expresie regulat o expresie care poate fi construit cu urmtoa, rele reguli: expresie regulat ce defines te sirul vid , , a VT expresie regulat ce descrie limbajul format dintr-un singur cuvnt de lungime 1. L = {a} e1 si e2 sunt expresii regulate indicnd limbajele L1 si L2 atunci , , Alternare (sau) e1 |e2 este o expresie regulat ce indic limbajul L1 L2 Concatenare (si) e1 e2 indicnd limbajul produs L1 L2 , e nchiderea Kleene indicnd limbajul L(e) , adic {, e, ee, eee, . . . } Exemplu: (a|b) abb nseamn a sau b de oricte ori, dar cuvntul trebuie s se termine cu sirul abb. ,

Expresii regulate si gramatici regulate ,


Definitie 1 O expresie regulat defines te un limbaj, o gramatic genereaz , , un limbaj, dac limbajul definit de expresia regulat coincide cu limbajul generat de gramatic, atunci expresia regulat este echivalent cu gramatica. Notatie: a+ = aa (cel putin un a) , , 1

Exemplu 1. Fie expresia regulat (a|b) abb. S se determine gramatica regulat S Aaab echivalent cu acesta. A aA|bA| 2. Variabil n limbajul C: ncepe cu liter s i contine liter cifr si _ Ex, , , presia regulat corespunztoare: <variabil>=<liter>(<liter>|<cifr>|_) unde <liter>= a|b|c| . . . |z|A|B|C| . . . |Z si , <cifr>= 0|1|2| . . . |9 Gramatica corespunztoare: <variabil> a<litercifrbar>|b<litercifrbar>|. . . |Z<litercifrbar> |a|. . . Z <litercifrbar> a<litercifrbar>|b<litercifrbar>|. . . |Z<litercifrbar> 0<litercifrbar>|2<litercifrbar>|. . . |9<litercifrbar> |a|. . . Z|0|1|. . . |9

Algoritm de transformare a unei expresii regulate ntr-o gramatic regulat


Fie ecuatia X = X| are solutie unic X = , , Exemplu (din gramatic obt inem expresia regulat) , S aS S aB B bC C aC C a

Pasul 1. Regulile gramaticii se comaseaz, combinnd regulile cu acelas, i mem S aS|aB bru stng. B bC C aC|c 2

Pasul 3. Se stabileste o relatie de ordine ntre neterminale. , , SBC 0 1 2 Pasul 4. Se verific forma intermediar a fiecrei ecuat ii. , n forma intermediar indicele membrului stng trebuie s fie mai mic sau egal cu indicele neterminalelor din membrul drept. Dac aceast conditie nu este satisfcut neterminalul mai mare n , membrul drept se nlocuies te conform regulilor. , n cazul exemplului dat sistemul este n form intermediar. Pasul 5. Rezolvm sistemul de jos n sus. C = aC|c solutia C = a c. , Acesta se va nlocui n product ia anterioar. , B = ba c Acesta se va nlocui n product ia anterioar. , S = aS|aba c S = a aba c Exemplu (din expresia regulat obt inem gramatica) , Fie expresia regulat (0|1)0 11 0. Spargem expresia n , adic (0|1) 0 1 1 0. Prima parte 0|1 va fi o regul de forma S 0|1. Dar ca s continum cu restul expresiei regula devine S 0A|1A A doua parte 0 1 va fi o regul de forma A 0A|1. Dar ca s continum cu ceea ce a mai rmas din expresie regula devine A 0A|1B. A treia parte va fi B 1B|0. Deci gramatica echivalent cu expresia regulat dat este: S 0A|1A G = ({S, A, B}, {0, 1}, S, P ). P: A 0A|1B B 1B|0 3

Pasul 2. Sgeata se transform n egalitate = S = aS|aB B = bC C = aC|c

Probleme propuse
Se d gramatica regulat s se transforme n expresie regulat: S aA S a A aA A bB A a B bB B c S aA A aA A aB B bC C cB C c S 0A S 1S A 0B A 1S B 0B B 1B B 0 S 0A|1S|1 A 0B|1A B 0S|1B

1.

2.

3.

4.

5. Se d sistemul de ecuat ii cu expresii regulate: ,

X = a1 X + a2 Y + a 3 Y = b1 X + b2 Y + b 3 S se gseasc expresiile regulate pentru X s i Y. , 4

S se gseasc gramaticile echivalente cu expresiile regulate: 6. (a|b) a(a|b) 7. (a|b) a(a|b)(a|b) 8. 00(00|1) 101(11|(1|0) ) 001 9. S se scrie un program care transform AFN n AFD, comasnd strile s eliminnd -tranzitiile. (Prima linie cont ine strile automatului , , , separate prin spatiu, a doua linie cont ine alfabetul, a treia linie starea , , initial, a patra linie strile finale separate prin spat iu, urmtoarele , , linii cte o tranzitie: stare liter stare) , 10. S se scrie un program care transform un AFD complet n AFD minim.

Limbaje formale si automate , Laborator 9

Expresii regulate si AF ,
Teorem 1 Fiind dat o expresie regulat R exist un cu AFN - tranzitii , care accept limbajul generat de expresia regulat.

Transformarea unei expresii regulate n AFN


Expresia regulat trebuie s fie descompus n expresii regulate elementare. 1. a (un singur simbol) 2. (expresia regulat vid) 3. s|t s sau t 4. st s concatenat cu t 5. s s de 0 sau de mai multe ori Automatele finite corespunztoare acestor expresii regulate elementare sunt: 1. a

2.

3. s|t

4. st

5. s

Exemplu Fie expresia regulat (ab) bb(a|b) . Descompunem expresia n (ab) , b, b, (a|b) . I. ab

II. (a|b)

Totul devine: 3

Probleme propuse
1. S se transforme AFD exemplul de mai sus. S se construiasc AFN pentru urmtoarele expresii regulate: 2. ((abc) |b) bbc 3. aa(a|b) (ab) 4. b((aba) |aaa) )b 5. Care este limbajul generat de urmtoarea expresie regulat? S se creeze direct AFD corespunztor. (a|b) ((aa(a|b) bb)|(bb(a|b) aa))(a|b)

Limbaje formale si automate , Laborator 10

Gramatici independente de context


Gramatici de forma A unde A VN si (VT VN ) . ,

Forma normal Chomsky

A BC Gramaticile care au doar urmtoarele tipuri de reguli A a S A VN , B, C VN \ {S} si a VT sunt n FNC. , 1. eliminarea -tranzitiilor ,

unde

Transformarea unei gramatici n FNC

2. eliminarea product iilor unu la unu (A B, nlocuim productiile lui B , , n partea dreapt ) 3. eliminarea terminalelor n partea dreapt nlocuindu-i cu noi neterminale (A a) 4. gruparea neterminalelor n perechi de cte dou

S aA|Bb|a A aA|Bb|a Pasul 2. Se elimin product ia unu la unu A S, nlocuim S. , B BbC|b Cc

S aA|Bb|a A S Pasul 1. A poate fi nlocuit cu , se va nlocui n fiecare product ie: , B BbC|b Cc

Exemplu S aA|Bb A S| B BbC|b Cc

Pasul 3. n partea dreapt a regulilor care corespund FNC se nlocuies, te nu A a B b S A A|BB |a fiecare terminal cu un neterminal. A A A|BB |a B BB C|b Cc A a B b S A A|BB |a Pasul 4. Gruparea neterminalelor n perechi de cte dou A A A|BB |a B B C B BB |b C c 2

Probleme propuse
S se transforme urmtoarele gramatici n FNC. S AA A B|BB B abB|b|bb S AaA|bA|B A AaA|AbA| B ab S SS|A|B A SS|AS|a B S AaA|BB|AB A b| B aA

1.

2.

3.

4.

5.

S aA|bS|ab|A A aA|a| S aA|B|bab 6. A B| B bb|bAb S aB|Bbb|B 7. A a| B aAB|bb|AAa

Limbaje formale si automate , Laborator 11

Automate Push Down (APD)


Automatele Push Down sunt o extensie a AFN cu tranzitii, dar mai au la , dispozitie o stiv. Informatiile din stiv pot fi accesate LIFO. , , Definitie 1 Un automat push-down este format din M = (Q, , , , q0 , F, Z). , Q multime finit de stri , simboluri de intrare simboluri ale stivei q0 starea initial , F strile finale Z simbol de start al stivei (q0 , a, AZ) = {(q1 , B)}. Dac suntem n starea q0 , de pe banda de intrare citim simbolul a iar capul stivei este A atunci trecem n starea q1 scoatem din stiv A si punem n locul lui simbolul B. , Observatie 2 Initial stiva este vid, adic cont ine doar simbolul Z. , , , Definitie 3 Configuratie instantanee: Numim configurat ie instantanee tri, , , pletul (q, x, z), adic starea actual a automatului; s irul de caractere din cu, vntul rmas nc necitit (neanalizat) s i continutul stivei (n pozit ie orizon, , , tal). Configurata initial este (q0 ,cuvnt,Z). , , 1 functie de tranzitie : Q ( ) P(Q ) , ,

Definitie 4 Limbaj acceptat prin stri finale: Dup prelucrarea cuvntului , automatul va fi ntr-una din strile finale. (Cont, inutul stivei nu este important). Definitie 5 Limbaj acceptat prin stiv vid: Dup prelucrarea cuvntului , stiva este vid, adic cont ine doar Z (Starea n care rmne automatul ne , este important). Exemplu S se creeze APD care accept limbajul: L = {ww|w este simetricul lui w}. Orice cuvnt palindrom peste alfabetul = {0, 1}. M = (Q = {q0 , q1 }, = {0, 1}, = {0, 1}, , q0 , q3 F, Z) (q0 , 0, Z) = {(q0 , 0Z)} (q , 1, Z) = {(q , 1Z)} 0 0 (q , 0, 1) = {(q , 01)} 0 0 (q0 , 0, 0) = {(q0 , 00), (q1 , )} (q , 1, 0) = {(q0 , 10)} 0 (q0 , 1, 1) = {(q0 , 11), (q1 , )} (q , 0, 0) = {(q , )} 1 1 (q , 1, 1) = {(q , )} 1 1 (q , , Z) = {(q , )} 1 1 Fie cuvntul 001100. S se verifice dac cuvntul este acceptat de APD definit mai sus. (q0 , 001100, Z) (q0 , 01100, 0Z) (q0 , 1100, 00Z) (q0 , 100, 100Z) (q1 , 00, 00Z) (q1 , 0, 0Z) (q1 , , Z)

Observatie 6 APD se numeste nedeterminist, dac are mai multe obt iuni , , , pentru a trece ntr-o nou stare citind aceeas i pereche(simbol de intrare,capul , sitvei).

Probleme propuse
S se determina APD care recunoas te urmtoarele gramatici: , 1. L = {an bn , n 0} 2

2. L = {|w|a > |w|b sau |w|b > |w|a } 3. L = {an bm , 1 m n 2m} 4. L = {ai bj ai , i, j > 0}

Limbaje formale si automate , Laborator 12

Automate Push Down (APD) s i Gramatici inde, pendente de context (IDC)


Limbajele acceptate de automatele cu stiv gramatici independente de context, adic PDA IDC.

Transformarea unei gramatici IDC n PDA


Fie G = (VT , VN , S, P ) se caut PDA echivalent M = (Q, , , , q0 , F, Z). Gramatic VT terminale A Exemplu APD o singura stare q (q, a, a) = (q, ) (q, , A) = (q, )

E E + T |T S se transforme gramatica n APD T T F |F F (E)|a (q, a, a) = {(q, )} (q, +, +) = {(q, )} (q, , ) = {(q, )} (q, (, () = {(q, )} (q, ), )) = {(q, )} (q, , E) = {(q, E + T )|(q, T )} 1

(q, , T ) = {(q, T F )|(q, F )} (q, , F ) = {(q, (E))|(q, a)}

Normalizarea unui PDA


1. Are o singur stare de acceptare Se introduce starea qf inal din fiecare stare final original se trece prin -tranzitii n aceast stare , 2. Goleste stiva nainte de acceptare , Se introduce un nou simbol $ care se pune initial n stiv. Se , nlocuieste qf inal cu qtemporal . Dac am ajuns n starea qtemporal , golim stiva (aplicnd acele reguli), doar dac singurul simbol rmas n stiv este $ atunci se introduce regula (qtemporal , , $) = {(qf inal , } 3. Fiecare regul ori pune simbol n stiv ori scoate simbol din stiv, adic exist doar reguli de forma (q, a, ) = {(q, )} sau (q, a, A) = {(q, )}. Din reguli de forma (q1 , a, ) = {(q2 , )} vom crea (q1 , a, ) = {(q , )} si (q1 , , ) = {(q , )} ,

Transformarea unui PDA normalizat n gramatic IDC


Fie M = (Q, , , , q0 , F, Z) se caut gramatica IDC echivalent G = (VT , VN , S, P ). APD (q, a, ) = (q, ) (q, , ) = (q, ) (q, , A) = (q, ) Gramatic S Ss S a S S A Si S j Sk unde Si Sj Sk corespund sirului ,

Exemplu S se transforme APD n gramtatic IDC (q, a, a) = {(q, )} (q, b, b) = {(q, )} (q, , S) = {(q, )} (q, , S) = {(q, ba)} (q, , S) = {(q, bAa)} (q, , A) = {(q, ba)} (q, , A) = {(q, bAa)} Obtinem gramatica: , S Ss Sa a Sb b Ss |Sb Sa |Sa SA Sb SA Sb Sa |Sb SA Sa

Probleme propuse
S AB 1. S se transforma gramatica data n APD. A aAB| B cB|