Documente Academic
Documente Profesional
Documente Cultură
DANIELA MARINESCU
Capitolul I. ......…………………………………………………………………………….1
§ 1.1 Noţiunea de limbaj ................................ ................................ .......................... …1
§ 1.2 Gramatici generative ................................ ................................ ......................... ..4
§ 1.3 Operaţii cu limbaje ................................ ................................ .......................... …7
§ 1.4 Exercitii…….. ................................ ................................ ................................ ... ..8
Capitolul II.………………………………………………………………………………..9
§ 2.1 Automate finite…………………………………………………………………9
§ 2.2 Legătura dintre gramaticile regulate şi automatele finite ........................... ..….12
§ 2.3 Minimizarea automatului finit..……………………………………………….16
§ 2.4 Algoritmi pentru minimizarea automatului finit ................................ .......... ….17
§ 2.5 Lema de pompare pentru mulţimi regulate ................................ ................... …22
§ 2.6 Gramatici regulate şi expresii regulate................................ ........................ …..22
§ 2.7 Algoritm de transformare a unei gramatici regulate într-o expresie regulată…24
§ 2.8 Echivalenţa dintre expresiile regulate şi automatele finite nedeterministe……27
§ 2.9 Proprietăţi ale limbajelor de tip 3 ................................ ................................ …..30
§ 2.10 Exercitii………………………………………………………………………..35
Capitolul III…...………………………………………………………………………….37
§ 3.1 Arbori de derivaţie pentru gramaticile I.D.C. ................................ ............. .….37
§ 3.2 Forme normale ................................ ................................ ............................ .….40
§ 3.3 Teorema de pompare pentru limbaje I.D.C.(lema Bar-Hillel).................... .….40
§ 3.4 Automate Push-down ................................ ................................ ................. ..….44
§ 3.5 Legătura dintre automatele push-down nedeterministe şi limbajele
independente de context ................................ ................................ .......................... ….47
§ 3.6 Proprietăţi de închidere pentru limbaje I.D.C. ................................ ............ …..48
§ 3.7 Exerciţii ................................ ................................ ................................ ....... …..54
BIBLIOGRAFIE ...............................................................................................................56
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Introducem, în acest capitol, o serie de noţiuni folosite în teoria limbajelor formale cum ar fi:
alfabet, simbol, cuvânt, subcuvânt, prefix, suffix, cuvânt vid. Noţiunea de limbaj formal se defineşte apoi în
mai multe feluri, echivalente între ele, pornind de la sisteme de rescriere, pînă la gramatici generative şi
analitice. În continuare se prezintă o ierarhizare a gramaticilor, numită Ierarhia lui Chomsky, şi se
definesc operaţiile cu limbaje. Capitolul I se încheie cu probleme propuse spre rezolvare.
Noţiunea de limbaj se întâlneşte atât în lingvistică, unde se referă la limbajele naturale, cât şi în
informatică, unde se referă la limbajele de programare.
O limbă naturală se defineşte, conform dicţionarului, ca o mulţime de cuvinte şi de metode de
combinare a lor, folosită şi înţeleasă de o comunitate umană considerabilă.
Un limbaj de programare se defineşte ca o mulţime de programe scrise în acel limbaj.
O limbă naturală sau un limbaj de programare pot fi considerate ca mulţimi de secvenţe, adică şiruri
finite de elemente ale unui anumit vocabular de bază.
Pentru a putea studia proprietăţile acestor limbaje a fost necesară formalizarea noţiunii de limbaj,
construirea unei teorii matematice riguroase a limbajelor. O astfel de teorie este suficient de generală pentru
a include şi limbajele naturale şi limbajele de programare, precum şi o mulţime de alte limbaje, formând la
un loc aşa numitele limbaje formale.
Pentru a putea defini noţiunea de limbaj formal vom introduce o serie de noţiuni şi notaţii folosite
frecvent în această teorie.
Definiţia 1.1.1 Un alfabet sau vocabular, V, este o mulţime finită, nevidă de elemente.
Definiţia 1.1.2 Un element al alfabetului V se numeşte literă sau simbol.
În cele ce urmează vom folosi ca simboluri cifrele, literele latine şi greceşti mari şi mici şi simboluri
speciale cum ar fi $, #.
Exemplul 1.1.1 Exemple de alfabete sunt:
-alfabetul latin: {A, B, C, ..., Z}
-alfabetul grecesc: {, , , ..., }
-alfabetul binar: {0, 1}.
Definiţia 1.1.3 Un cuvânt peste alfabetul V este un şir finit constând din zero sau mai multe simboluri ale
lui V, unde un acelaşi simbol poate să apară de mai multe ori.
Notăm cu sau , cuvântul vid, format din zero simboluri.
Dacă V este un alfabet atunci prin V* vom nota mulţimea tuturor cuvintelor peste V, inclusiv
cuvântul vid , iar V+= V* - .
Exemplul 1.1.2 Dacă V = 0, 1 atunci
V*=, 0, 1, 00, 01, 10, 11, . ..
şi
V+=0, 1, 00, 01, 10, 11, 000 , ... .
Evident V* şi V+ sunt mulţimi infinite deoarece ele conţin cuvinte de lungime oricât de mare.
Definiţia 1.1.4 Un limbaj este o mulţime de cuvinte peste un alfabet.
-1-
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Exemplul 1.1.3 Într-un limbaj natural alfabetul, în sensul definiţiilor de mai sus, este dicţionarul limbii
respective, cuvintele sunt frazele, iar limbajul este mulţimea tuturor frazelor. Într-un limbaj de programare
simbolurile sunt instrucţiunile limbajului, cuvintele sunt programele iar limbajul este mulţimea tuturor
programelor.
În mulţimea cuvintelor se introduce o operaţie numită concatenare:
Definiţia 1.1.5 Dacă u şi v sunt două cuvinte din V* atunci concatenarea uv este tot un cuvânt din V*, care
se obţine prin alăturarea simbolurilor lui v după ultimul simbol al lui u.
Observaţia 1.1.1 Evident operaţia de concatenare este asociativă, u(vw)=(uv)w, dar nu este comutativă (în
general uvvu) iar cuvântul vid este element neutru relativ la operaţia de concatenare: u=u=u.
Definiţia 1.1.6 Puterea a i-a a cuvântului u, notată ui, este definită recursiv astfel:
(1) u0 =
(2) ui+1 = uiu
Definiţia 1.1.7 Lungimea unui cuvânt u, notată lg(u) sau |u|, este numărul de simboluri ale cuvântului u şi
este o aplicaţie lg: V* N .
Prin definiţie lg() = 0, fiind cuvântul format din zero simboluri.
Definiţia 1.1.8 Un cuvânt u este subcuvânt al lui v dacă şi numai dacă există cuvintele şi astfel încât v =
u . Dacă = atunci u se numeşte prefix al lui v iar dacă = atunci u se numeşte sufix al lui v. Un
subcuvânt u al lui v se numeşte subcuvânt propriu al lui v numai dacă u{,v}.
Majoritatea limbajelor care ne interesează vor conţine o mulţime infinită de cuvinte. Se pun atunci
trei chestiuni importante:
1. Cum se poate reprezenta un limbaj?
Dacă limbajul este finit atunci el s-ar putea reprezenta prin enumerarea cuvintelor sale, deşi la un
număr mare de cuvinte enumerarea poate fi complicată. Dacă însă limbajul este infinit apare problema
găsirii unei reprezentări finite pentru limbaj.
Apare atunci o altă problemă:
2. Există o reprezentare finită pentru orice limbaj?
Evident mulţimea V* a tuturor cuvintelor peste un alfabet finit V este o mulţime numărabilă. Un
limbaj este o submulţime a lui V*, deci mulţimea tuturor limbajelor peste V este mulţimea părţilor lui V*,
adică o mulţime nenumărabilă.
Deşi nu am definit încă o reprezentare finită a unui limbaj, se pare că mulţimea reprezentărilor finite
este numărabilă [4] deci ar rezulta că există mai multe limbaje decât reprezentări finite ale limbajelor.
3. Ce se poate spune despre structura acelor clase de limbaje care admit reprezentări finite?
Aceasta este una din principalele problemele de care ne vom ocupa în continuare.
Să considerăm acum câteva limbaje peste alfabetul {a, b}.
L1={ }
L2={ a, ba, aaba, bbbb }
L3={ ap | p număr prim }
L4={ ai bi | i număr natural }
*
L5={ u a,b | N a(u)=Nb(u) }
unde Na (u) este numărul de apariţii ale simbolului a în cuvântul u. Considerăm şi limbajul vid , care nu
conţine nici un cuvânt. Se observă că {} pentru că limbajul { } conţine un cuvânt şi anume .
Limbajele L1 şi L2 fiind finite se pot reprezenta prin enumerarea cuvintelor lor pe când limbajele L3,
L4 şi L5 sunt infinite şi au fost caracterizate de o proprietate pe care trebuie să o satisfacă toate cuvintele
limbajului. O astfel de proprietate specifică este un mijloc de bază de definire a unui limbaj infinit.
Un alt mod de a defini un limbaj infinit este de a introduce un mecanism generativ şi de a considera
cuvintele produse de acest mecanism.
Se poate, de asemenea, construi un mecanism analitic, de recunoaştere. Astfel un limbaj se poate
defini ca mulţimea tuturor cuvintelor recunoscute de un astfel de mecanism.
Mecanismele generative şi analitice se pot defini în termenii unui sistem de rescriere.
-2-
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
β astfel încât: x=uαv, y=uβv, iar α1β1 F, adică subcuvântul α al lui x este înlocuit prin subcuvântul β.
*
Un cuvânt α peste V generează β (în mai mulţi paşi) (α β) dacă şi numai dacă există un şir finit de
cuvinte α0, α1 , ..., α k, k 0, unde α0=α, αk=β şi αi αi+1, pentru 0 i k-1. Secvenţa α0 α1... αk se
va numi derivaţie a lui β din α în conformitate cu sistemul de rescriere, SR.
α= α0 α1 α2.... αk=β
*
Astfel relaţia este o relaţie binară pe V* iar este închiderea reflexivă şi tranzitivă a relaţiei .
Numărul k se numeşte lungimea derivaţiei sau număr de paşi.
Un sistem de rescriere poate fi transformat într-un mecanism generativ prin specificarea unei
submulţimi Ax V*, numită mulţimea de axiome, şi considerând limbajul
*
(1) Lg(SR, Ax)={ β | α β, α Ax }
Similar un sistem de rescriere poate fi privit ca un mijloc analitic sau de recunoaştere, considerând
*
limbajul (2) La(SR, Ax)={ α | α β, β Ax }
Formula (1) reprezintă limbajul generat de perechea (SR, Ax), iar formula (2) reprezintă limbajul
recunoscut sau acceptat de perechea (SR, Ax).
Observaţia 1.1.3 De cele mai multe ori mulţimea Ax este formată dintr-un singur simbol (simbolul iniţial)
sau are o structură foarte simplă.
Observaţia 1.1.4 De cele mai multe ori V se împarte în două submulţimi:VT, mulţimea terminalelor, VN
mulţimea neterminalelor sau a variabilelor şi limbajul se defineşte ca o submulţime a lui VT *.
Revenind la exemplele anterioare, în exemplul 1.1.6, L” se poate defini, în termenii unui sistem de
rescriere ca L” = La(SR,{}), unde V={a,b} iar F={ab}.
În exemplul 1.1.4, L=Lg(SR,{x}){a,b}*, unde SR=({a,b,x}, {x , xaxb}).
-3-
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Vom defini un tip de mecanism care joacă un rol important în teoria limbajelor formale.
Definiţia 1.2.1 O gramatică generativă este un quadruplu ordonat G=(VN, VT,S,P), unde VN şi VT sunt
alfabete finite disjuncte SVN şi P este o mulţime finită de perechi ordonate (u,v), astfel încât v este un
cuvânt din V*, unde V=VNVT şi u este un cuvânt din V* care conţine cel puţin o literă din VN.
Elementele lui VN formează mulţimea neterminalelor sau variabilelor, iar cele ale lui VT formează
mulţimea terminalelor; S se numeşte simbolul iniţial, iar P sunt reguli de rescriere, producţii. De fapt o
gramatică este un sistem de rescriere (V, P) numit sistem de rescriere indus de G.
Noţiunile de derivare directă sau derivare corespund celor introduse în cadrul unui sistem de
rescriere.
Limbajul L(G) generat de G este definit de:
*
L(G)={ w| w V *, S w }
Definiţia 1.2.2 Două gramatici, G şi G1, se numesc gramatici echivalente atunci şi numai atunci când
L(G)=L(G1).
Exemplul 1.2.1 Limbajul L = { a ibi | iN } este generat de gramatica generativă
G = ({S}, {a,b}, S, {S , S aSb})
Exemplul 1.2.2 Limbajul L = { w | w {a,b}*, N a(w)=Nb(w) } este generat de gramatica generativă
G = ({S}, {a,b}, S, {S , S asb, S bSa, S SS})
Vom da în continuare câteva exemple de gramatici conform cu [21].
Exemplul 1.2.3 [21].
G = ({S, B, C}, {a, b, c}, S, P}) , unde mulţimea P este formată din:
SaSBC bCbc
SaBC cCCc
CBBC aBab
bBbb
Să încercăm o derivaţie în gramatica G:
S aSBC aaSBCBC aaaSBCBCBC aaaaBCBCBCBC aaaaBBCCBCBC
* aaaaBBBBCCCC aaaabBBBCCCC aaaabbBBCCC aaaabbbBCCCC
aaaabbbbCCCC aaaabbbbcCCC aaaabbbbccCC aaaabbbbcccC aaaabbbbcccc
Se poate demonstra că L(G)={anbncn | n 1}
Exemplul 1.2.4. [21] Fie limbajul L={ ww | w {0,1}* }. Gramatica G definită de: G=({x0, x1, x2, x3},
{0,1}, x 0, P}), unde P este:
P: x0 x1 x2 x3 x1x2ix1yi
x1x2 yijjyi
pentru fiecare i şi j din {0,1}
x3 yix3x2ix3
ix2x2i
Această gramatică generează limbajul L. Să încercăm o derivaţie în această gramatică:
x0 x1x2x3 0x1y0x3 0x1x20x3 01x1y10x3 01x10y1x3 01x10x21x3
-4-
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Definiţia 1.2.4 (Ierarhia lui Chomsky) Pentru i{0,1,2,3}, o gramatică generativă, G=(VN, V T, S, P)
este de tip i dacă şi numai dacă regulile de rescriere din P îndeplinesc restricţiile de tip (i):
(0) Nici o restrictie.
(1) Reguli dependente de context (DC): Fiecare regulă din P este de forma u1Au2u1wu2 ,
unde u1, u2V*, A VN şi wV+ cu o singură excepţie posibilă S, care poate să apară
dacă S nu apare în dreapta nici unei reguli din P.
(2) Reguli independente de context (IDC): Fiecare regulă din P este de forma
A w cu A VN şi w V+.
(3) Reguli regulate (R): Fiecare regulă este de una din următoarele două forme A aB sau A
a , unde A, B VN şi aVT*.
5
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Teorema 1.2.1. Dacă G = (VN, VT, S, P) este o gramatică DC, atunci există altă gramatică DC, G1, care
generează acelaşi limbaj cu G, pentru care simbolul initial (de start) nu apare în dreapta nici unei
reguli ale lui G 1. Dacă G este IDC sau R atunci şi G 1 este IDC, respectiv R.
▼ Demonstraţie :
Fie S1VNVT. Construim gramatica G1={VN{S1}, VT, S1, P1 }, unde P1 conţine toate regulile
din P şi în plus toate regulile de forma S1 unde S P :
P1=P{S1 │ S P }
Observăm că S1VNVT deci nu apare în dreapta nici unei producţii din G şi nici în dreapta
vreunei producţii noi adăugate în P.
-6-
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Pentru că toate regulile lui P sunt în P1 rezultă că orice derivaţie din G este şi o derivaţie în gramatica
*
G1 deci w
G1
*
Combinând cele două derivaţii se obţine: S1 w ,
G1 G1
Teorema 1.2.2. Dacă L este un limbaj DC, IDC sau R, atunci şi L şi L\{} sunt limbaje DC, IDC
respectiv R.
▼Demonstraţie : Dacă L este un limbaj DC, IDC sau R, din teorema 1.2.3 rezultă că există o gramatică
G, care poate fi DC, IDC sau R, în care simbolul iniţial, S, nu apare în partea dreaptă a nici unei reguli
de rescriere. În plus singura regulă în care membrul drept poate fi λ este de forma S→λ.
Atunci pentru limbajul L\{} se scoate regula S→λ, iar pentru limbajul L se adugă tot regula S→λ.
Toate aceste modificări nu au nici o influenţă asupra restului cuvintelor generate de G pentru că
simbolul iniţial S nu mai apare în partea dreaptă a nici unei reguli de rescriere . ▲
Pentru că limbajele sunt mulţimi, rezultă că se pot folosi toate operaţiile cu mulţimi cunoscute.
Reuniunea a două limbaje L1L2={ w | w L1 sau wL2 }
Intersecţie a două limbaje L1L2={ w | w L1 şi w L2 }
Diferenţa a două limbaje L1\L2={ w | w L1 şi w L2 }
Complementara unui limbaj relativ la un alphabet V CV(L)=V*\L
În afară de aceste operaţii se pot introduce o serie de opera ţii specifice limbajelor :
Concatenarea a două limbaje L1L2={uv | u L1, vL2
Limbajele Φ şi {} reprezintă elementul zero şi respectiv elementul unitate relativ la concatenarea
limbajelor: L Φ = Φ L= Φ L{}={}L=L
Concatenarea se mai numeşte şi produs.
Puterea unui limbaj se defineşte recursiv prin:
L 0 = { }
Li+1 = L i L .
Produsul Kleene (sau Închiderea Kleene) este definit prin reuniunea tuturor puterilor lui L:
-7-
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
*
L Li
i 0
Închiderea Kleene - liberă este L Li
i 1
Câtul stâng a două limbaje este limbajul format din sufixele cuvintelor din L1 care au prefixul în L 2:
L2\L1={v |uv L1, u L2}
Derivata stângă a unui limbaj relativ la cuvântul v este vs L={u |vuL} adică câtul stâng al
limbajelor {v}\L.
Câtul drept a două limbaje este limbajul format din prefixele cuvântelor din L1 cu sufixul în L:
L1/L2 = { v| vu L1 pentru uL2 }
Derivata dreaptă a unui limbaj relativ la cuvântul u este udL= {v |vuL} adică câtul drept al
limbajelor L/{u}.
~
Reflectatul sau oglinditul unui limbaj L = { ~ u | u L }.
Substituţia unui limbaj se defineşte astfel:
aV definim (a) un limbaj peste Va iar apoi se aplică proprietăţile:
()=,
(uv)=(u)(v) u, v V*
deci este o aplicaţie : V* P(V’*), unde V’= Va .
aV
Substituţia unui limbaj L este atunci:
(L)={ v | v(u) pentru u L }
Dacă (a) este un singur cuvânt ua, atunci substituţia se numeşte homomorfism h:V*V’*. Un
homomorfism se numeşte -liber dacă nici unul din cuvintele (a)=ua nu este .
Una din problemele pe care le vom studia în capitolele următoare este problema închiderii
familiilor de limbaje de tip i, Li (i = 0, 1, 2, 3), relative la operaţiile introduse.
§1.4 Exerciţii
-8-
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Capitolul II este dedicat limbajelor de tip 3, numite şi limbaje regulate. Se prezintă trei moduri
de reprezentare ale limbajelor regulate: gramaticile de tip 3, automatele finite (deterministe şi
nedeterministe) şi expresiile regulate. Pentru automatele finite deterministe se prezintă un algoritm de
minimizare. Se demonstrează că cele trei moduri de reprezentare sunt echivalente şi se studiază
proprietăţile familiei limbajelor de tip 3, dintre care fac parte: lema de pompare şi proprietăţile de
închidere ale familiei limabjelor regulate la operaţiile introduse în capitolul I. Capitolul II se încheie cu
probleme propuse spre rezolvare.
În capitolul anterior am definit noţiunea de limbaj regulat sau limbaj de tip 3, ca fiind limbajul generat
de o gramatică de tip 3, adică de o gramatică G=(VN,VT,S,P), unde regulile din P sunt de forma :
A→aB sau A→a
Aici A şi B, sunt simboluri neterminale iar a este un symbol terminal.
Vom defini în cele ce urmează un sistem analitic pentru limbajele regulate ş i anume automatele finite.
Din punct de vedere istoric, automatele finit au fost introduse pentru a modela reţelele neuronale
dar au o mulţime de aplicaţii şi în alte domenii cum ar fi: analiza lexicala (faza iniţială a unui
compilator), descrierea editoarelor de texte şi a altor programe de procesare a textelor, modelarea
circuitelor logice şi altele.
Automatul finit este un bun model pentru un calculator cu o cantitate extreme de limitată de
memorie. Vom vede că, deşi are o memorie foarte mică, un astfel de calculator poate sa facă o serie de
lucruri utile cum ar fi cele enumerate mai sus.
Definiţia 2.1.1 Un automat finit determinist, notat M=(Q, Σ, δ, q 0, F), este format din:
Q - o mulţime finită nevidă (mulţimea stărilor);
Σ - un alfabet finit de intrare;
- o aplicaţie numită funcţie de tranziţie, care ataşează fiecărei combinaţii <stare, simbol de
intrare> o nouă stare δ : Q Σ Q ;
q 0 Q starea iniţială;
F Q mulţimea stărilor finale.
Din punct de vedere practic un automat finit este format dintr-un control finit, care se poate afla într-una
din stările mulţimii Q, dintr-o bandă de intrare împărţită în celule în care sunt scrise un număr finit de
simboluri din Σ, şi un cap de citire care se mişcă pe banda de intrare secvenţial de la stânga la dreapta
(de fapt banda de intrare se mişcă în dreptul capului de citire de la dreapta la stânga ).
a0 a1 … ai … an …
CONTROL FINIT
Figura 2.1.1
-9-
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Iniţial controlul finit se află în starea q 0 iar capul de citire analizează cel mai din stânga simbol scris pe
banda de intrare. Interpretarea lui δ(q, a) p pentru q,pєQ şi aєΣ, este aceea că automatul M, aflat în
starea q şi analizând simbolul a pe banda de intrare, îşi schimbă starea în p şi îşi mută capul de citire cu
o celulă la dreapta.
S-ar putea ca funcţia de tranziţie δ să nu fie peste tot definită, adică să existe p P şi a astfel încât
δ(p,a)= . În cazul în care automatul se află în această stare p şi capul de citire vizează simbolul a pe
banda de intrare se spune că automatul se blochează fiindca nu este definită mişcarea următoare.
*
Aplicaţia δ se poate extinde la Q Σ , prin δ̂ :
δ̂(q, λ) q
δ̂(q, xa) δ( δ̂(q, x), a) x Σ*, a Σ ,
semnificaţia lui δ̂ (q, x) p fiind aceea că M, pornind să analizeze secvenţa x din starea q, ajunge în
starea p în momentul în care capul de citire depăşeşte secvenţa x.
Observaţia 2.1.1 În continuare vom folosi notaţia δ şi pentru ˆ .
Definiţia 2.1.2 Un cuvânt x este acceptat sau recunoscut de un automat finit M, dacă, δ(q0 , x) p
pentru p F .
Limbajul acceptat de automatul M se notează T(M) x δ(q 0 , x) F .
Definiţia 2.1.3 Numim configuraţie instantanee perechea (q,x), formată din starea q Q în care se
*
află automatul finit şi şirul de caractere x Σ rămas necitit pe banda de intrare, unde capul de citire
vizează cel mai din stânga simbol al lui x.
Dacă automatul finit foloseşte tranziţia δ(q, a) p , atunci vom nota modificarea configuraţiei
astfel: (q, a ) ├ ( p, ) .
Exemplul 2.1.1 Specificarea unui automat finit M se poate face prin definirea funcţiei δ (într-un tabel)
sau printr-o diagramă de stare sau de tranziţie. Diagrama de tranziţie este un graf orientat în care
nodurile sunt stările automatului iar arcele (q,p) sunt etichetate cu a dacă δ(q,a)=p este o tranziţie din
automatul M.
▼Fie, de exemplu, automatul finit M (Q, Σ, δ, q 0 , F)
{ 0 ,1} , Q {q 0 , q 1 , q 2 , q 3 } , F {q 0 }
Σ sau:
δ
0 1 0
Start q1
q0
q0 q1 q2 0
1 1
q1 q0 q3 1 1
Q
0
q2 q3 q0 q2 q3
0
q3 q2 q1
Figura 2.1.2
Fie şirul de intrare 10110010; atunci putem urmări execuţia automatului astfel:
δ(q0 ,10110010) δ(q2 ,0110010) δ(q3 ,110010) δ(q1 ,10010)
δ(q3 ,0010) δ(q2 ,010) δ(q3 ,10) δ(q1 ,0) q 0 F ,
deci 10110010 T(M) .
În mod echivalent, într-un calcul de configuraţii se scrie:
- 10 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Acum δ’ se poate extinde la P (Q) astfel:
k
δ' ({p 1 , p 2 ,..., p k }, x) δ' (p i , x)
i 1
Definiţia 2.1.5 Un cuvânt x este acceptat sau recunoscut de un automat finit nedeterminist M dacă
δ(q 0 , x) F , adică dacă M pornind din starea q0 şi analizând cuvântul x poate ajunge într-o stare
finală.
Limbajul acceptat de un automat finit nedeterminist este format din mulţimea cuvintelor
acceptate T(M) pentru care există o secvenţă care conduce la acceptare:
T(M) = {w | ’(q,w) ∩ F }
Exemplul 2.1.2 Fie automatul finit descris în figura 2.1.3 cu ajutorul diagramei de tranziţie; în acest
caz T(M) este mulţimea cuvintelor care au sau doi de zero consecutivi sau doi de unu consecutivi.
▼
0,1 0,1
Start q0 0 q3 0 q4
q1
0,1 q2
Figura 2.1.3
Să urmărim funcţionarea acestui automat pentru câteva situaţii diferite:
a) Dacă şirul de intrare este 0101, automatul va face toate încercările de tranziţii posibile, înainte de a
trage concluzia că acest cuvânt nu e recunoscut (nu duce automatul într-o stare finală):
(q0,0101)├ (q0,101)├ (q0,01)├ (q0,1)├ (q0,λ) , q 0 F
(q0,0101)├ (q0,101)├ (q0,01)├ (q0,1)├ (q1,λ) , q 1 F
(q0,0101)├ (q0,101)├ (q0,01)├ (q3,1)├ blocare ( (q 3 ,1) )
- 11 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
▼ Demonstraţie:
Fie M (Q, Σ, δ, q 0 , F) un automat finit nedeterminist care acceptă L, adică L=T(M).
Definim M' (Q' , Σ, δ' , q' 0 , F' ) un automat finit determinist după cum urmează:
Q' ≈P(Q) noile stări (M’ păstrează urma stărilor în care poate fi M la un moment dat)
Q' [q 1 , q 2 ,..., q k ] q i Q, 0 k card(Q) ;
q 0 [q 0 ] ;
F' Q' , F' , conţine cel puţin o stare finală din F;
şi definim tranziţiile:
δ([q1 , q 2 ,..., q t ], a) [p1 , p ,..., p j ] δ({q1 , q 2 ,..., q t }, a) {p1 , p 2 ,..., p j }
Deci dacă δ’ este aplicat unui element Z=[q1, q2,....,q k ] din Q', rezultatul este calculat prin aplicarea lui
δ la fiecare stare a lui Q din Z=[q1,q2,. . . ,q k ]:
δ ([q 1 , q 2 ,..., q k ], a) [ p 1 , p 2 ,..., p j ]
k
pl δ(q i , a) , l 1, j
i 1
- 12 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
0 1 1
Start q0 q1
0,1
Construim M’ conform Teoremei 2.2.1 : Figura 2.2.1
M ( {[q 0 ], [q 1 ], [q 0 , q 1 ]} , {0,1} , δ , [q 0 ] , {[q 1 ], [q 0 , q 1 ]} )
δ ([q 0 ],0) [q 0 , q 1 ]
δ ([q ],1) [q ]
0 1
δ ([q 1 ],0) Φ
δ ([q 1 ],1) [q 0 , q 1 ]
δ ([q 0 , q 1 ],0) [q 0 , q 1 ]
δ ([q 0 , q 1 ],1) [q 0 , q 1 ]
Deci automatul M’ va avea diagrama tranziţiilor ca în figura 2.2.2: ▲
Start 1
[q0] [q1]
0 1
[q0,q1] Figura 2.2.2
0,1
- 13 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Teorema 2.2.2 Fie G=(VN, VT, S, P) o gramatică de tip 3. Atunci există un automat finit nedeterminist
M (Q, Σ, δ, q 0 , F) cu T(M)=L(G).
▼ Demonstraţie:
Construim Q V N {T}, T V N ; q 0 S ;
Dacă S λ P , atunci F {S, T} şi S nu apare la dreapta nici unei reguli; dacă
S λ P , atunci F {T} ;
δ(T, a) , a V T ;
B a P
Dacă atunci T δ(B, a) ;
a VT , B V N
Dacă B aC P
atunci C δ(B, a) ;
a V T , B, C V N
Dacă există B V N care nu apare în membrul stâng al nici unei reguli din P, atunci
δ(B, a) , a V T .
Atunci M simulează derivaţiile în G. Să arătăm că, într-adevăr, T(M)=L(G):
a) Fie x a 1 a 2 ...a n L(G) , n 1 . Atunci:
S a 1 A 1 ... a 1 a 2 ...a n 1 A n 1 a 1 a 2 ...a n 1 an
pentru anumite variabile Ai din VN. Din construcţia automatului M avem:
A 1 δ(S, a 1 )
A 2 δ(A 1 , a 2 )
…
A δ(A n -1 ,a n )
Aşadar:
(S, a 1a2…an)├ (A 1, a2…an)├ …├ (A n-1, an) ├ (A,λ)
Adică cuvântul x a 1 a 2 ...a n T(M) .
Pentru că x a fost din L(G) L(G) T(M)
b) Fie x T(M) , | x | 1 există stările S,A1,…,An-1,T astfel încât:
A 1 δ(S, a 1 ) S a 1A 1 P
A δ(A , a ) A a A P
2 1 2 1 2 2
...
...
T δ(A n 1 , a n ) A n 1 a P
deci are loc derivaţia:
S a 1 A 1 a 1 a 2 A 2 ... a 1 a 2 ...a n 1
A n 1
a 1 a 2 ...a n 1
an
De aici x L(G) T(M) L(G)
Din (a) şi (b) T(M) L(G) . ▲
Teorema 2.2.3 Fiind dat un automat finit determinist M, există o gramatică G de tip 3 astfel încât
L(G)=T(M).
▼ Demonstraţie:
Presupunem M (Q, Σ, δ, q 0 , F) - automat finit determinist.
Definim o gramatică de tip 3, G (Q, Σ, q 0 , P) astfel încât:
(i) q → ap (q,a) = p
(ii) q → a (q,a) = p F
- 14 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Demonstraţia este similară cu cea din Teorema 2.2.2. În plus dacă λ T(M) atunci q 0 F .▲
Teorema 2.2.4 Clasa limbajelor de tip 3 este echivalentă cu clasa limbajelor acceptate de automatele
finite.
Demonstraţia este evidentă din Teoremele 2.2.1, 2.2.2 şi 2.2.3 .
Observaţia 2.2.1 După unii autori clasa limbajelor acceptate de automatele finite se numeşte clasa
limbajelor regulate. Datorită teoremei anterioare (2.2.4), clasa limbajelor de tip 3 se numeşte şi clasa
mulţimilor regulate.
Exemplul 2.2.2 Fie G=({S,B}, {0,1}, S, P) unde
S 0B
B 0B
P:
B 1S
B 0
a) Să se construiască automatul finit, M, care să recunoască L(G);
b) Pornind de la M să se construiască automatul finit determinist, M1, echivalent cu M:
c) Să se construiască gramatica G’ care să genereze T(M1).
▼Construcţie:
a) Conform Teoremei 2.2.2, construim automatul finit care să recunoască limbalul L(G), M
=({S,B,A}, {0,1}, δ, S, {A}), unde:
δ(S,0) {B} δ(B,0) {A, B} δ(A,0)
δ(S,1) δ(B,1) {S} δ(A,1)
Să reprezentăm în figura următore diagrama tranziţiilor din automatul M =({S,B,A}, {0,1}, δ, S, {A}):
0
Start
S
B 0
1
0
A
Figura 2.2.3
Este uşor de verificat că T(M)=L(G) este limbajul cuvintelor peste alfabetul {0,1} care încep şi se
termină cu o succesiune de cel puţin doi 0 şi orice apariţie a simbolului 1 este urmtă de succesiuni de 0.
b) Pornind de la M, să construim conform Teoremei 2.2.1, un automat finit determinist, M1,
echivalent cu M: M 1 ( Q, {0,1}, δ , [S], {[A]} )
Q {[S], [B], [A], [A, B]} (în Q nu sunt necesare şi stările [S, A], [S, B], [S, A, B] )
δ ([S],0) [B]
δ ([S],1) Φ
δ ([B],0) [B, A]
δ ([B],1) [S]
δ ([A],0) δ ([A],1) Φ
δ ([A, B],0) [B, A]
δ ([A, B],1) [S]
Pornind de la M 1, construim G’ conform cu Teorema 2.2.3: G’=({S],[B],[A],[A,B]},{0,1},[S], P)
- 15 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
[S] 0[B]
P : [B] 0[A, B] , [B] 1[S] , [B] 0
[A, B] 0[A, B] , [A, B] 1[S] , [A, B] 0
▲
Observaţia 2.2.2 Gramatica G’ este mult mai complicată decât gramatica G iniţială, deşi ele sunt
echivalente şi evident că dacă pornim de la ea se poate construi un automat finit şi mai complicat,
echivalent cu automatele de mai sus.
Se pune atunci problema dacă pornind de la un automat finit nu putem micşora numărul de stări
sau dacă atunci când se implementează un automat finit nedeterminist se poate obţine o reprezentare în
memorie optimală. Această ultimă problemă este de mare importanţa in construcţia compilatoarelor şi
este abordată în [12], [14]. În continuare nu vom ocupa de prima dintre aceste probleme, şi anume de
micşorarea numărului de stări ale unui automat fin it determinist.
Definiţia 2.3.1 O relaţie binară R pe mulţimea S se numeşte relaţie de echivalenţă dacă ea este:
1) Reflexivă (xRx, x S)
2) Simetrică (xRy yRx)
3) Tranzitivă (xRy, yRz xRz)
O relaţie de echivalenţă peste S împarte mulţimea S în clase de echivalenţă, submulţimi disjuncte Si
x, y S i xRy
astfel încât .
S Si
i
Observaţia 2.3.3 Se poate construi un cel mai mic automat care acceptă un limbaj T(M), prin
eliminarea stărilor inaccesibile şi comasarea celor redundante. Stările redundante sunt determinate prin
partiţionarea stărilor automatului în clase de echivalenţă astfel încât fiecare clasă conţine stări care nu se
pot distinge între ele şi este atât de mare cât este posibil.
Definiţia 2.3.4 Fie M (Q, Σ, δ, q 0 , F) un automat finit determinist şi q1,q2 două stări distincte.
Spunem că x Σ distinge q1 de q 2 dacă:
(q 1 , x) ├* (q 3 , λ)
(q 2 , x) ├* (q 4 , λ)
şi una şi numai una dintre stările q 3 şi q4 este stare finală adică:
q3 F q 4 F
şi q4 F q 3 F.
k
Definiţia 2.3.5 Spunem că q1 şi q2 sunt k-nedistinctibile ( q 1 q 2 ) dacă şi numai dacă nu există x,
cux k, astfel încât x distinge q1 de q2.
Definiţia 2.3.6 Spunem că q1 si q2 sunt nedistinctibile (q1q2) dacă sunt k-nedistinctibile pentru k0.
Definiţia 2.3.7 O stare q este inaccesibilă dacă nu există x astfel încât (q 0 , x) ├ (q, λ) .
Definiţia 2.3.8 M este un automat redus dacă nici o stare nu este inaccesibilă şi nu există două stări
nedistinctibile.
Teorema 2.3.3 Fie M (Q, Σ, δ, q 0 , F) un automat finit determinist cu n stări. Stările q1 şi q2 sunt
nedistinctibile dacă şi numai dacă sunt (n-2)-nedistinctibile.
▼ Demonstraţie:
Implicaţia directă ("" ) este evidentă; să demonstrăm implicaţia inversă ("" ) :
- 16 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
(B) Algoritm de eliminare a stărilor inaccesibile. Pentru eliminarea stărilor inaccesibile se poate
folosi orice algoritm din teoria grafurilor de eliminare a nodurilor inaccesibiel din nodul reprezentând
starea iniţială, unde avem:
Intrare - Graful (Q,) cu (q,p)=a (q,a)=p
- q 0 Q
Ieşire Mulţimea de noduri Q’Q astfel încât există un drum de la q0 la pQ’.
Algoritmul marchează succesiv nodurile accesibile din q0 printr-un drum. Astfel, găseşte nodurile
accesibile şi le elimină pe celelalte. Prezentăm în continuare două variante ale aces tui algoritm:
Varianta I
BI.1 Iniţializează Q’={q0} şi marchează q0 cu 0.
BI.2 Pentru qQ’ caută pQ astfel încât există un arc (q,p); marchează p cu 1+ marca lui q
(dacă p nu e marcat) şi adaugă pe q la Q’; reia pasul BI2.
Dacă qQ’ şi p astfel încât (q,p), p este marcat atunci stop.
Sau:
- 17 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Varianta a II-a
BII.1 Iniţializează L=q0, marchează q0.
BII.2 Dacă L e vid stop .
Dacă nu, alege primul element q din L şi îl scoate din L.
BII.3 Pentru pQ astfel încât (q,p), dacă p nu e marcat, marchează p şi adaugă p în capul listei L.
Salt la pasul BII2.
Vom arăta în continuare că automatul obţinut prin algoritmul de minimizare este automatul cu număr
minim de stări.
Teorema 2.4.1. Automatul M’ definit de algoritmul de minimizare (A) este automatul cu cel mai mic
număr de stări acceptând L(M).
▼ Demonstraţie:
Presupunem că există un automat M’’, care are mai puţine stări decât M’ şi că L(M”)=L(M).
Pentru că fiecare clasă de echivalenţă indusă de relaţia de echivalenţă nedistinctibilitatea, , este nevidă,
rezultă că fiecare stare din M’ este accesibilă.
Pentru că M” are mai puţine stări decât M’ rezultă că w,x două cuvinte astfel încât:
( q 0 , w) ├*M” (q, λ)
( q 0 , x) ├*M” (q, λ)
unde q 0 este starea iniţială a lui M”.
Dar w şi x conduc M’ în stări diferite, deci w şi x conduc M în stări diferite, şi atunci:
(q 0 , w) ├*M (p, λ)
(q 0 , x) ├*M (r, λ)
stări care sunt distinctibile, adică y* astfel încât (p,y)F şi (r,y) F
(q0,wy)F şi (q0,xy)F
wyT(M) iar xyT(M), pe când ”(q0,wy)=”(q0,xy)
deci wy şi xy sunt deodată în T(M”)=T(M) contradicţie.
▲
Exemplul 2.4.1 Să se construiască automatul finit redus pentru automatul finit M din Figura 2.4.1 .
a
Start q0 q5
a
a b
b
q3 b b q2
a
a
b b
q1 q4 Figura 2.4.1
a
▼
Aplicăm algoritmul (A).
Pasul A.1 Toate nodurile sunt accesibile.
Pasul A.2 Construim relaţiile de echivalenţă.
Iniţializare ( 0-nedistinctibilitate ):
0
k0 {q 0 , q 5 },{q 1 , q 2 , q 3 , q 4 }
Analizăm 1-nedistinctibilitatea:
- 18 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
δ(q 0 , a) q 5 0
(chiar egale)
δ(q 5 , a) q 5 1
q 0
q 5 (rămân în aceeaşi clasă)
δ(q 0 , b) q 1 0
δ(q 5 , b) q 4
δ(q 1 , a) q 4 0
δ(q 2 , a) q 2 1 (se vor separa în clase diferite)
q1 q 2
δ(q 1 , b) q 3 0
δ(q 2 , b) q 5
δ(q 1 , a) q 4 0
δ(q 3 , a) q 3 1 (se vor separa în clase diferite)
q1 q 3
δ(q 1 , b) q 3 0
δ(q 3 , b) q 0
Ştiind deja că q1 se separă de q2 şi de q3, trebuie văzut dacă q2 şi q3 rămân totuşi împreună:
δ(q 2 , a) q 2 0
δ(q 3 , a) q 3 1
q 2
q 3 (rămân în aceeaşi clasă de echivalenţă)
δ(q 2 , b) q 5 0
δ(q 3 , b) q 0
Ultima stare neanalizată este q4; din cele văzute deja, aceasta ar putea aparţine fie clasei care conţine pe
q1, sau celei care conţine pe q2 şi q3, sau unei clase noi. În următorul calcul se vede că prima este
varianta valabilă:
δ(q 1 , a) q 4 0
δ(q 4 , a) q 1 1
q1 q 4
δ(q 1 , b) q 3 0
δ(q 4 , b) q 2
Aşadar, s-a obţinut:
1
k 1 {q 0 , q 5 },{q 1 , q 4 },{q 2 , q 3 }
Să analizăm 2-nedistinctibilitatea:
δ(q 0 , a) q 5 1
δ(q 5 , a) q 5 2
q 0 q5
δ(q 0 , b) q 1 1
δ(q 5 , b) q 4
δ(q 1 , a) q 4 1
δ(q 4 , a) q 1 2
q1 q 4
δ(q 1 , b) q 3 1
δ(q 4 , b) q 2
- 19 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
δ(q 2 , a) q 2 1
δ(q 3 , a) q 3 2
q 2
q3
δ(q 2 , b) q 5 1
δ(q 3 , b) q 0
Se observă că nici una dintre clasele 1-nedistinctibile nu s-a împărţit în subclase. Deci relaţia s-a
stabilizat şi s-a obţinut:
2
k2 {q 0 , q 5 },{q 1 , q 4 },{q 2 , q 3 }
1 2
Deoarece , relaţia de echivalenţă este determinată.
Pasul A.3 Automatul redus are 3 stări (corespunzând celor trei clase de echivalenţă) reprezentate de
{q 0 , q 1 , q 2 } şi este descris în Figura 2.4.2 .
q1
b a
Start q0 b
b
a q2
Figura 2.4.2
a
Observăm că modul în care se construiesc relaţiile de k-echivalenţă este destul de complicat. Prezentăm
acum o altă variantă [7] de algoritm de de minimizare.
Exemplul 2.4.1 Să minimizăm automatul definit de următorul tabel al funcţiei de tranzitie, unde stările
finale sunt 1, 2, şi 5:
a b
0 1 2
1 3 4
- 20 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
2 4 3
3 5 5
4 5 5
5 5 5
C1. Toate nodurile sunt accesibile deci trecem la :
C2. Tabelul iniţial este cu toate perechile nemarcate.
0
_
1
_ _
2
_ _ _
3
_ _ _ _
4
_ _ _ _ _
5
C4. (i) Alegem acum o pereche nemarcată, (0,3). Pentru intrarea a, 0 şi 3 trimit automatul în 1 şi 5,
notat (0,3) → (1,5). Deoarece perechea (1,5) nu este marcată, nu vom marca nici (0,3). Cu intrarea b,
avem (0,3) → (2,5), care tot nemarcată estedeci nu vom marca perechea (0,3) nici acum. Continuam să
verificăm perechile şi observăm că pentru perechea (1,5) simbolul a realizează
(1,5) → (3,5), unde perechea (3,5) este marcată., deci marcăm perechea (1,5).
(ii) Acum mai facem o trecere prin tabel fiindcă s -a modificat linia stării 5. Vom obţine:
0
X 1
X _ 2
X X X 3
X X X _ 4
X X X X X 5
Tabel care nu se mai modifică.
C5. Stările echivalente sunt date de perechile nemarcate: (1,2) şi (3,4), deci automatul redus va fi:
a b
0 1 1
1 3 3
3 5 5
5 5 5
- 21 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Această lemă dă o caracterizare a mulţimii regulate şi anume fiind dată o mulţime şi un cuvânt
suficient de lung, se poate găsi un subcuvânt nevid al acestui cuvânt care se poate repeta de oricâte ori
astfel încât cuvântul obţinut prin repetare rămâne în mulţimea regulată dată.
Teorema 2.5.1. Fie L o mulţime regulată . Atunci există o constantă p , astfel încât dacă un cuvânt w L
şi |w|p atunci w poate fi scris w=xyz, unde:
- 0 |y| p
- xyizL, i0.
▼ Demonstraţie:
Fie M=(Q,,,q0,F) un automat finit cu n stări astfel încât T(M)=L. Fie p=n.
Dacă w T(M) şi w n, atunci considerăm configuraţiile succesive ale lui M, în acceptarea lui w;
cel puţin n+1 configuraţii, deci trebuie să fie cel puţin două stări identice p = qi = qj astfel încât:
(q 0 , w) ├* (qi , w) ├* (qj , z)├* (r, λ)
De aici rezultă că w=xw’ şi w’=yz şi deci w=xyz.
Fie j cel mai mic indice pentru care qi = qj de unde şi 0 |y| n.
Dar atunci :
(q 0 , xy i z) ├* (p, y i z) ├* (p, y i-1z) ├* …├* (p, z) ├* (r, λ)
Deci xyizT(M), i0.
Pentru i = 0 :
(q 0 , xz) ├* (p, z) ├* (r, λ) . ▲
Pentru ca lema de pompare dă o caracterizare a mulţimilor regulate ea poate fi folosită şi pentru a
demonstra că limbajele care nu respectă lema de pompare nu sunt regulate.
Exemplul 2.5.1 Folosind teorema de pompare (2.5.1), să se arate că mulţimea aibi i1 nu este o
mulţime regulată.
▼
Presupunem că p astfel încât pentru w L : |w| p, w=xyz, |y|) p şi w’=xyizL.
- dacă y=aj cu ji, atunci ai+jbiT(M) , ceeace contrazice structura limbajului deci este imposibil;
- dacă y=bj, atunci aibj+iT(M) ceeace contrazice din nou structura limbajului deci este imposibil;
- dacă y=ajbk cu ji şi ki, atunci aibkajbiT(M) din nou imposibil
aibi i1 nu e o mulţime regulată pentru că nu resp ectă lema de pompare. ▲
- 22 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Modul de reprezentare al limbajelor de mai sus sugerează un alt mod de descriere al limbajelor
de tip 3 şi anume cu ajutorul expresiilor regulate.
Definiţia 2.7.1 Se numeşte expresie regulată o expresie care poate fi construită cu următoarele reguli:
1. este o expresie regulată indicând mulţimea vidă.
2. λ este o expresie regulată indicând limbajul format doar din cuvântul vid, { λ}.
3. Dacă a VT , atunci a este o expresie regulată indicând limbajul format dintr-un cuvânt
de lungime 1, construit cu simbolul a şi anume limbajul {a}.
4. Dacă e1 şi e2 sunt expresii regulate indicând limbajele L1 şi L2, atunci următoarele
expresii sunt regulate:
a) Alternarea (e1)|(e2), indicând L1 L 2 ;
b) Concatenarea (e1)(e2), indicând L1 L 2 ;
c) Închiderea Kleene (e1*), indicând L1 .
Observaţia 2.6.1 Parantezele ( ) pot fi eliminate în următoarele cazuri:
({ }) = { }
(|) = |
(( )) = ( )
Observaţia 2.6.2
a) Operaţiile de alternare, |, concatenare, ., şi închidere, *, au precedenţa descrescând de la cea mai
mare , , la cea mai mică , | .
b) Toate operaţiile sunt asociative iar alternarea este şi comutativă.
Există un număr de reguli algebrice pentru expresii regulate care pot fi folosite pentru a le transforma
în alte expresii echivalente, conform tabelului următor.
Tabelul 2.6.1
Regulă Descriere
r|s=s|r Alternarea este comutativă
r|(s|t)=(r|s)|t Alternarea este asociativă
(rs)t=r(st) Concatenarea este asociativă
r(s|t)=(rs)|(rt) Concatenarea este distributivă la stânga
(s|t)r=(sr)|(tr) şi la dreapta faţă de alternare
λr=r Cuvântul vid este element neutru pentru concatenare
rλ=r
r*=(r|λ)*
r**=r* Idempotenţa închiderii (produs Kleene)
Operatorii folosiţi pentru scrierea expresiilor regulate sunt analogi cu forma BNF de descriere a
limbajelor (sunt simboluri ale metalimbajului).
Exemplul 2.6.2 Exemple de expresii regulate:
a) Expresia 110 reprezintă limbajul format dintr-un singur cuvânt {110}.
b) Expresia 0|1 reprezintă limbajul {0,1}.
c) Expresia 1* reprezintă limbajul {1i | i=0,1,2,…}.
d) m n
a*b* reprezintă limbajul a b m, n 0 ;
(ab)* reprezintă limbajul (ab)
m
e) m0 ;
f) (aa|ab|ba|bb)* reprezintă mulţimea şirurilor peste {a,b} de lungime pară.
Vom defini în continuare egalitatea a două expresii regulate.
Definiţia 2.6.3 Două expresii regulate sunt egale (=) sau echivalente dacă ele reprezintă acelaşi limbaj.
Exemplul 2.6.4 00* = 000*|0 (ele reprezintă acelaşi limbaj, al şirurilor peste alfabetul {0} formate din
cel puţin un simbol 0).
- 23 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Exemplul 2.6.5 Elementele unui limbaj de programare pot fi definite atât în termenii gramaticilor
regulate cât şi în cei ai expresiilor regulate. Spre exemplu, un identificator format din litere mici şi cifre,
începând cu o literă, poate fi descris de gramatica regulată ale cărei reguli sunt:
S aA | bA | cA | ... | zA | a | b | c | ... | z
A aA | bA | cA | ... | zA | 0A | 1A | ... | 9A | a | b | c | ... | z | 0 | 1 | ... | 9
şi de expresia regulată:
(a|b|c| . . . |z) (a|b|c| . . . |z|0|1| . . . |9)*
Putem folosi <literă> pentru a scurta reprezentarea lui a | b | c | ... | z şi <cifră> pentru 0 | 1 | ... | 9 ,
expresia putând fi scrisă în acest caz astfel:
<literă>(<literă>|<cifră>* .
Expresiile regulate pot fi utilizate în ecuaţii şi deci pot fi evaluate. De exemplu, A=aA|a este o
ecuaţie cu o expresie regulată validă.
Pentru a prezenta o metodă de a converti o gramatică regulată într-o expresie regulată,
m n
considerăm gramatica regulată care generează limbajul a ba n, m 1 :
S aS
S aB
B bC
C aC
C a
Înlocuind operatorul de rescriere "" cu unul de echivalenţă (“=”) şi combinând toate regulile
care au acelaşi membru stâng într-o singură expresie prin folosirea operatorului de alternare, gramatica
poate fi scrisă ca o mulţime de ecuaţii:
S aS | aB
B bC
C aC | a
Prin rezolvarea acestui sistem de ecuaţii, se obţine o expresie regulată cu un singur simbol
terminal, care reprezintă acelaşi limbaj ca şi cel generat de gramatica regulată.
Să rezolvăm mai întâi ecuaţiile definite doar prin ele însele. În acest sistem, ecuaţia pentru C are
soluţia: C= a*a. Verificăm prin înlocuirea acestei soluţii în ecuaţia pentru C. Se obţine
a*a = a a*a | a,
sau altfel scris
a*a = (a a* | λ) a,
dar a a* | λ = a* şi deci se verifică a*a = a*a.
Soluţia pentru C poate fi înlocuită în a doua ecuaţie, obţinând sistemul:
S a(S | B)
B ba * a
Apoi B poate fi înlocuit în prima ecuaţie
S a(S | ba * a)
sau expresia echivalentă:
S = aS | aba*a
şi se vede imediat că o soluţie a acestei ecuaţii este:
S= a*aba*a
care este o expresie regulată reprezentând acelaşi limbaj ca şi limbajul generat de gramatica iniţială.
Prezentăm în continuare algoritmul de trecere de la o gramatică regulată la o expresie regulată.
Algoritm de transformare [EXPRESII REGULATE]
- 24 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 25 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
S aA
S a
A aA
A bB
A a
B bB
B c
▼
S aA | a
Pas 1. A aA | bB | a
B bB | c
Pas 2. Nu este necesar
Pas 3. i 3 B b * c
A aA | bb * c | a
i2
A {a}bb * c | {a}a
S a(a * bb * c | a * a) | a
i1
S aa * bb * c | aa * a | a
Pas 4. Soluţie: S= aa*bb*c | aa*. Limbajul reprezentat de această expresie regulată este
a n b m c | n, m 1
a n | n 1 .▲
- 26 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
S aA
i 1
S aa * ab(cb) * c
Pas 4. Soluţie: S = aaa*b(cb)*c sau, echivalent, S = aaa*bc(bc)*. Limbajul reprezentat de această
n m
expresie regulată este a (bc) | n 2, m 1 . ▲
§ 2.8 Echivalenţa dintre expresiile regulate şi automatele finite nedeterministe
Expresiile regulate sunt importante pentru construirea unui generator de analizor lexical, care
foloseşte ca intrare expresii regulate.
Vom prezenta în cele ce urmează metode de generare a unui acceptor cu număr finit de stări
dintr-o expresie regulată sau generarea unei expresii regulate dintr-un automat finit nedeterminist. Vom
arăta deci că expresiile regulate şi mulţimile acceptate de automate finite nedeterministe sunt
echivalente, deci că mulţimile regulate şi expresiile regulate reprezintă aceleaşi mulţimi. Pentru
construcţiile ce vor urma, este necesară următoarea definiţie.
Definiţia 2.9.1 Un automat finit nedeterminist cu λ-tranziţii este un ansamblu M=(Q, Σ, δ, q0, F) ale
cărui componente au aceleaşi semnificaţii ca la un automat finit oarecare, doar că funcţia de tranziţie
este definită astfel:
δ : Q Σ λ P(Q) .
Avem o λ-tranziţie între două configuraţii (p, w) ├ (q, w) dacă şi numai dacă q δ(p, λ) ,
p Q, w Σ . În reprezentarea grafică, o astfel de tranziţie, practic fără citirea benzii de intrare la acel
pas, arată astfel:
λ
p q
Figura 2.9.1
Teorema 2.8.1. Mulţimea cuvintelor recunoscute de automatele finite cu λ-tranziţii este aceiaşi cu
mulţimea cuvintelor recunoscute de automatele finite nedeterministe.
▼Demonstratie
Se arată în [5] că automatele finite nedeterministe cu λ-tranziţii sunt echivalente cu cele fără λ-tranziţii.
Vom da aici un exemplu de utilizare a homomorfismului pentru a da o altă demonstraţie [7] a acestei
afirmaţii. Fie automatul finit cu λ-tranziţii M = (Q, Σ, δ, q0, F), unde considerăm λ un simbol care nu
este în Σ. Considerăm acum automatul finit nedeterminist M’, peste alfabetul Σ{λ}:
M’ = (Q, Σ{λ}, δ, q 0, F) ,
Definim acum acceptarea pentru automatul cu cu λ-tranziţii după cum urmează: pentru orice x
din Σ*, automatul M acceptă x dacă există y în (Σ{λ})* astfel încât:
- M’ acceptă y relativ la definiţia acceptării unui automat finit nedeterminist;
- x este obţinut din y prin ştergerea tuturor apariţiilor simbolului λ; atunci x = h(y), unde:
h: (Σ{λ})* → Σ*,
este homomorfismul definit de :
h(a) = a pentru a
h(λ) = λ.
În acest fel L(M) = h(L(M’)). Dar mulţimea L(M’) este regulată şi conform teoremei 2.9.11 va
rezulta că şi L(M) este o muţime regulată.▲
- 27 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
cu i noua stare iniţială şi f noua stare finală. Automatul va recunoaşte limbajul {a}.
3. dacă N(s) şi N(t) sunt AFN pentru expresiile regulate s şi t atunci:
a) Pentru expresia regulată s|t construim următorul automat N(s|t)
N(s)
start f
i
N(t)
cu i noua stare iniţială a lui N(s|t) şi f noua stare finală. Avem _tranziţii de la i la fostele stări iniţiale
ale lui N(s) şi N(t) şi _tranziţii de la fostele stări finale ale lui N(s) şi N(t) la f. Astfel, automatul N(s|t)
recunoaşte L(s) U L(t).
b) Pentru expresia regulată st construim următorul automat N(st)
N(s) N(t)
start
i f
unde i, starea iniţială pentru N(s) a devenit starea iniţială pentru N(st) şi f starea finală pentru N(t) a
devenit starea finală pentru N(st). Starea finală pentru N(s) este identificată cu starea iniţială pentru N(t)
şi noua stare creată în N(st) îşi pierde statutul de stare iniţială sau finală. Astfel, automatul N(st)
recunoaşte limbajul L(s)L(t).
c) Pentru expresia regulată s* construim automatul N(s*)
start
i N(s) f
- 28 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
cu i noua stare iniţială şi f noua stare finală pentru N(s*). Stările iniţială şi finală pentru N(s) îşi pierd
acest statut. Astfel automatul N(s*) recunoaşte limbajul L(s)*.
Exemplul 2.11. Să folosim algoritmul 2.3. pentru a construi AFN N(r) din expresia regulată
r=(a|b)*abb. Arborele sintactic al expresiei regulate date este:
..
..
b
..
b
* a a
b
a bb
Parcurgând acum arborele vom avea:
Pentru simbolul a avem: start a
2 3
Pentru simbolul b avem: start b
4 5
Pentru a|b avem:
2 3
start a
1 6
b
4 5
Pentru (a|b)* avem:
2 a
3
start 6 7
0 1
b
4 5
a
2 3
6 7 a 8 b 9 b
start 0 1 10
b
4 5
- 29 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Teorema 2.8.1 Fiind dată o expresie regulată R, există un automat F cu număr finit de stări,
nedeterminist şi cu λ-tranziţii, care acceptă limbajul generat de R.
▼ Demonstraţie:
- se face prin inducţie în raport cu fiecare din cele trei operaţii ale expresiilor regulate. Construcţia
formală se deduce din diagramele de stare definite mai sus. ▲
Teorema 2.8.2. Fiind dat un automat cu număr finit de stări, determinist, care acceptă limbajul L, există
o expresie regulată care reprezintă limbajul L.
▼ Demonstraţie:
- se aplică algoritmul de transformare a automatului finit determinist într-o gramatică de tip 3, după
care se aplică acesteia algoritmul de determinare a expresiei regulate echivalente. ▲
Vom studia o serie de proprietăţi ale limbajelor regulate dintre care o parte importantă o
formează proprităţile de închidere ale familiei limbajelor rwegulte la operatiile cu limbaje introduce în §
1.3. Pentru că limbajele de tip 3 pot fi generate de gramatici de tip 3, recunoscute de automatele finite
sau reprezentate de expresii regulate, în demonstraţii vom folosi oricare dintre aceste
α VN(2) VT(2) .▲
*
- 30 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 31 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
A1 → a 2A2
.............
An-2 → a n-1An-1
An-1 → a n
generează cuvântul wi adică:
*
Swi
G3
Teorema 2.9.6. Clasa mulţimilor regulate este închisă în raport cu operaţia de oglindire.
▼ Demonstraţie:
Fie un automat finit M (Q, Σ, δ, q 0 , F) . Considerăm mulţimea regulată L=T(M).
Definim automatul finit nedeterminist M’ astfel încât să funcţioneze “invers” faţă de M:
M (Q {q 0 }, Σ, δ, q 0 , F) , unde F {q 0 } dacă λ T(M) sau F {q 0 , q 0 } dacă λ T(M)
având tranziţiile:
p δ ( q 0 , a) dac ă δ (p, a) F
p δ (q, a) dac ă δ (p, a) q
~
Este uşor de demonstrat acum că T(M ) L (vezi şi definiţia oglindirii unui limbaj, în capitolul I,
paragraful § 1.3). ▲
Teorema 2.9.7 Clasa mulţimilor regulate este închisă în raport cu operaţia de concatenare .
▼ Demonstraţie:
Fie M 1 (Q1 , Σ 1 , δ1 , q 1 , F1 ) şi M 2 (Q 2 , Σ 2 , δ 2 , q 2 , F2 ) două automate finite deterministe.
Ele acceptă mulţimile regulate T(M1), respectiv T(M2).
Presupunem că Q1 Q 2 (dacă nu, se face o simplă redenumire a stărilor fiecăruia dintre ele, de
exemplu prin renumerotare). Putem presupune că Σ 1 Σ 2 Σ (dacă nu, creăm Σ Σ 1 Σ 2 ).
Construim automatul finit nedeterminist M 3 care acceptă concatenarea T(M 1 )T(M 2 ) după cum
urmează: M 3 (Q1 Q 2 , Σ, δ 3 , q 1 , F3 )
p δ 3 (q, a) , dac ă q Q 1 , p Q 1 \ F1 ş i δ 1 (q, a) p
cu {q 2 , p} δ 3 (q, a) , dac ă q Q 1 , p F1 ş i δ 1 (q, a) p
p δ 3 (q, a) , dac ă q, p Q 2 ş i δ 2 (q, a) p
F2 , dac ă λ L 2
şi F3
F2 F1 , dac ă λ L 2
Automatul finit M3 astfel construit va simula pe M1 până când acesta va intra într-o stare finală, moment
în care M3 poate intra în starea iniţială a lui M2 sau poate continua să simuleze M1. Atunci când M3
ajunge în starea iniţială a lui M2, îl va simula pe acesta din urmă până la oprire.
Se demonstrează uşor că T(M 3 ) T(M 1 ) T(M 2 ) . ▲
- 32 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Teorema 2.9.8 Clasa mulţimilor regulate este închisă în raport cu închiderea Kleene.
▼ Demonstraţie:
Fie M (Q, Σ, δ, q 0 , F) un automat finit determinist acceptând limbajul regulat L=T(M).
Construim automatul finit nedeterminist:
M (Q {q 0 }, Σ, δ, q 0 , F {q 0 })
Dac ă δ (q 0 , a) p F, atunci δ ( q 0 , a) {p, q 0 }
Dac ă δ (q 0 , a) p F, atunci δ ( q 0 , a) {p}
Dac ă δ (q, a) p F, atunci δ (q, a) {p, q 0 }
Dac ă δ (q, a) p F, atunci δ (q, a) {p}
Se adaugă astfel o nouă stare iniţială q 0 pentru că, dacă λ trebuie să aparţină lui T(M)*, nu putem forţa
q0 să aparţină lui F 3 căci M ar putea intra în q 0 şi pe parcursul acceptării unui cuvânt când q 0 F .
*
a) Dacă x L atunci x λ şi δ(q 0 , λ) q 0 F3 sau x=x1x2…xn cu x i L , iar în acest caz sunt
posibile situaţiile:
a.1) ( q 0 ,x 1x2…xn)├* (p, x 2…xn), p F (pentru că x 1 L ) dar în continuare nu e sigur că
automatul va conduce la acceptare (pornind din starea p cu şirul rămas).
Alegem atunci a doua variantă:
a.2) ( q 0 ,x1x2…xn)├* (q0,x2…xn)├* (q0,x3…xn)├*…├*(q0,xn) ├ (r,λ) unde r F .
Aşadar x T(M ) .
b) Dacă x T(M ) şi x=a1a2…am , atunci există stările q 1,q2,…,qm astfel încât:
q 1 δ ( q 0 , a 1 )
q i 1 δ ( q i , a i 1 )
q m F
ş i q 1 , q 2 ,..., q m Q
Atunci, pentru un anume i avem:
q q 0
sau i 1 sau δ(q i , a i 1 ) q i 1 .
δ (q i , a i 1 ) F
Deci x poate fi scris în forma x=x 1x2…xn, unde x j L ( δ(q 0 , x j ) F ). ▲
Teorema 2.9.9 Clasa mulţimilor regulate este închisă relativ la substituţia cu mulţimi regulate.
▼ Demonstraţie:
Fie R Σ o mulţime regulată şi pentru fiecare a Σ fie R a Δ o mulţime regulată.
Fie f : Σ Δ o substituţie regulată, f(a)=Ra. Pentru ca R şi Ra, pentru fiecare a din R, sunt mulţimi
regulate rezultă că există câte o expresie regulată care să le reprezinte, expresii care conţin un număr
finit de opratori *, . ,sau |.
Se observă ca substituţia unei reuniuni, a unei concatenări sau a unui produs Kleene este reuniunea,
concatenarea, respectiv produsul Kleene al substituţiilor:
f(R 1 R 2 ) f(R 1 ) f(R 2 )
f(R 1 R 2 ) f(R 1 ) f(R 2 )
f(R) f(R )
- 33 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Dar reuniunea concatenarea şi respectiv produsul Kleene sunt reprezentate de cei trei operatori ai unei
expresii regulate: *, . , | . Deci şi pentru două expresii regulate e 1 si e2 vom avea:
f(e1 | e 2 ) f(e1 ) | f(e2 )
f(e1 e 2 ) f(e1 ) f(e2 )
f(e) f(e )
Folosind inducţia relativ la numărul de operatori folosiţi de expresia regulată rezultă că: dacă r este o
expresie regulată atunci f(r) este tot o expresie regulată, ceea ce trebuia demonstrat. ▲
În capitolul I (paragraful § 1.3) s-a definit operaţia de homomorfism. Să introducem şi inversa acesteia:
Definiţia 2.9.1 Definim homomorfismul invers astfel:
h 1 (L) x h(x) L
h 1 (w) x h(x) w
h 1 (w) x h(x) w
h(a) 1
▼ Demonstraţie:
Deoarece h(a) e un caz particular de substituţie, Teorema 2.9.10 justifică prima cerinţă a acestei
teoreme.
Fie L un limbaj de tip 3 şi M automatul finit care recunoaşte L = T(M). Construim un automat
finit M’ pentru h -1(L) care simulează în controlul său finit funcţionarea lui M corespunzător cu Fig.2.9.1.
h(ai)
Fig.2.9.1
CF pt.M
generează pentru simbolul de intrare citi cuvântul h(ai) într-o zonă de memorie din controlul său finit.
Apoi efectuează o serie de λ-tranziţii în şirul de intrare, adică nu mai citeşte nici un simbol de intrare, şi
în acest timp simulează acţiunea automatului M în controlul său finit. Când M termină de citit h(ai) şi
starea sa este o stare finală (adică M acceptă h(ai)) atunci M’ işi goleşte zona sa de memorie în care
reprezenta h(ai) şi citeşte un nou simbol de intrare(această gilire se poate face şi pe parcurs reţinând în
zona de memorie numai partea necitită din h(ai)). M’ continuă de această manieră pînă când nu mai are
nici un simbol de intrare de citit şi zona sa de memorie este goală. Evident M’ termină de citit şirul său
de intrare numai dacă M a acceptat fiecare h(ai) pentru i de la 1 la n.
Pentru formalizare vom considera fiecare stare a lui M’ de forma [α,q]unde α este partea necitită din
h(ai) iar q este o stare a lui M. Funcţia de tranziţie, ’, a lui M’ se defineşte astfel:
- 34 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
’([λ,q],a) = [h(a),q] M’ generează h(a), în memoria lui ’([bα,q], λ) = [α, (b,q)] M’ simuleză,
funcţionarea lui M pe un sufix al lui h(a), în controlul său finit. ▲
§ 2.10 Exerciţii
1. Să considerăm automatele finite nedeterministe M 1 şi M2, ale căror funcţii de tranziţie δ1 şi δ2
sunt definite în următoarele tabele:
Σ Σ
δ1 δ2
0 1 0 1
q0 q0,q1 q0 p q,s q
q1 q2 q2 q r q,r
Q1 Q2
q2 q3 - r s p
q3 q3 q3 s - p
2 Să considerăm automatul finit din figura următoare. El acceptă cuvintele cu număr par de 0 şi
număr par de 1. Să se construiască un automat finit care să accepte cuvintele cu:
a. Număr par de 0 şi impar de 1;
b. Număr par de 1 şi impar de 0;
c. Număr impar de 0 şi impar de 1;
0
Start q0 q1
0
1 1
1 1
0
q2 q3
0
- 35 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
5. Pornind de la automatul finit din exerciţiul 2 să se construiască o gramatică de tip 3 care să genereze
limbajul T(M).
7. Se consideră gramatica G = ({S,A,B}, {a,b}, S, P) unde mulţimea P este formată din regulile:
S → aA, S → bB, A → aA, A → aB, B → bA, B → b
Să se construiască:
a. Un automat finit care să recumoască L(G);
b. O expresie regulată care să reprezinte L(G).
8. Să se construiască câte o expresie regulată peste alfabetul {0,1} pentru fiecare dintre limbajele
următoare:
a. Muţimea tuturor cuvintelor care conţin 1101;
b. Muţimea tuturor cuvintelor care nu conţin 101;
c. Mulţimea cuvintelor peste alfabetul {0,1} astfel încât să conţină trei de 0 separaţi de un număr
impar de 1;
d. Mulţimea cuvintelor peste alfabetul {0,1} pentru care fiecare apariţie a lui 1 este urmată de cel
puţin două apariţii ale lui 0:
e. Mulţimea cuvintelor peste alfabetul {0,1} care se termină în 111;
f. Mulţimea cuvintelor peste alfabetul {0,1} care conţin cel puţin două apariţii consecutive ale lui 0.
9. Să se construiască câte un automat finit pentru fiecare dintre limbajele descries de următoarele
expresii regulate:
a. (11|0)* (00|1)*;
b. (1|01|001)* (0|00)*;
c. (00|11|10|01)*.
10. Să se minimizeze automatele finite de la exerciţiul 3 a, b, c, d, e.
- 36 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Capitolul III este dedicat limbajelor de tip 2 din ierarhia lui Chomsky, numite limbaje
independente de context. Se defineşte noţiunea de arbore de derivaţie, noţiune foarte importantă în
teoria compilării, iar apoi se introduc formele normale: Chomsky şi Greibach, pentru gramaticile
independente de context. Se introduce aici un nou tip de automat, numit automat push-down
nedeterminist, şi se demonstrează că acest automat recunoaşte limbajele independente de context. Se
studiază proprietăţile limbajelor independente de context t. Capitolul III se încheie cu probleme propuse
spre rezolvare.
Limbajele independente de context sunt generate de gramaticile de tip 2 din ierarhia lui
Chomsky, adică gramatici de forma: G = ( VN, VT, S, P),unde mulţimea regulilor P este de forma:
A α,, cu A variabilă din V N, iar α un şir format din variabile şi terminale, adică α (VN V T)*.
Vom prezenta o metodă vizuală de descriere a oricărei derivaţii într-o gramatică I.D.C sub forma
unui arbore de derivaţie.
Definiţia 3.1.1 Un graf de tip arbore este un graf cu următoarele proprietăţi:
i) există un nod în care nu intră nici un arc, numit rădăcină;
ii) în oricare alt nod intră exact un arc;
iii) există un drum de la rădăcină către oricare nod (graf conex);
iv) nodurile din care nu pleacă nici un arc se numesc frunze.
Definiţia 3.1.2 Fie G= ( VN,VT,S,P) o gramatică I.D.C. Un arbore de derivaţie în G este un arbore în
care:
i) fiecare nod este etichetat cu un simbol din VN VT ;
ii) eticheta rădăcinii este S;
iii) dacă nodul A are cel puţin un descendent atunci el are o etichetă din VN;
iv) dacă A1, A2, A3,….,A k sunt toţi descendenţii direcţi ai lui A în ordine de la stânga spre dreapta
atunci : A A1A2…Ak este o regulă din P.
A A1A2…Ak
A1 A2 … Ak
Exemplul 3.1.1
▼ Fie G = ({S,A,B},{a,b},S,P), unde mulţimea P conţine regulile:
- 37 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
S aAB
S a
S
S bBA
S b
A aS
a A B
B bS
a S b S
Pentru această gramatică, un arbore
de derivaţie având frunzele a,a,b,b
şi a este cel din figura 3.1.1. b a
▲
Figura 3.1.1.
Definiţia 3.1.3 Se numeşte rezultat al unui arbore cuvântul format din etichetele frunzelor citite de la
stânga spre dreapta.
Exemplul 3.1.2 Rezultatul arborelui de derivaţie din figura 3.1.1. este cuvântul aabba.
*
Vom arăta mai târziu că dacă α este rezultatul unui arbore de derivaţie, atunci S α .
G
Definiţia 3.1.4 Se numeşte subarbore al unui arbore graful format dintr-un nod împreună cu toţi
descendenţii săi.
Exemplul 3.1.3
▼
A
a S
Figura 3.1.2.
ab)▲
Teorema 3.1.1 Fie G =(VN,VT,A,P ) o gramatică I.D.C. Atunci pentru α λ , (S α ) există un
G
arbore de derivaţie în gramatica G al cărui rezultat este α .
▼ Demonstraţie:
Vom demonstra că dacă GA=(VN,VT,A,P) atunci pentru orice A în VN avem (A α ) dacă şi
GA
a) Presupunem că α este rezultatul unui arbore de derivare în gramatica GA; demonstrăm prin inducţie,
în raport cu numărul de noduri care nu sunt frunze , că A α :
GA
- 38 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
a1) Dacă există un singur nod care nu e frunză atunci arborele arată ca în
figura 3.1.3. Rezultă că α =A1A2…Ak şi, din definiţia arborelui de derivaţie, avem A α P, deci
A1 A2 … Ak Figura 3.1.3 .
Aα .
a2) Presupunem că α este rezultatul unui arbore A cu n noduri care nu sunt frunze şi că rezultatul
anterior este valabil pentru arbori cu cel mult n-1 noduri care nu sunt frunze.
Considerăm descendenţii direcţi ai lui A: A1,A2,…,Ak , deci (A A1….Ak P).
Dacă Ai nu e o frunză, rezultă că Ai este o variabilă, rădăcină a unui subarbore cu rezultatul α i şi
cu cel mult n-1 noduri care nu sunt frunze.
Dacă Ai este o frunză, punem A i = α i.
Se observă că dacă j < i atunci nodul Aj şi toţi descendenţii săi se află la stânga lui Ai şi a tuturor
descendenţilor săi.
Rezultă că α = α 1 α 2…… α k .
Deoarece din ipoteza inducţiei α i este rezultatul unui subarbore cu rădăcina Ai şi cu cel mult n-1
*
noduri care nu sunt frunze, rezultă că (A i α i).
G
Deci A A1A2…Ak α1α 2 ...α k α ,
G G
*
adică (A α ).
G
b) Presupunem acum că A α . Vom arăta că există un arbore de derivaţie cu rezultatul α în GA, prin
GA
A1 A2 … Ak
Figura 3.1.4
- 39 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
b2) Presupunem că A α în n paşi şi că pentru orice derivaţie a lui β cu numărul de paşi mai
GA
*
mic decât n există o derivaţie cu rezultatul β . Fie primul pas al derivaţiei A α de forma
A A1A2…Ak. Atunci orice simbol al lui α este sau unul dintre Ai sau derivat dintr-un Ai în cel mult n-1
paşi. Deci, există subarborii T1,T2,..,T k de rădăcini A1,A2,…,A k, cu rezultatele α 1 , α 2 ,..., α k atunci când
Ai α i .
GA
Deci dacă la arborele din Figura 3.1.4 adăugăm subarborii Ti, obţinem:
A1 A2 … Ak
T1 T2 Tk
α1 α2 … αk F ig u r a 3 .1 .5
Rezultă că arborele din Figura 3.1.5 (în care câte un arbore Tj poate fi vid, dacă A j VT) are
rezultatul format din rezultatele subarborilor T1, …,T k în ordine de la stânga α 1α 2 ....α k α . ▲
Se poate arăta că pentru orice gramatică independentă de context, există o gramatică echivalentă în care
regulile au forme particulare, forme uşor de utilizat în demonstraţii.
Teorema 3.3.1 (Forma normală Chomsky) Orice limbaj I.D.C. poate fi generat de o gramatică în care
toate regulile sunt de forma A BC sau A a, cu A,B,C VN şi a VT.
▼Demonstraţia se gaseste in [4]▲
Teorema 3.3.2 (Forma normală Greibach) Fiecare limbaj I.D.C. poate fi generat de o gramatică
pentru care fiecare regulă este de forma A aα cu A VN, a VT, α VN ( α un şir de variabile,
posibil vid).
▼Demonstraţia se gaseste in [4]▲
Teorema 3.4.1 (lema de pompare Bar-Hillel ) Fie un limbaj I.D.C., notat L. Atunci există constantele
p şi q, depinzând de L, astfel încât: dacă z L cu | z | p , atunci z poate fi scris sub forma:
- 40 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
| vwx | q
z = uvwxy, unde astfel încât pentru fiecare întreg i 0 ,
| vx | 0 (v, x nu sunt ambele λ)
uv i wx i z L .
▼Demonstraţie:
Fie G=(VN,VT,S,P) o gramatică I.D.C. în formă normală Chomsky, pentru L. Dacă G are k
variabile, atunci fie p=2k-1 şi q=2k. Este uşor de observat că, pentru o gramatică în formă normală
Chomsky, dacă un arbore de derivaţie nu are drumuri de lungime mai mare decât j, atunci cuvântul
derivat nu este mai lung decât 2j-1, această valoare reprezentând maximul de frunze într-un astfel de
arbore (binar, datorită formei Chomsky).
Deci, dacă z L şi |z| p , atunci arborele unei derivaţii a lui z în gramatica G conţine un
B A n1 B A
b B C b a
b B A n2
b a
z3=bb z 2=a z 4=λ z=bbbaba
b) n1 c)
A
A n2
B C
a
b B A n2
b a Figura 3.4.1
drum de lungime mai mare decât k. Să considerăm cel mai lung drum, R, cu lungimea mai mare decât k.
Atunci există două noduri n1 şi n2 în R astfel încât:
n1 şi n2 sunt etichetate identic;
n2 este subarborele lui n1;
subarborele n1 nu are drumuri de lungime mai mare decât k+1.
Pentru a arăta că n1 şi n2 pot fi astfel găsite, parcurgem drumul R de la frunză înspre rădăcină.
Din primele k+2 noduri, numai o frunză are ca etichetă un simbol terminal. Cele k+1 noduri rămase nu
pot avea etichete distincte.
- 41 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Subarborele T1, cu rădăcina n1, reprezintă derivaţia unui subcuvânt de lungime cel mult 2k (şi
deci de lungime cel mult q), pentru că în T1 nu există nici un drum de lungime mai mare decât k+1, din
cauză că R a fost drumul cel mai lung.
Fie z1 rezultatul subarborelui R. Dacă T2 este subarborele generat de nodul n 2 şi z2 este rezultatul
lui T2, atunci z1 se poate scrie z3z2z4. În plus, z3 şi z4 nu pot fi ambele λ, pentru că prima regulă folosită în
derivaţia lui z1 e de forma A BC , unde B,C VN . Subarborele T 2 trebuie să fie completat în interior
sau de subarborele lui B sau de subarborele lui C.
* *
Avem atunci A z 3 Az 4 z 3 z 2 z 4 , unde | z3z 2 z 4 | q . De aici rezultă că
G G
* *
A z i3 Az i4 z i3 z 2 z i4 pentru i 0 .
G G
Observaţia 3.4.1 Teorema 3.4.1 se poate aplica pentru a demonstra că L={akbkck | k 0} nu este I.D.C.
▼Demonstraţie:
Să presupunem, prin absurd, că limbajul L este I.D.C., ceea ce ar însemna că sunt îndeplinite
consecinţele Teoremei 3.4.1., care permit "pomparea" anumitor subcuvinte din interiorul unor cuvinte
suficient de lungi ale limbajului L.
Se observă, însă, că indiferent de lungimea cuvintelor alese din L, ele fiind de forma z = akbkck
(k 0), nu este posibilă alegerea vreunei descompuneri de forma z=uvwxy cu proprietăţile specificate în
i i
teorema amintită şi astfel încât uv wx y L .
Să urmărim cazurile posibile. Fie m, n, p 0 , k 0). Atunci cuvintele v, w şi x pot fi de una
din următoarele forme:
z=u(vwx)y v w x i i
Motiv uv wx z L
- 42 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
unul din cele trei simboluri), iar ordinea caracterelor în cuvânt este strict alfabetică (deci nu se pot
multiplica subcuvinte formate din "îmbinarea" a două simboluri distincte, ab sau bc, căci se amestecă).
Rezultă că {akbkck | k 0} L1 L2 deci clasa limbajelor independente de context este diferită de
cea a limbajelor dependente de context: L1 L2 .▲
Teorema 3.4.3 Fiind dată o gramatică I.D.C., G1, se poate găsi o gramatică echivalentă G2, pentru
care, dacă A este o variabilă în G2 alta decât simbolul iniţial, atunci există o infinitate de cuvinte
iniţiale derivate din A.
▼Demonstraţie:
Dacă L(G1) este finit atunci L={u1,u2,…,un} şi putem considera G2 cu mulţimea regulilor
P2={S ui | i=1,n}.
Dacă L(G1) este infinit, G1=(VN,VT,S,P 1), considerăm pentru fiecare A VN gramatica
GA=(VN,VT,S,P 1). Prin Teorema 3.4.2 se poate determina dacă L(GA) este finit sau nu.
Presupunem că A1,A2,…,A k sunt variabilele care generează o infinitate de cuvinte şi că
B1,B2,…,B m sunt variabilele care generează un număr finit de cuvinte.
Creem mulţimea de reguli P2 din P1 în modul următor:
Presupunem că C0 C1C2…Cr este o regulă din P1, iar C0 {A1,A2,…,A k}. Atunci regula
C0 u1u2…un este o regulă din P2, unde:
1. Dacă Ci VT ui=ci
2. Dacă Ci {A1,A2,…,A k} ui=ci
3. Dacă Ci {B1,B2,…,B m} ui este unul din cuvintele (în număr finit) generate de ci (ci ui).
Rezultă că P2 nu conţine nici o regulă cu Bi la dreapta.
' '
Considerăm acum G2=( VN ,VT,S,P 2) unde VN ={A1,A2,…,A k}. Observăm că S trebuie să aparţină
'
lui VN pentru că L(GS) este infinit.
*
a) Evident, dacă ( α β ) atunci (α β ) deci L(G1) L(G2).
G2 G1
b) Pentru a demonstra L(G2) L(G1), demonstrăm prin inducţie asupra numărului de paşi din derivaţie
*
că dacă A i w 1 i k unde w V atunci Ai w.
T
G1 G2
Rezultatul este evident pentru o derivaţie într-un pas. Presupunem că este adevărat pentru o
derivaţie în cel mult j paşi. Considerăm o derivaţie în j+1 paşi şi presupunem că prima regulă folosită
este Ai C1C2…Cr .
Putem astfel scrie w sub forma w1w2…wr unde Ci wi , 1 i r.
G1
- 43 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Vom introduce un nou tip de dispozitiv care să accepte limbajele I.D.C., numit automat push-
down.
Un automat push-down are, pe lângă o bandă de intrare, şi o stivă (o listă LIFO). Într-o astfel de
stivă, intrarea şi ieşirea unui simbol se face numai la capul stivei. Când un simbol intră în stivă, simbolul
care anterior a fost capul stivei devine al doilea, cel care a fost al doilea devine al treilea ş.a.m.d. În mod
similar, când un simbol este scos din stivă, simbolul care anterior acestei scoateri era al doilea, ajunge în
capul stivei, cel care era al treilea devine al doilea ş.a.m.d.
O astfel de stivă se poate compara cu un teanc de farfurii în care se ridică sau se pune o farfurie
deasupra teancului.
Exemplul 3.5.1 Să utilizăm o stivă de "farfurii", cuplată cu un control finit pentru a recunoaşte o
mulţime neregulată.
▼ Fie limbajul I.D.C. L={ wcw ~ | w {0,1} }, care nu este regulat (posibil de demonstrat acest lucru
folosind lema de pompare) şi fie gramatica
G=({S},{0,1,c},S,P)
unde mulţimea regulilor este P= {S 0S0, S 1S1, S c} .
Pentru a recunoaşte limbajul L, vom utiliza un control finit cu două stări q1 şi q2 şi o memorie
push-down pe care vom plasa "farfurii" albastre, roşii şi verzi. Dispozitivul va opera după următoarele
reguli:
1) Maşina porneşte cu o farfurie roşie pe stivă şi cu controlul finit în starea q 1.
2) Dacă simbolul de intrare este 0 şi starea este q1, dispozitivul plasează o farfurie albastră pe stivă,
iar dacă simbolul de intrare este 1 şi starea q 1, atunci plasează o farfurie verde pe stivă şi, în ambele
cazuri, rămâne în starea q 1.
3) Dacă intrarea este c şi starea q 1, îşi schimbă starea în q 2 fără a acţiona asupra stivei.
4) Dacă intrarea este 0, starea q 2 şi pe stivă se află o farfurie albastră, scoate farfuria şi rămâne în q 2,
iar dacă este 1, starea q 2 şi pe stivă este o farfurie verde, scoate farfuria şi rămâne tot în q 2.
5) Dacă dispozitivul este în starea q2 şi pe stivă este o farfurie roşie, scoate farfuria indiferent de
intrare.
6) În alte situaţii dispozitivul nu face nici o mişcare.
Dispozitivul acceptă şirul de intrare dacă, după citirea lui, stiva devine goală. ▲
Vom defini un automat push-down ca fiind un dispozitiv format din: bandă de intrare, control
finit şi memorie push-down (stivă), precum în Figura 3.5.1..
ai … Banda de intrare
CONTROL
FINIT (Q) Z Capul stivei
Z0
Figura 3.5.1
Dispozitivul este nedeterminist, având un număr finit de şanse de mişcare în fiecare situaţie.
Mişcările vor fi de două tipuri:
- 44 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 45 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
0, Z0 → AZ0 0, A → AA
q p
q Figura 3.2.2
λ, Z0 → λ 1, A → λ
s r 1, A → λ
r p
p
λ, Z0 → λ q
q *
Definiţia 3.5.2 O configuraţie instantanee este o pereche (q, γ) , unde q Q şi γ , unde cel mai
din stânga simbol al lui γ este vîrful stivei push-down, iar γ reprezintă conţinutul stivei.
Dacă a Σ {λ} , γ, β Γ * , Z Γ şi (p, β) δ(q, a, Z) , atunci scriem:
a : (q,Zγ)├ M (p,βγ) (Intrarea "a" trece automatul M din (q,Zγ) în (p,βγ).)
Dacă pentru fiecare a 1 ..., a n Σ {λ} , q 1 ,..., q n 1 Q şi şirurile γ1 ,..., γ n 1 Γ * , avem:
*
ai : (q i,γi)├ M (qi+1,γi+1) i 1, n , atunci scriem: a1… an : (q 1,γ1)├ M (qi+1,γi+1)
Similar, se poate folosi descrierea instantanee, constituită din tripletul q, aw, Zα şi atunci
scriem: q, aw, Zα ├
(p,w,βα) dacă (p, β) δ(q, a, Z) .
M
Definiţia 3.5.3 Limbajul acceptat prin stări finale de către automatul M este
L(M) {w w Σ * , (q 0 , w, Z 0 ) ├ *M p, λ, γ , γ Γ * , p F} .
Definiţia 3.5.4 Limbajul
acceptat prin stivă vidă de către automatul M este
N(M) {w w Σ , (q 0 , w, Z 0 ) ├ *M p, λ, λ , p Q} .
*
~ | w {0,1} }.
Exemplul 3.5.3 Să construim automatul push-down care acceptă limbajul { ww
▼
M=({q 1,q2},{0,1},{z 0,A,B},δ,q 1,Z0, )
δ(q 1 ,0, Z 0 ) {(q 1 , AZ 0 )} δ(q 2 ,0, A) {(q 2 , λ)}
δ(q ,1, Z ) {(q , BZ )}
δ(q 2 ,1, B) {(q 2 , λ)}
1 0 1 0
- 46 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Observaţia 3.5.2
a) Un automat push-down este determinist dacă sunt îndeplinite următoarele condiţii:
- pentru fiecare q Q, a Σ şi Z Γ corespunzătoare, δ(q, a, Z) nu conţine mai mult de un element;
- pentru fiecare q Q şi Z , dacă δ(q, λ, Z) atunci δ(q, a, Z) , a (aceste condiţii
evită situaţia în care ar fi posibile atât o λ-mutare cât şi o mutare nevidă, generând astfel nedeterminism).
b) Pentru automatele push-down în general, modelul determinist şi cel nedeterminist nu sunt
echivalente. Acest lucru se demonstrează în § 3.9., secţiune dedicată limbajelor independente de context
deterministe.
În cele ce urmează vom discuta numai despre automate push-down nedeterministe, pe care le
vom numi simplu automate push-down, iar atunci când ele nu sunt nedeterministe vom preciza acest
lucru.
Teorema 3.6.1 Un limbaj L este acceptat prin stivă vidă de către un automat push-down M1, (L=N(M1))
dacă şi numai dacă el este acceptat prin stări finale de către un automat push-down M2, ( L=N(M2) ).
▼Demonstraţie:
I. Fie L=T(M2), unde M2= (Q, Σ, Γ, δ, q 0 , Z 0 , F) .
Construim M1= (Q {q λ , q 0 }, Σ, Γ {X}, δ, q 0 , X, ) , unde δ este definit după cum urmează:
1) (q 0 , Z 0 X) δ ( q 0 , λ, X)
2) δ(q, a, Z) δ (q, a, Z) , q Q, a Σ λ, Z Γ
3) Pentru toţi q F, Z Γ {X} q λ , λ δ (q, λ, Z)
4) Pentru toţi Z Γ {X} q λ , λ δ (q λ , λ, Z)
Regula 1) îl face pe M1 să intre în configuraţia iniţială a lui M2, dar simbolul iniţial al stivei este
X. Regula 2) simulează pe M2 până când intră într-o stare finală. Regulile 3) şi 4) golesc stiva când M2
intră într-o stare finală.
Se observă că regulile 2) pot goli stiva lui M2 şi pentru un cuvânt care nu este în T(M2), iar acesta
este motivul pentru care M1 are propriul său simbol iniţial al stivei, X.
Să demonstrăm echivalenţa celor două automate:
a) Fie w T(M 2 ) . Atunci:
q 0 , w, Z 0 ├ *M 2 (q,λ,γ) pentru q Q .
Fie acum w intrarea lui M1;
conform regulei 1), rezultă că q 0 , w, Z 0 ├ M1 (q0,w,Z0X)
*
-
- 47 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Teorema 3.6.2 Dacă L este un limbaj independent de context, atunci există un automat push-down M
astfel încât L=N(M).
▼Demonstraţie:
Fie o gramatică independentă de context G=(VN,VT,S,P) în formă normală Greibach, astfel încât
L=L(G). Presupunem că λ L(G) (demonstraţia se poate adapta şi pentru cazul contrar).
Construim M= ({q 1 }, VT , VN , δ, q 1 , S, ) , unde δ(q 1 , a, A) conţine (q 1 , γ) pentru fiecare
regulă A aγ P .
Pentru a arăta că L(G)=N(M), observăm că:
(xAβ xaα β) q 1 , a, Aβ ├ M q 1 , λ, αβ
G
Prin inducţie asupra numărului de paşi dintr-o derivaţie rezultă că:
*
(xAβ xyα pentru x, y VT* , A VN , α, β VN* ) (q 1 , y, Aβ )├ *M (q 1 , λ, α)
G
*
*
Atunci : S x (q 1 , x, S) ├ M (q 1 , λ, λ) .
G
Se observă că M nu face λ-mutări.▲
Teorema 3.6.3 Dacă L este acceptat prin stivă vidă de către un automat push-down M (L=N(M)), atunci L
este un limbaj independent de context.
▼Demonstraţia se gaseste in [4]:
Observaţia 3.6.1 Din teoremele 3.6.1, 3.6.2 şi 3.6.3 rezultă că următoarele afirmaţii sunt echivalente:
i) L este un limbaj independent de context;
ii) L=N(M1) pentru un automat push-down M 1 nedeterminist;
iii) L=T(M2) pentru un automat push-down M 2 nedeterminist.
Vom considera anumite operaţii care păstrează limbajele I.D.C. Aceste operaţii se pot folosi atât
pentru a demonstra că un limbaj este I.D.C. cât şi pentru a demonstra că un limbaj nu este I.D.C.
- 48 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Teorema 3.7.1 Limbajele independente de context sunt închise la reuniune, concatenare şi produs
Kleene.
▼Demonstraţie:
Fie L1 şi L2 generate de G 1 (V1 , T1 , S1 , P1 ) şi G 2 (V2 , T2 , S 2 , P2 ) . Presupunem că
V1 V2= . Atunci putem realiza următoarele construcţii de gramatici I.D.C:
Limbajul L1 L 2 este generat de G 3 (V1 V2 {S 3 }, T1 T2 , S3 , P3 ) , unde
P3 P1 P2 {S3 S1 , S3 S 2 } .
Să demonstrăm că L1 L 2 L(G 3 ) :
Fie w L1 L 2 ; înseamnă că w aparţine cel puţin unuia din cele două limbaje:
i {1,2} : w L i , altfel spus i {1,2} : w L(G i ) . Există deci o derivare a lui w în una din cele
două gramatici date, G i, pornind de la simbolul iniţial al respectivei gramatici: Si w . Deoarece toate
Gi
regulile din gramatica Gi sunt şi reguli ale gramaticii construite G3, înseamnă că aceeaşi derivare are loc
şi în gramatica G3. În plus, putem obţine simbolul Si printr-o derivare într-un pas pornind de la S3, şi
anume folosind una din cele două reguli nou adăugate la P 3, obţinând următoarea derivaţie în G3:
i {1,2} : S3 Si w , deci w L(G 3 ) .
G3 G3
Rezultă că L1 L 2 L(G 3 ) .
Fie w L(G 3 ) ; înseamnă că w poate fi generat cu regulile P3, pornind de la S3: S3 w .
G3
Deoarece singurele S3-reguli sunt cele două redenumiri {S 3 S1 , S3 S 2 } , rezultă că primul pas al
derivaţiei amintite nu poate fi decât rezultatul aplicării uneia d in aceste două reguli:
i {1,2} : S3 Si w , deci Si w .
G3 G3 G3
Putem observa faptul că, în afară de primul pas al acestei derivări, toate regulile folosite în
obţinerea lui w pornind de la S3 sunt chiar reguli din Pi, i {1,2} , în funcţie de simbolul Si obţinut în
primul pas. Deoarece V 1 V2= , rezultă că Si w , deci w L(G i ) =Li.
Gi
- 49 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Exemplul 3.7.1 Fie L limbajul cuvintelor cu număr egal de a şi b. Să urmărim aplicarea celor
demonstrate în teorema anterioară.
▼ Avem gramatica generativă G ({S}, {a, b}, S, P) , unde mulţimea regulilor este
P {S aSbS, S bSaS, S λ} . Se poate verifica faptul că L=L(G). Să considerăm limbajele de
substituţie:
L a {0 n1n | n 1} , generat de regulile P(G a)= {S a 0S a 1, Sa 01} ;
L b {ww~ | w {0,2}* } , limbaj generat de mulţimea de reguli
P(Gb)= {S b 0S b 0, S b 2S b 2, S b λ} .
Atunci, conform construcţiei efectuate în demonstraţia Teoremei 3.7.2, gramatica rezultată este
G = ({S, Sa , S b },{0,1,2}, S, P) , cu mulţimea de reguli:
P S S a SS b S , S S b SS a S , S , S a 0 S a 1, S a 01, S b 0 S b 0, S b 2 S b 2, S b }
Să generăm un cuvânt la întâmplare cu aceste reguli:
S Sa SSbS 01SSbS 01SbS 012S b 2S 0120S b 02S 012002S 01200 2 ▲
Observaţia 3.7.1 Teorema 3.7.1 se poate obţine folosind Teorema 3.7.2 şi ţinând cont că a, b Σ
avem:
{a, b} este I.D.C.
{a b} este I.D.C.
a este I.D.C.
Dacă acum f(a)=La şi f(b)=Lb, atunci, datorită proprietăţii de închidere la substituţie , rezultă că:
L a L b este I.D.C.
L a L b este I.D.C.
La este I.D.C.
Pentru că homomorfismul este un caz special de substituţie, în care card(La)=1, obţinem şi
următorul corolar.
Teorema 3.7.3 Clasa limbajelor independente de context este închisă la homomorfismul invers.
▼Demonstraţie:
Fie h : Σ Δ un homomorfism şi L un limbaj I.D.C.; atunci există un automat push-down
M (Q, Δ, Γ, δ, q 0 , Z 0 , F) astfel încât L=T(M).
1
Construim un automat push-down M care să accepte h (L) , astfel:
Cu intrarea a pentru automatul M', acesta generează h(a) şi simulează execuţia lui M cu această
intrare h(a). Dacă M' ar fi un automat cu număr finit de stări, atunci M' şi-ar schimba numai stările. În
- 50 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
cazul automatului push-down, M' poate şi să pună o mulţime de simboluri pe stivă şi, în plus, fiind
nedeterminist are o mulţime de posibilităţi de mişcare.
De aceea, dotăm M' cu un buffer (o zonă tampon) în care el poate să memoreze h(a). Atunci M'
poate să simuleze orice λ-mutare a lui M, dacă doreşte, şi să consume simbolurile lui h(a) câte unul la
fiecare moment, la fel cum face M. Pentru ca buffer-ul să fie o parte a controlului finit al lui M', el nu
poate fi oricât de lung. Se poate realiza asta permiţându-i lui M' să citească un simbol de intrare numai
când buffer-ul este gol. Astfel, în buffer este păstrat în fiecare moment un sufix al lui h(a), pentru un
anume a preluat de pe banda de intrare a lui M'.
h
Controlul
lui M'
Buffer Stiva lui
Controlul
lui M M şi M'
Figura 3.7.1
Automatul push-down M' acceptă cuvântul de intrare w dacă buffer-ul este vid şi M este într-o
stare finală. În acest fel, M a acceptat h(a) pentru fiecare simbol de intrare a, deci a acceptat h(w).
1
Astfel, L(M')= {w h(w) L(M)} , adică: L(M')= h (L(M))
Construcţia formală este M (Q, Σ, Γ, δ,[q 0 , λ], Z 0 , F λ) , unde:
Q’ = {[q,x] | q Q, iar x este un suffix al lui h(a),a }
Funcţia de tranziţie δ :
1) ([p, x], γ) δ([q, x], λ, Y) pentru fiecare (p, γ) δ(q, λ, Y) .
Astfel, M' simulează λ-mutările lui M, indiferent de conţinutul din buffer.
2) ([p, x], γ) δ([q, ax], λ, Y) dacă (p, γ) δ(q, a, Y) .
Astfel, M' simulează mutările lui M pe intrarea a din Σ, eliberând a din capul buffer-ului.
3) ([q, h(a)], Y) δ([q, λ], a, Y) pentru toţi a Σ şi Y Γ .
În acest mod, M' încarcă în buffer h(a), citind a de pe intrarea M', în timp ce starea şi stiva lui M rămân
neschimbate.
1
Să demonstrăm că L(M')= h (L(M)) .
a) Mai întâi, să observăm că printr-o aplicare a regulii (3) urmată de o aplicare a regulilor (1) şi (2),
dacă (q, h(a), α) ├ M (p, λ, β) ,
atunci ([q, λ], a, α) ├ M ([q, h(a)], λ, α) ├ M ([p, λ], λ, β) .
Astfel, dacă M acceptă h(a), adică dacă (q 0 , h(w), Z 0 ) ├ M (p, λ, β) pentru p F şi β Γ , atunci
([q 0 , λ], w, Z 0 ) ├ M ([p, λ], λ, β) ,
astfel încât M' acceptă w.
1
Deci L(M') h (L(M)) .
b) Reciproc, să presupunem că M' acceptă intrarea w=a1a2…an. Atunci, pentru că regula (3) poate fi
aplicată numai cu buffer-ul vid (precum arată a doua componentă a stării lui M), şirul de mişcări ale lui
M' ce conduc la acceptare poate fi scris ca:
- 51 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
([q 0 , λ], a 1a 2 ...a n , Z 0 ) ├ M ([p1 , λ], a 1a 2 ...a n , α1 ) ├ M ([p1 , h(a 1 )], a 2 ...a n , α1 ) ├ M
├ M ([p 2 , λ], a 2 ...a n , α 2 ) ├ M ([p 2 , h(a 2 )], a 3 ...a n , α 2 ) ├ M . . .. . . .
├ M ([p n , λ], a n , α n ) ├ M ([p n , h(a n )], λ, α n ) ├ M ([p n 1 , λ], λ, α n 1 ) , unde p n+1 F.
Tranziţia din starea [p i , λ] în [p i , h(a i )] se face prin regula (3) iar celelalte tranziţii prin
regulile (1) şi (2).
Astfel, (p1 , α1 ) δ(q 0 , λ, Z 0 )
şi i : (p i 1 , α i 1 ) δ(p i , h(a i ), α i )
deci obţinem o recunoaştere şi din partea lui M:
(q 0 , h(a 1a 2 ...a n ), Z 0 ) ├ M ([p1 , λ], a 1a 2 ...a n , α1 ) ├ M ([p 2 , λ], a 2 ...a n , α 2 ) ├ M …├ M
([p n , λ], a n , α n ) ├ M ([p n 1 , λ], λ, α n 1 ) , unde p n+1 F.▲
Există câteva proprietăţi ale mulţimilor regulate care nu se păstrează la mulţimile I.D.C., şi
anume proprietăţile de închidere la intersecţie şi complementare.
Teorema 3.7.5 Dacă L este un limbaj I.D.C. iar R este o mulţime regulată, atunci L R este un limbaj
I.D.C.
▼Demonstraţie:
Fie L=T(M), M fiind un automat push-down, M (Q M , Σ, Γ, δ M , q 0 , Z 0 , FM )
Fie şi R=T(A), unde A este un automat finit nedeterminis, A (Q A , Σ, δ A , p 0 , FA )
Construim un automat push-down M' pentru limbajul L R , într-un mod care să simuleze
funcţionarea în paralel a lui M şi A: M' simulează mişcările lui M pe intrarea λ fără a schimba starea lui
A. Când M face o mişcare pe simbolul de intrare a, M' simulează această mişcare şi de asemenea
simulează schimbarea stării lui A pentru simbolul a. Automatul M' acceptă o intrare dacă şi numai dacă
atât A cât şi M o acceptă.
Construcţia formală a lui M' este următoarea: M (Q A Q M , Σ, Γ, δ,[p 0 , q 0 ], Z 0 , FA FM ) ,
- 52 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Stiva lui
Controlul M şi M'
lui M' Controlul Controlul
lui A lui M
…
Figura 3.7.2
Teorema 3.7.6 Clasa limbajelor independente de context este închisă în raport cu operaţia de oglindire.
▼Demonstraţie:
Fie G o gramatică independentă de context de forma:
- 53 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
G = (V N, VT, S, P) şi L = L(G).
Construim o nouă gramatică G’ = (V N, VT, S, P”), în care fiecare regulă din mulţimea regulilor, P, este
înlocuită cu o regulă similară în care membrul drept este oglinditul membrului drep al regulei
corespunzătoare din P:
P’ = {A → ~ u | A → u P}
Se observă că regulile din P’ sunt tot independente de context. Este uşor de demonstrat că:
~
L(G’) = L ▲
Exemplul 3.7.2 Fie limbajul L {ww w {a, b} } . Să se exemplifice proprietăţile de închidere.
▼ Limbajul L este format din cuvintele ale căror jumătate stângă este identică cu jumătatea dreaptă.
Presupunem că acest limbaj ar fi I.D.C.
Din Teorema 3.7.5 rezultă că limbajul L1 L a b a b ar fi şi el I.D.C.; dar
L1 {a i b j a i b j i 1, j 1} nu este de acest tip, fapt ce se poate vedea cu ajutorul teoremei de
pompare:
q q q q
Fie p,q N . Alegem z = a b a b = uvwxy, unde |v| + |x| > 0, |vwx| q. Posibilităţile de
alegere ale subcuvântului vwx sunt multiple (aibj cu i+j q , bi cu i q , bj-iai cu i j q ), ele însă nu
i i
permit crearea de cuvinte uv wx y care să fie tot din L1 (proprietatea egalităţii jumătăţilor nu se poate
păstra prin pompare).
Din contradicţia obţinută rezultă că limbajul L considerat iniţial nu este I.D.C.
Să mai observăm şi faptul că se poate demonstra că L1 nu este I.D.C. şi fără a folosi teorema de
pompare, reducând acest limbaj la limbajul
L 2 {a i b j c i d j i 1, j 1} .
1
Fie h(a)=h(c)=a şi h(b)=h(d)=b. Atunci h (L1 ) este format din toate cuvintele de forma
x1x2x3x4, unde x1 şi x3 au aceeaşi lungime în {a, c} , iar x 2 şi x4 au aceeaşi lungime în {b, d} .
1 * * * *
Atunci h (L1 ) a b c d L 2 .
Dacă L1 ar fi I.D.C., atunci (din Teoremele 3.7.3 şi 3.7.5) rezultă că L2 ar fi şi el I.D.C., ceea ce
ştim că este fals.
Astfel s-a arătat, din nou, faptul că L1 nu este I.D.C. ▲
§ 3.7 Exerciţii
1. Să se construiască câte o gramatică independentă de context pentru fiecare din mulţimile următoare:
a. Mulţimea tuturor palindroamelor peste alfabetul {a,b}.
b. {an b2n | n > 0}
c. {an+1 b3n | n > 0}
d. {ai bj | i j}
e. {ai bj ck | i j sau j k }
f. {u # ~ u | u {a,b}* }
2. Considerăm gramatica:
G = ({S, T, L}, {a, b, +, -, x, /, [, ] }, S, P),
unde mulţimea P este formată din regulile:
S→T+S T→LxT L→[S]
S→T–S T→L/T L→a
S→T T→L L→b
Să se construiască o derivaţie şi un arbore de derivaţie pentru cuvântul: a + [a x b – b/a ]:
- 54 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
Sfârşit
- 55 -
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
BIBLIOGRAFIE
[1]. AHO, A.V., ULLMAN, J. D. “The theory of parsing, translation and compiling” Prentice Hall-
London, 1972.
[2]. AHO, A.V., SETHI, R., ULLMAN, J.D. “Compiling, Principles, Techniques and Tools”, Addison-
Wesley, Reading, Mass., 1988.
[3]. GRIES, D. “Compiler construction for digital computers”, New -York, John Weley, 1971.
[4]. HOPCROFT, J.E., ULLMAN, J. D. “Formal Languages and their relation to Automata” , Addison-
Wesley, Reading, Mass., 19769.
[5]. HOPCROFT, J.E., ULLMAN, J. D. “Introduction to automata theory, Languages and Computation” ,
Addison-Wesley, 1979.
[6]. IACOB P., MARINESCU D. "An Optimal Representation of the Nondeterministic Finite
Automaton by a Set - Union Knapsack Problem" Proceedings of the International Conference "Symetry
and Antisymetry in Mathematics, Formal Languages and Computer Science" Brasov 1996 pp 47-48.
[7]. KOZEN, D.C.,“ Automata and Computability”, Springer, 1997.
[8]. LIVOVSCHI, L. GEORGESCU, H. “Bazele informaticii”, Ed. Didactică şi Pedagogică, Bucureşti,
1985.
[9]. MARCUS, S. “ Lingvistica Matematică”, Ed. Didactică şi Pedagogică, Bucureşti, 1973.
[10]. MARINESCU D.,. “- “O masina Turing cu trei benzi universală pentru algoritmi normali” , Bul.
Univ. Braşov, seria C, Vol. XX – 1978, pp. 87 -100.
[11]. MARINESCU D., - “A bidimensional Turing machine for the cutting stock problem with quillotine
restrictions” - Proceeding of the scientific symposion with the contribution of teachers and researchers
from the Republic of Moldova , Brasov, 1991, pp 73 -83
[12]. MARINESCU D., - “Some Turing machines for the determination of the cuts in a cutting-stock
model” - Proceeding of the scientific symposion with the contribution of teachers and researchers from
the Republic of Moldova , Brasov 1991, pp 85 -96
[13]. MARINESCU D., " The Use of Didactic Software JFLAP for Formal Languages "Report TR--HH-
10-97 Restructuring of the (re)training of school teachers In Computer science- Computer Libris Agora,
ISBN 973-97515-1-2, Cluj-1997, pp.240-251.
[14]. M ARINESCU D., IACOB P., VLADAREAN C.- “ An Algorithm for Optimal Representation of a
Nondeterministic Finite Automaton By a set-union Knapsack Problem”, Proceedings of the 2-th
International Conference "Symetry and Antisymetry in Mathematics, Formal Languages and Computer
Science"- Satelite Conference of 3 ECM- Brasov 2000, pp 199-206.
[15] MARINESCU, D. “Limbaje Formale si Teoria Automatelor”, Ed. Univ. Transilvania, Brasov, 2003.
[15]. MOLDOVAN, G., CIOBAN, V., LUPEA,M. “ Limbaje Formale şi Teoria Automatelor-
Culegere de probleme”, Ed. Mesagerul, Cluj-Napoca, 1997.
[16]. MARUŞCIAC, I. “Teoria Algoritmilor”, Ed. Didactică şi Pedagogică, Bucureşti, 1966.
[17]. ORMAN, G. “Limbaje Formale”, Ed. Tehnică, Bucureşti, 1982.
[18]. ORMAN, G. “Limbaje Formale şi acceptori”, Ed. Albastră, Cluj-Napoca, 2002.
[19]. PĂUN, GH. “ Gramatici matriceale”, Ed. Ştiinţufică şi Enciclopedică, Bucureşti, 1981.
[20]. PĂUN, GH. “ Mecanisme generative ale proceselor economice”, Ed. Tehnică, Bucureşti, 1982.
[21]. PĂUN, GH. “ Probleme actuale în Teoria Limbajelor Formale”, Ed. Ştiinţufică şi Enciclopedică,
Bucureşti, 1984.
[21]. SALOMAA, A. “Formal Languages”, Academic Press, New-York, 1973.
[22]. SIMOVICI, D. “Limbaje Formale şi Tehnici de compilare”, Ed. Didactică şi Pedagogică, Bucureşti,
1978.
[23]. SIPSER, M. ” Introduction to the theory of computation”, PWS publishing Company, Boston,
1996.
- 56 -