Upload
nguyendieu
View
216
Download
0
Embed Size (px)
Citation preview
CUPRINS
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
- 1 -
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.
§ 1.1 Noţiunea de limbaj 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.
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 2 -
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 b
i | i număr natural }
L5={ u *,ba | Na(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.
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 3 -
Să considerăm câteva moduri de definire ale unor limbaje în exemplele următoare.
Exemplul 1.1.4 Fie L un limbaj peste alfabetul {a, b} definit după cum urmează:
(i) λ L
(ii) Dacă x L atunci axb L
(iii) Nici un alt cuvânt nu aparţine lui L.
Se poate demonstra prin dublă incluziune că limbajul L construit conform acestor reguli este chiar
limbajul L4 = { ai b
i | i număr natural }.
Se observă că (i)-(iii) constituie un mecanism generativ pe când L4 este definit de o proprietate
specifică.
Exemplul 1.1.5 Fie L’ definit după cum urmează :
(i) L’
(ii) Dacă xL’, atunci axbL’ şi bxaL’
(iii) Dacă x1L, x2L’ atunci x1x2L’
(iv) Nici un alt cuvânt nu aparţine lui L’.
Si aici se poate demonstra că L’=L5.
Exemplul 1.1.6 Fie L” un limbaj constând din toate cuvintele care se pot reduce la prin înlocuirea
subcuvintelor ab prin .
Astfel cuvintele , ab, abab şi aabbab L”. Evident L”L5 dar L”L5 pentru că, de exemplu,
baL”. Definiţia aceasta poate fi considerată ca un mecanism de recunoaştere sau analitic.
În exemplele date anumite subcuvinte sunt rescrise. În conformitate cu definiţia următoare, o
mulţime finită de reguli de rescriere determină un sistem de rescriere.
Definiţia 1.1.9 Un sistem de rescriere este o pereche ordonată SR=(V, F), unde V este un alfabet şi F o
mulţime finită de perechi ordonate de cuvinte peste V. Elementele (α,β) ale lui F sunt numite reguli de
rescriere sau producţii şi se notează αβ.
Un cuvânt x peste V generează direct cuvântul y (xSR y) dacă şi numai dacă există cuvintele u, v, α ,
β 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}).
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 4 -
Limbajul L’ din exemplul 1.1.5 este definit acum :
L’ = Lg(SR,{x}){a,b}*,
Unde SR=({a,b,x}, {x, xaxb, xbxa, xxx}).
Sistemele de rescriere sunt de asemenea denumite sisteme semi - Thue.
Dintre cele mai cunoscute sisteme de rescriere fac parte: algoritmul normal în sens Markov[16], sistemele
normale Post si gramaticile generative.
§ 1.2 Gramatici generative 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| wV *, 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 = { aib
i | iN } este generat de gramatica generativă
G = ({S}, {a,b}, S, {S, SaSb})
Exemplul 1.2.2 Limbajul L = { w | w{a,b}*, Na(w)=Nb(w) } este generat de gramatica generativă
G = ({S}, {a,b}, S, {S, Sasb, SbSa, SSS})
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
SaBC
CBBC
bBbb
bCbc
cCCc
aBab
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)={anb
nc
n | n1}
Exemplul 1.2.4. [21] Fie limbajul L={ ww | w{0,1}* }. Gramatica G definită de: G=({x0, x1, x2, x3},
{0,1}, x0, P}), unde P este:
P : x0x1x2x3
x1x2
x3
x1x2ix1yi
yijjyi
yix3x2ix3
ix2x2i
pentru fiecare i şi j din {0,1}
Această gramatică generează limbajul L. Să încercăm o derivaţie în această gramatică:
x0 x1x2x3 0x1y0x3 0x1x20x3 01x1y10x3 01x10y1x3 01x10x21x3
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
5
01x1x201x3 0101x3 0101
Exemplul 1.2.5[21] Pentru limbajul L={an² | n1} vom avea următoarele reguli gramaticale care se
bazează pe identitatea n2=1+3+...+(2n-1), unde toate simbolurile cu excepţia lui a sunt simboluri
neterminale:
P : x0a
x0axx2z
x2zaa
xaaa
yaaa
x2zy1yxz
xx1x1yx
yx1y1yx
xy1x1y
yy1y1y
ax1axxyx2
x2yxy2
y2yyy2
y2xyx2
Să încercăm şi aici câteva derivaţii:
x0 axx2z axaa aaaa
x0 axx2z axy1yxz ax1yyxz axxyx2yyxz axxyxy2yxz
axxyxyy2xz axxyxyyx2z axxyxyyaa axxyxyaaa
axxyxaaaa axxyaaaaa axxaaaaaa axaaaaaaa
aaaaaaaaa = a9
= a3².
Exemplul 1.2.6. [21] Pentru generarea limbajului L = { a2ⁿ
| n0 }vom avea următoarele reguli:
P : x0yxy
yxyz
zxxxz
zyxxy
xa
y
Vom construi o derivaţie în aceasta gramatică pentru n = 2, pornind de la simbolul iniţial x0
x0 yxy yzy yxxy yzxy yxxzy yxxxxy xxxy axxxy
aaxxy aaaxy aaaay aaaa
Exemplul 1.2.7 Fie G=({S,B}, {0,1}, S, P) unde
P:
1B
S1B
0BS
Limbajul generat de G este L(G) = {(01)n
| n>0}. Exemplificăm derivaţia unui cuvânt din limbaj pentru
n = 3. S 0B 01S 010B 0101S 01010B 010101 = (01)3
Exemplul 1.2.8 Fie gramatica G=({S,A,B},{a,b},S,P), unde mulţimea regulilor P={SaSb, Sab}.
Este uşor de demonstrat că limbajul generat de gramatica G este L(G) = {anb
n | n>0}.
Pentru n = 4 obţinem următoarea derivaţie:
S aSb aaSbb aaaSbbb aaaabbbb = a4b
4
Gramaticile generative pot fi clasificate prin impunerea de restricţii asupra form ei regulilor.
Definiţia 1.2.4 (Ierarhia lui Chomsky) Pentru i{0,1,2,3}, o gramatică generativă, G=(VN, VT, 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*, AVN ş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, BVN şi aVT*.
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 6 -
Gramaticile de tip 1 se numesc dependente de context sau contextuale, gramaticile de tip 2 se
numesc independente de context, iar gramaticile de tip 3 se mai numesc şi regulate sau cu număr finit de
stări.
Evident că orice gramatică de tip 3 este şi de tip 2, orice gramatică de tip 2 este şi de tip 1, şi orice
gramatică de tip 1 este de tip 0.
Dacă notăm cu Li familia limbajelor de tip (i) avem, evident, următoarea incluziune între
familiile de limbaje:
L3 L2 L1 L0
Se va demonstra ulterior că incluziunea este proprie, deci că prin restricţiile (0)-(3) se obţine într-
adevăr o ierarhizare a familiilor de limbaje.
Definiţia 1.5 O gramatică este cu lungime crescătoare sau monotonă dacă şi numai dacă regula uv
satisface condiţia |u| |v| cu o singură excepţie posibilă S, care, dacă apare în mulţimea regulilor,
atunci S nu apare în partea dreaptă a nici unei reguli.
Observaţia 1.2.2 Gramaticile dependente de context sunt gramatici cu lungime crescătoare. Se poate
demonstra că gramaticile cu lungime crescătoare şi gramaticile dependente de context sunt echivalente.
Observaţia 1.2.3 Gramaticile din exemplele 1.2.3, 1.2.4, şi 1.2.6 sunt gramatici monotone deci, conform
observatiei 1.2.2, limbajele generate sunt dependente de context. Gramatica din exemplul 1.2.5 este o
gramatică de tip 0 (există reguli care nu sunt monotone, ca de exemplu regula x1x2), gramatica din
exemplul 1.2.8 este independentă de context iar cea din exemplul 1.2.7 este regulată sau de tip 3.
Exemplul 1.2.10 Din punct de vedere lingvistic, gramaticile sunt folosite pentru analiza frazelor. Să
considerăm următoarea gramatică analitică IDC unde VN = { F, A, V, Pn, S, Sn}, (variabile care
reprezintă, respective: fraza, articol, verb, predicat nominal, substantiv, subiect), VT = {o, fata, este,
laboranta}, unde fiecare din aceste cuvinte ale limbii române reprezintă un simbol al alfabetului
terminalelor. Regulile gramaticii sunt:
{ A o,S fată, S laborantă, V este, Sn AS, Pn VS, F SnPn }
Frazele generate sunt :
o fata este laborantă
o laborantă este fată
o fată este fată
o laborantă este laborantă
Fiecare din fraze este corectă gramatical dar unele s-ar putea să nu aibă nici un înţeles.
Exemplul 1.2.11 Se numeşte palindrom un cuvânt, care este identic când este citit de la stânga la dreapta
sau de la dreapta la stânga. Astfel în limba româna există palindroamele: capac, coc, cuc, lupul, ele, etc.
Notăm cu y~ reflectatul sau oglinditul unui cuvânt y, adică cuvântul ale cărui simboluri sunt în ordine
inversă faţă de y. Limbajul { yy~ | y VT* } este în mulţimea palindroamelor cu VT={a1, ..., an} şi poate fi
generat de gramatica:
G=({S}, VT, S, {S, Sa1Sa1, Sa2Sa2, ..., SanSan}).
În exemplul anterior există regula S iar S apare şi în dreapta altor reguli. Vom arăta că există
ca pentru orice astefel de gramatică există o gramatică echivalentă în care S nu apare în dreapta nici unei
reguli.
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 G1. 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.
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 7 -
Să demonstrăm acum că L(G)=L(G1).
a) Presupunem că wL(G), deci există o derivaţie în gramatica G de forma S*
w. Atunci prima
regulă folosită este de forma S deci derivaţia va fi : SG
*
Gw
Prin definiţia lui P1 avem : S1 P1 şi deci: S11G
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 *
1G w
Combinând cele două derivaţii se obţine: S11G
*
1G w ,
Deci w L(G1), de unde rezultă că L(G)L(G1).
b) Presupunem acum că wL(G1), deci există derivaţia S1
*
w în gramatica G1. Prima regulă folosită
este de forma S1, pentru un anume . Rezultă din construcţia gramaticii G1 că S este o regulă din
P şi deci S, în gramatica G. Acum *
w este o derivaţie în gramatica G1 dar nu poate avea simbolul
S1, căci foloseşte numai regulile din P1 care sunt şi în P. Rezultă că *
w este o derivaţie în gramatica
G şi atunci SG
*
Gw, adică wL(G).
Evident că regulile adăugate la P pentru a obţine P1 sunt de acelaşi tip cu regulile lui P deci dacă
G este DC (IDC sau R) atunci şi G1 este DC (IDC sau R). ▲
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 . ▲
§1.3 Operaţii cu limbaje Pentru că limbajele sunt mulţimi, rezultă că se pot folosi toate operaţiile cu mulţimi cunoscute.
Reuniunea a două limbaje L1L2={ w | wL1 sau wL2 }
Intersecţie a două limbaje L1L2={ w | wL1 şi wL2 }
Diferenţa a două limbaje L1\L2={ w | wL1 şi wL2 }
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 | uL1, 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:
L0
= {}
Li+1
= Li L .
Produsul Kleene (sau Închiderea Kleene) este definit prin reuniunea tuturor puterilor lui L:
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 8 -
0i
i* LL
Închiderea Kleene - liberă este
1i
iLL
Câtul stâng a două limbaje este limbajul format din sufixele cuvintelor din L1 care au prefixul în L2:
L2\L1={v |uvL1, uL2}
Derivata stângă a unui limbaj relativ la cuvântul v este s
v 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| vuL1 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~ | uL }.
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 uL }
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
1.Să se construiască o derivaţie în gramatica din exemplul 1.2.3 pentru:
a. n = 2;
b. n = 3;
c. n = 4.
d. n = 5.
2. Să se construiască o derivaţie în gramatica din exemplul 1.2.4 pentru cuvintele:
a. 0001100011;
b. 10101010;
c. 1111011110.
3. Să se construiască o derivaţie în gramatica din exemplul 1.2.5 pentru:
a. n = 1;
b. n = 2;
c. n = 4;
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 9 -
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.
§ 2.1 Automate 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, Σ, δ, q0, 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:δ ;
Qq0 starea iniţială;
QF 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 …
Figura 2.1.1
CONTROL FINIT
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 10 -
Iniţial controlul finit se află în starea q0 iar capul de citire analizează cel mai din stânga simbol scris pe
banda de intrare. Interpretarea lui pa)δ(q, 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 δ̂ :
, Σa ,Σ x a)x),(q,δ̂ δ(xa)(q,δ̂
qλ)(q,δ̂
*
semnificaţia lui px)(q,δ̂ 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ă, px),δ(q0
pentru Fp .
Limbajul acceptat de automatul M se notează Fx),δ(qxT(M)0
.
Definiţia 2.1.3 Numim configuraţie instantanee perechea (q,x), formată din starea Qq î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 pa)δ(q, , atunci vom nota modificarea configuraţiei
astfel: )a(q, ├ ),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 }{qF , }q,q,q,{qQ , }1,0{
F),qδ,Σ,(Q,M
03210
0
Fie şirul de intrare 10110010; atunci putem urmări execuţia automatului astfel:
, Fq,0)δ(q,10)δ(q,010)δ(q,0010)δ(q
,10010)δ(q,110010)δ(q,0110010)δ(q,10110010)δ(q
01323
1320
deci 10110010 T(M) .
În mod echivalent, într-un calcul de configuraţii se scrie:
Σ δ
0 1
q0 q1 q2
q1 q0 q3
q2 q3 q0
Q
q3 q2 q1
sau:
Figura 2.1.2
q0 q1
q2 q3
Start 0
0
0
0
1 1 1 1
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 11 -
(q0,10110010) ├ (q2,0110010) ├ (q3,110010) ├ (q1,10010) ├ (q3,0010) ├ (q2,010)
├ (q3,10) ├ (q1,0) ├ (q0,λ) unde q0 F,
deci s-a obţinut din nou că 10110010 T(M) .
Se poate demonstra că automatul finit M de mai sus acceptă şirurile cu număr par de 0 şi număr
par de 1.▲
Definiţia 2.1.4 Un automat finit nedeterminist, notat M=(Q, Σ, δ’,q0, F), este format din Q, Σ, q0, F –
prezentate în definiţia 2.1.1, dar funcţia de tranziţie este aici
Q)(ΣQ:δ' P .
Deci a)(q,δ' este o mulţime de stări şi nu o singură stare.
Şi aici δ’ se poate extinde la ΣQ astfel:
. a ,Σx , a)(p,δ'xa)(q,δ'
{q}λ)(q,δ'
x)(q,δ'p
Acum δ’ se poate extinde la Q)(P astfel:
k
1iik21
x),(pδ'x)},p,...,p,({pδ'
Definiţia 2.1.5 Un cuvânt x este acceptat sau recunoscut de un automat finit nedeterminist M dacă
Fx),δ(q0
, 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.
▼
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,λ) , Fq0
(q0,0101)├ (q0,101)├ (q0,01)├ (q0,1)├ (q1,λ) , Fq1
(q0,0101)├ (q0,101)├ (q0,01)├ (q3,1)├ blocare ( )1,(q3
)
Figura 2.1.3
q0 Start q3 q4
q1
q2 0,1
0,1 0,1
1
1
0 0
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 12 -
(q0,0101)├ (q0,101)├ (q1,01)├ blocare ( )1,(q1
)
(q0,0101)├ (q3,101)├ blocare ( )1,(q3
)
b) Dacă şirul de intrare este 0110, automatul va accepta acest cuvînt în momentul depistării unui calcul
de configuraţii ce duce automatul într-o stare finală (indiferent câte încercări nereuşite face, automatul
acceptă şirul de intrare la înregistrarea unui succes):
(q0,0110)├ (q0,110)├ (q0,10)├ (q0,0)├ (q0,λ) , Fq0
(q0,0110)├ (q0,110)├ (q0,10)├ (q0,0)├ (q3,λ) , Fq3
(q0,0110)├ (q0,110)├ (q0,10)├ (q1,0)├ blocare ( )1,(q1
)
(q0,0110)├ (q0,110)├ (q1,10)├ (q2,0)├ (q2,λ) , Fq2 succes !
(q0,0110)├ (q3,110)├ blocare ( )1,(q3
)
c) Configuraţiile instantanee ce determină acceptarea în cazul cuvântului de intrare 010011 sunt:
(q0,010011)├ (q0,10011)├ (q0,0011)├ (q3,011)├ (q4,11)├ (q4,1)├ (q4,λ)
şi
(q0,010011)├ (q0,10011)├ (q0,0011)├ (q0,011)├ (q0,11)├ (q1,1)├ (q2,λ)
Ambele arată faptul că şirul de intrare poate fi citit de pe bandă ajungând într-o stare finală (q2 sau q4),
fiind deci recunoscut. Este suficientă găsirea uneia dintre ele, când se stabileşte acceptarea cuvântului de
către automat.
Pentru aceeaşi intrare propusă anterior, pot fi “încercate” şi alte posibile transformări de configuraţii, dar
care nu termină citirea într-o stare finală sau nici măcar nu permit finalizarea citirii benzii (ajung la
blocare, când simbolul de pe bandă şi starea automatului finit nu sunt compatibile d.p.d.v. al funcţiei de
tranziţie, cum ar fi cazul citirii simbolului 0 într-un moment în care automatul se află în starea q1,
deoarece se observă că ,0)δ(q1
).▲
§ 2.2 Legătura dintre gramaticile regulate şi automatele finite
Vom demonstra în cele ce urmează că limbajele de tip 3 sunt echivalente cu limbajele
recunoscute de automatele finite (numite şi mulţimi regulate).
Teorema 2.2.1 Fie L o mulţime de cuvinte acceptate de un automat finit nedeterminist. Atunci există un
automat finit determinist care acceptă L.
▼ Demonstraţie:
Fie F),qδ,Σ,(Q,M0
un automat finit nedeterminist care acceptă L, adică L=T(M).
Definim )F',q',δ'Σ,,(Q'M'0
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)
card(Q)k0 Q,q ]q,...,q,[q Q'ik21
;
]q[q00
;
,F' ,Q'F' conţine cel puţin o stare finală din F;
şi definim tranziţiile:
}p,...,p,p{a)},q,...,q,δ({q ]p,...,p,p[a)],q,...,q,([qδj21t21j1t21
Deci dacă δ’ este aplicat unui element Z=[q1, q2,....,qk ] din Q', rezultatul este calculat prin aplicarea lui
δ la fiecare stare a lui Q din Z=[q1,q2,. . . ,qk ]:
j1,l ,a),δ(qp
]p,...,p,p[a)],q,...,q,([qδk
1iil
j21k21
Se arată prin inducţie asupra lungimii şirului de intrare x că :
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 13 -
(2.2.1) }q,...,q,{qx),δ(q ]q,...,q,[qx),q(δi210i210
- pentru |x|=0, ]q[q00
afirmaţia (2.2.1) este adevărată;
- presupunem că (2.2.1) este adevărată pentru |x| t ; să studiem atunci intrarea “xa”, unde Σa şi deci
|xa| t+1 : a)x),,q(δ(δxa),q(δ00
Conform ipotezei inducţiei, }p,...,p,{px),δ(q ]p,...,p,[px),q(δj210j210
Prin definiţie, }r,...,r,r{a)},p,...,p,δ({p ]r,...,r,[ra)],p,...,p,([pδk21j21k21j21
Astfel, }r,...,r,r{xa),δ(q ]r,...,r,[rxa),q(δk210k210
Pentru a completa demonstraţia mai avem de adăugat că Fx),q(δ0
exact când x),δ(q0
conţine o
stare a lui Q care este în F.
Aşadar T(M)=T(M’). ▲
Exemplul 2.2.1 Considerăm automatul finit }){q ,q δ, {0,1}, },q,({qM1010
,
}q,{q,1)δ(q
,0)δ(q
}{q,1)δ(q
}q,{q,0)δ(q
101
1
10
100
Să se construiască automatul finit determinist M’, echivalent cu M.
▼
Să reprezentăm automatul M sub formă de diagramă de tranziţie :
Construim M’ conform Teoremei 2.2.1 : ) ]}q,[q],{[q , ][q , δ , {0,1} , ]}q,[q],[q],{[q (M 10101010
]q,[q],1)q,([qδ
]q,[q],0)q,([qδ
]q,[q],1)([qδ
Φ],0)([qδ
][q],1)([qδ
]q,[q],0)([qδ
1010
1010
101
1
10
100
Deci automatul M’ va avea diagrama tranziţiilor ca în figura 2.2.2:▲
Figura 2.2.1
q0 q1 Start
0 1
0,1
1
Figura 2.2.2
[q0] [q1]
[q0,q1]
Start
0,1
1
0 1
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 14 -
Teorema 2.2.2 Fie G=(VN, VT, S, P) o gramatică de tip 3. Atunci există un automat finit nedeterminist
F),qδ,Σ,(Q,M0
cu T(M)=L(G).
▼ Demonstraţie:
Construim NN VT {T},VQ ; Sq0 ;
Dacă PλS , atunci T}{S,F şi S nu apare la dreapta nici unei reguli; dacă
PλS , atunci {T}F ;
TVa ,a)δ(T, ;
Dacă a)δ(B,T atunci VB , Va
PaB
NT
;
Dacă a)δ(B,C atunci VCB, , Va
PaCB
NT
;
Dacă există N
VB care nu apare în membrul stâng al nici unei reguli din P, atunci
TVa ,a)δ(B, .
Atunci M simulează derivaţiile în G. Să arătăm că, într-adevăr, T(M)=L(G):
a) Fie L(G)...aaaxn21 , 1n . Atunci:
n1n211n1n2111a...aaaA...aaa...AaS
pentru anumite variabile Ai din VN. Din construcţia automatului M avem:
)aδ(S,A11
)a,δ(AA212
…
)a,δ(AAn1-n
Aşadar:
(S, a1a2…an)├ (A1, a2…an)├ …├ (An-1, an) ├ (A,λ)
Adică cuvântul T(M)...aaa n21 x .
Pentru că x a fost din L(G) T(M)L(G)
b) Fie T(M)x , 1|| x există stările S,A1,…,An-1,T astfel încât:
)a,δ(AT
...
)a,δ(AA
)aδ(S,A
n1n
212
11
PaA
...
PAaA
PAaS
1n
221
11
deci are loc derivaţia:
n1n211n1n2122111a...aaaA...aaa...AaaAaS
De aici L(G)T(M) L(G) x
Din (a) şi (b) L(G)T(M) . ▲
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 F),qδ,Σ,(Q,M0
- automat finit determinist.
Definim o gramatică de tip 3, P),qΣ,(Q,G0
astfel încât:
(i) q → ap (q,a) = p
(ii) q → a (q,a) = p F
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 16 -
0B][A,, 1[S]B][A,, B]0[A,B][A,
0[B], 1[S][B], B]0[A,[B]
0[B][S]
:P
▲
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.
§ 2.3 Minimizarea automatului finit 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ă S)x (xRx,
2) Simetrică yRx) (xRy
3) Tranzitivă xRz) yRz(xRy,
O relaţie de echivalenţă peste S împarte mulţimea S în clase de echivalenţă, submulţimi disjuncte Si
astfel încât
ii
i
SS
xRySyx,.
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 F),qδ,Σ,(Q,M0
un automat finit determinist şi q1,q2 două stări distincte.
Spunem că Σx distinge q1 de q2 dacă:
x),(q1
├* λ),(q
3
x),(q2
├*
λ),(q4
şi una şi numai una dintre stările q3 şi q4 este stare finală adică:
q3 F q4 F
şi q4 F q3 F.
Definiţia 2.3.5 Spunem că q1 şi q2 sunt k-nedistinctibile (2
k
1qq ) 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 x),(q0
├ λ)(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 F),qδ,Σ,(Q,M0
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ă )"(" :
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 17 -
a) Dacă F are 0 sau n stări demonstraţia este imediată.
b) Presupunem că 0 card(F) n.
Vom demonstra că 013n2n
...
.
Observăm că pentru q1,q2Q avem:
a),δ(qa),δ(q ,a qq qq (2)
F respectiv, sau, Fq,q F\Qsau Fλ),δ(q λ),,δ(q qq (1)
2
1-k
12
1-k
1
k
1
2121
0
1
Relaţia 0
partiţionează Q în două clase de echivalenţă: F şi K\F.
Dacă k1k
atunci 1
k
este o rafinare a lui k
şi conţine cel puţin o clasă de echivalenţă în plus.
Pentru că sunt cel mult n-1 stări în F sau Q\F , cel mult n-2 rafinări a lui 0
. Aşadar, este prima
relaţie k
pentru care k1k
.▲
Observaţia 2.3.4 Două stări sunt distinctibile dacă ele se pot distinge pe un şir de intrare de lungime
mai mică decât numărul stărilor.
§ 2.4 Algoritmi pentru minimizarea automatului finit
(A) Algoritm de minimizare[1]
Fie M=(Q,,,q0,F). Se construieşte M’ redus parcurgând următorii trei paşi:
A.1 Se elimină întâi nodurile inaccesibile (conform algoritmului (B))
A.2 Se construiesc relaţiile de echivalenţă ,...,10
până când relaţia se stabilizează adică 1kk
.
Alegem k
.
A.3 Se construieşte M’=(Q’, , ’, q0, F’) unde Q’ e mulţimea claselor de echivalenţă ale lui Q,
astfel:
’([q],a)=[p] dacă (q,a)=p
q 0’=[q0]
F’= [q] qF
(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
- q0Q
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:
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 18 -
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:
w),q(0 ├
*M” λ)(q,
x),q(0 ├
*M” λ)(q,
unde 0
q 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:
w),(q0
├*
M λ)(p,
x),(q0
├*
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 .
▼
Aplicăm algoritmul (A).
Pasul A.1 Toate nodurile sunt accesibile.
Pasul A.2 Construim relaţiile de echivalenţă.
Iniţializare ( 0-nedistinctibilitate ):
}q,q,q,{q},q,{q 0k432150
0
Analizăm 1-nedistinctibilitatea:
Start
Figura 2.4.1
q3
q0
q1
q5
q4
q2
a
a
a
b
b b
a
a
b
b
b
a
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 19 -
5
1
00
45
10
0
55
50
qb),δ(q
qb),δ(q
egale)(chiar qa),δ(q
qa),δ(q
(rămân în aceeaşi clasă)
2
1
10
52
31
0
22
41
qb),δ(q
qb),δ(q
qa),δ(q
qa),δ(q
(se vor separa în clase diferite)
3
1
10
03
31
0
33
41
qb),δ(q
qb),δ(q
qa),δ(q
qa),δ(q
(se vor separa în clase diferite)
Ştiind deja că q1 se separă de q2 şi de q3, trebuie văzut dacă q2 şi q3 rămân totuşi împreună:
3
1
20
03
52
0
33
22
qb),δ(q
qb),δ(q
qa),δ(q
qa),δ(q
(rămân în aceeaşi clasă de echivalenţă)
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ă:
4
1
10
24
31
0
14
41
qb),δ(q
qb),δ(q
qa),δ(q
qa),δ(q
Aşadar, s-a obţinut:
}q,{q},q,{q},q,{q 1k324150
1
Să analizăm 2-nedistinctibilitatea:
5
2
01
45
10
1
55
50
qb),δ(q
qb),δ(q
qa),δ(q
qa),δ(q
4
2
11
24
31
1
14
41
qb),δ(q
qb),δ(q
qa),δ(q
qa),δ(q
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 20 -
3
2
21
03
52
1
33
22
qb),δ(q
qb),δ(q
qa),δ(q
qa),δ(q
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:
}q,{q},q,{q},q,{q 2k324150
2
Deoarece 21
, 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,q,{q210
şi este descris în Figura 2.4.2 .
▲
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.
(C) Algoritm de minimizare[7]
Fie M=(Q,,,q0,F). Algoritmul va marca perechile de strări (p,q.). O pereche (p,q) va fi marcată în
momentul în care se descoperă că p şi q nu sunt echivalente. Se construieşte M’ redus parcurgând
următorii cinci paşi:
C.1 Se elimină întâi nodurile inaccesibile (conform algoritmului (B))
C.2 Se scrie tabelul tuturor perechilor (p,q), iniţial nemarcate.
C.3 Se marcheză (p,q) dacă p F şi q F sau invers.
C.4 Se repetă următoarele până când nu se mai schimbă nimic în table:
Dacă există o pereche nemarcată (p,q) astfel încât ((p,a), (q,a)) este marcată pentru un a ,
atunci marchează perechea (p,q).
C.5 Perechile nemarcate (p,q) sunt perechile echivalente.
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
Start
Figura 2.4.2
q0
q1
q2 a
a
a b
b
b
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 21 -
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
C3. Marcheză perechile: (stare finală, stare nefinală) .
0
X 1
X _
2 _ X X 3
_ X X
_ 4
X _
_ X X 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).
Verificând toate perechile nemarcate se obţine tabelul următor:
0
X 1
X _
2 _ X X 3
_ X X
_ 4
X X X X X 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
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 22 -
§ 2.5 Lema de pompare pentru mulţimi regulate
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 wL
ş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ă wT(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:
w),(q0
├* )w,(qi
├* z),(qj ├
* λ)(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 :
z)xy,(q i
0├
* z)y(p, i
├* z)y(p, 1-i
├* …├
* z)(p, ├
* λ)(r,
Deci xyizT(M), i0.
Pentru i = 0 :
xz),(q0
├* z)(p, ├
* λ)(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 aib
i i1 nu este o
mulţime regulată.
▼
Presupunem că p astfel încât pentru wL : |w| p, w=xyz, |y|) p şi w’=xyizL.
- dacă y=aj cu ji, atunci a
i+jb
iT(M) , ceeace contrazice structura limbajului deci este imposibil;
- dacă y=bj, atunci a
ib
j+iT(M) ceeace contrazice din nou structura limbajului deci este imposibil;
- dacă y=ajb
k cu ji şi ki, atunci a
ib
ka
jb
iT(M) din nou imposibil
aib
i i1 nu e o mulţime regulată pentru că nu respectă lema de pompare. ▲
§ 2.6 Gramatici regulate şi expresii regulate Să considerăm următorul exemplu în care folosim operaţiile cu limbaje definite în § 1.3:
Exemplul 2.6.1 Fie următoarele două alfabete:
L={A,B,…,Z,a,b,…,z}, alfabetul literelor mari şi mici
C={0,1,…,9}, alfabetul cifrelor din baza 10.
Cu aceste alfabete, pe care le putem chiar considera limbaje formate din cuvinte de lungime 1, putem
construi numeroase alte limbaje, cum ar fi:
(a) CL = mulţimea literelor şi a cifrelor;
(b) LC = mulţimea cuvintelor de lungime 2, formate din o literă urmată de o cifră;
(c) L4 = mulţimea cuvintelor formate din exact patru litere;
(d) L* = mulţimea cuvintelor formate din oricâte litere (inclusiv cuvântul vid);
(e) L( CL )* = mulţimea cuvintelor de lungime cel puţin 1, formate din litere şi cifre, primul
caracter fiind obligatoriu o literă;
(f) C+ = mulţimea şirurilor numerice formate din cel puţin o cifră.
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 23 -
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ă T
Va , 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 21
LL ;
b) Concatenarea (e1)(e2), indicând 21
LL ;
c) Închiderea Kleene (e1*), indicând
1L .
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)
(s|t)r=(sr)|(tr)
Concatenarea este distributivă la stânga
şi la dreapta faţă de alternare
λr=r
rλ=r
Cuvântul vid este element neutru pentru concatenare
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 {1
i | i=0,1,2,…}.
d) a*b* reprezintă limbajul 0nm,ba nm ;
e) (ab)* reprezintă limbajul 0m(ab)m ;
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).
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 24 -
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:
9|...|1|0|z|...|c|b|a|9A|...|1A|0A|zA|...|cA|bA|aAAz|...|c|b|a|zA|...|cA|bA|aAS
şi de expresia regulată:
(a|b|c| . . . |z) (a|b|c| . . . |z|0|1| . . . |9)*
Putem folosi <literă> pentru a scurta reprezentarea lui z|...|c|b|a şi <cifră> pentru 9|...|1|0 ,
expresia putând fi scrisă în acest caz astfel:
<literă>(<literă>|<cifră>* .
§ 2.7 Algoritm de transformare a unei gramatici regulate într-o expresie regulată
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ă,
considerăm gramatica regulată care generează limbajul 1mn,baa nm :
aCaCCbCBaBSaSS
Î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:
a|aCCbCB
aB|aSS
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:
a*baB
B)|a(SS
Apoi B poate fi înlocuit în prima ecuaţie a)*ba|a(SS
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]
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 25 -
Intrare O gramatică regulată G, având regulile a},{aXψ ψ,Xji
, cu X1, simbol iniţial.
Ieşire Expresia regulată echivalentă cu G.
Pas 1. Transformarea în ecuaţii regulate:
- Pentru fiecare regulă ψXi a lui G, Execută:
- Dacă ecuaţia Xi nu a fost iniţializată
Atunci defineşte ψXi
Altfel schimbă ψ|αXprin αXii , unde α este partea definită anterior a lui X i)
Pas 2. Aducerea în formă intermediară a sistemului de ecuaţii:
- Pentru fiecare i=1,2,…,n-1, Execută:
- Transformă ecuaţia X i în forma iiii
ψ|XαX , unde i
ψ este de forma
nin,1ii1,ii0,
Xβ|...|Xβ|β
iar αi şi fiecare βj,i sunt expresii regulate peste VT.
- Pentru fiecare j=i+1,i+2,…,n, Execută:
- Înlocuieşte Xi cu ii ψ* în ecuaţia pentru X j.
Pas 3. Rezolvarea ecuaţiilor:
- Pentru fiecare i=n,n-1,…,2,1, Execută:
- Transformă ecuaţia X i din forma iiii
ψ|XαX , unde i
ψ este o expresie regulată peste
VT, în ii ψ*X i .
- Pentru fiecare j=i-1,i-2,…,2,1, Execută:
- Înlocuieşte soluţia iψ* i a lui Xi în ecuaţia pentru Xj.
Pas 4. Stabilirea soluţiei:
- Soluţia este 11 ψ*
Observaţia 2.7.1 a) Primul pas al algoritmului transformă gramatica regulată într-o mulţime de ecuaţii de forma:
llkkjjm21iXψ|...|Xψ|Xψ|δ|...|δ|δX ,
unde fiecare Tii
Vψ,δ .
b) Pasul al doilea al algoritmului transformă fiecare ecuaţie în forma:
nin,1ii1,ii0,iiiXβ|...|Xβ|β|XαX
,
lucru posibil efectuând o serie de transformări algebrice.
c) În pasul al treilea se face substituţia înapoi pentru a rezolva mulţimea de ecuaţii. Soluţia pentru Xn
este uşor de găsit pentru că această ecuaţie este de forma n0,nnn
β|XαX şi deci soluţia este
n0,nn β*αX . Această soluţie se poate înlocui apoi în fiecare din ecuaţiile precedente din sistem, acolo
unde apare Xn. În general, îndată ce ecuaţia pentru Xi a fost rezolvată şi înlocuită în ecuaţiile precedente
rezultă că este rezolvată şi ecuaţia pentru Xi-1, care are numai variabilele Xi şi Xi-1 în membrul drept, iar
Xi a fost înlocuit.
Exemplul 2.8.1 Folosind algoritmul [EXPRESII REGULATE], să transformăm în expresie regulată
gramatica: PS,,cb,a,,BA,S,G , unde P este formată din regulile:
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 26 -
cBbBBaAbBAaAA
aSaAS
▼
Pas 1.
c|bBBa|bB|aAA
a|aAS
Pas 2. Nu este necesar
Pas 3. c*bB 3i
{a}a|c*{a}bbA
a|c*bb|aAA 2i
a|a*aa|c*bb*aaS
a|a)*a|c*bb*a(aS 1i
Pas 4. Soluţie: S= aa*bb*c | aa*. Limbajul reprezentat de această expresie regulată este
1n|a1mn,|cba nmn .▲
Exemplul 2.8.2 Folosind algoritmul [EXPRESII REGULATE], să transformăm în expresie regulată
gramatica PS,,cb,a,,CB,A,S,G , unde P este formată din regulile:
cCcBCbCBaBAaAA
aAS
▼
Pas 1.
c|cBCbCB
aB|aAAaAS
Singura ecuaţie care nu este în formă intermediară este ecuaţia pentru variabila C şi anume C =
cB|c. Este necesar atunci pasul 2 pentru transfomarea în formă intermediară:
Pas 2.
c|cbCCbCB
aB|aAAaAS
Pas 3. c*cbC
c|cbCC 4i
c*cbbB 3i
c*ab(cb)*aA
{a}aBA 2i
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 27 -
c*ab(cb)*aaS
aAS 1i
Pas 4. Soluţie: S = aaa*b(cb)*c sau, echivalent, S = aaa*bc(bc)*. Limbajul reprezentat de această
expresie regulată este 1m2,n|(bc)a mn . ▲
§ 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 w)(p, ├ w)(q, dacă şi numai dacă λ)δ(p,q ,
Σ wQ,p . În reprezentarea grafică, o astfel de tranziţie, practic fără citirea benzii de intrare la acel
pas, arată astfel:
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, Σ{λ}, δ, q0, 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ă.▲
Figura 2.9.1
p q
λ
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 28 -
Algoritmul de conversie a unei expresii regulate într-un AFN este următorul:
Algoritmul 2.8.1. Construcţia unui automat finit nedeterminist cu -tranziţii pentru o expresie regulată. Intrare: o expresie regulată r peste un alfabet , sub forma unui arbore sintactic.
Ieşire: un AFN, N pentru limbajul L(r)
Metodă: Construim N, parcurgând arborele sintactic de jos în sus, aplicând regulile (1) şi (2) şi
combinând automatele obţinute la fiecare nod, cu ajutorul regulei (3) unde:
1. pentru , construim automatul
cu i noua stare iniţială şi f noua stare finală. Automatul va recunoaşte limbajul {}.
2. pentru a, construim automatul
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)
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)
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
N(t)
N(s)
start i f
a start i f
start i f
i
N(s) N(t)
f
start i N(s) f
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 29 -
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:
Parcurgând acum arborele vom avea:
Pentru simbolul a avem:
Pentru simbolul b avem:
Pentru a|b avem:
Pentru (a|b)* avem:
Continând acest proces, în final vom obţine automatul următor:
a start 2 3
b start 4 5
a start 2 3
b 4 5
1 6
a 2 3
b 4 5
1 6 7 start 0
|
a *
b
.
.
b
. b
b a
b
b
a
start 0 1
2
10
3
4 5
6 7 8 9
.
.
.
b b
a
a
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 30 -
Toate automatele construite astfel sunt nedeterministe cu λ-tranziţii.
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. ▲
§ 2.9 Proprietăţi ale limbajelor de tip 3 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
Teorema 2.9.1 Clasa limbajelor de tip 3 este închisă în raport cu reuniunea.
▼ Demonstraţie:
Demonstraţia se poate face folosind automate finite nedeterministe sau folosind gramaticile generative
de tip 3. Alegem cea de a doua variantă (prima poate constitui un exerciţiu).
Fie L1, L2 două limbaje de tip 3 generate de gramaticile G1, G2:
)P,S,V,(VG
)P,S,V,(VG
22
(2)
T
(2)
N2
11
(1)
T
(1)
N1
, unde
λ \L)L(G
λ \L)L(G
22
11
Presupunem că (2)
N
(1)
NVV (în caz contrar, se poate face o redenumire a variabilelor astfel încât
condiţia să fie îndeplinită fiindcă variabilele nu apar în cuvintele limbajului) şi construim:
)P,S,VV,S V(VG33
(2)
T
(1)
T3
(2)
N
(1)
N3 ,
unde
22113213
(2)
N
(1)
N3
PαSsau PαS αS PPP
VVS
Dacă 21
LLλ (2211
PλSsau PλS ) atunci la mulţimea regulilor se adaugă λS3 .
Fie 1
Lw . Atunci:
33
*
G
*
GG11
PαS , wα wαS Lw311
.
Similar pentru 2
Lw .
Dacă wα*
G 3
,3
Sα , atunci wα*
G1
sau wα*
G 2
după cum *(1)
T
(1)
NVVα sau
*(2)
T
(2)
NVVα .▲
Teorema 2.9.2. Clasa limbajelor de tip 3 este închisă în raport cu complementarea.
▼ Demonstraţie:
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 31 -
Să arătăm această proprietate folosind automate finite deterministe. Fie F),qδ,Σ,(Q,M0
un
automat finit determinist, astfel încât T(M)=L. Fie ΣΣ1 şi s o nouă stare ( Qs ).
Construim {s})F)\(Q,q,δ,Σ{s},(QM0111
, unde:
11
11
1
Σapentru s,a)(s,δ
Σ\Σa Q,qpentru s,a)(q,δ
Σa Q,qpentru a),δ(q,a)(q,δ
M1 este construit adăugând o stare “capcană” la mulţimea stărilor, stare în care automatul intră pentru
orice simbol care nu e în Σ şi rămâne în ea indifferent de simbolul de intrare citit, iar apoi schimbând
stările finale cu cele nefinale.
Un cuvânt din T(M)\Σ*
1 este sau un cuvânt din Σ
* de la care M nu ajunge în stare finală, deci care nu e
acceptat de M, adică F\Qx),δ(q0
, sau este un cuvânt care conţine simboluri din Σ\Σ1
şi în
momentul depistării unui astfel de simbol M1 intră în starea s în care rămâne până analizează tot
cuvântul. ▲
Teorema 2.9.3 Clasa limbajelor de tip 3 este închisă în raport cu intersecţia.
▼ Demonstraţie:
Varianta 1.
Folosim pentru această demonstraţie una dintre relaţiile lui DeMorgan, din teoria mulţimilor:
2121LLLL ,
unde L reprezintă complementara lui L.
Din teoremele 2.6.1 şi 2.6.2 rezultă deci că dacă L1 şi L2 sunt limbaje regulate, atunci şi limbajul
21LL este regulat.
Sigur ca aceasta este o demonstraţie elegantă a teoremei dar ea nu ne furnizează nici un mijloc de
a construi gramatica sau automatul pentru 21
LL când cunoaştem gramaticile, respectiv automatele,
pentru L1 şi L2. Prezentăm in continuare o astfel de demonstraţie, care se poate face construind un
automat finit care să simuleze în paralel cele două automate M 1 si M2 astfel:
Varianta 2.
Fie )F,q,δ,Σ,(QM111111
şi )F,q,δ,Σ,(QM222222
două automate finite deterministe. Ele
acceptă mulţimile regulate T(M1) = L1, respectiv T(M2) = L2.
Presupunem că 21
QQ (dacă nu, se face o simplă redenumire a stărilor fiecăruia dintre ele, de
exemplu prin renumerotare). Putem presupune că ΣΣΣ21 (dacă nu, creăm
21ΣΣΣ ).
Construim automatul finit nedeterminist M3 care acceptă intersecţia 21
LL , după cum urmează:
M3 = (Q1 x Q2, , 3, [q0,q1], F1 x F2), unde 3 este definit de :
3([q,p], a) = [r,t] 1(p,a) = r şi 2(q,a) = t
Evident că automatul M3 intră într-o sare finală din F1 x F2 dacă şi M1 intră intr-o stare finală din F1 şi M2
intră intr-o stare finală din F2. ▲
Teorema 2.9.5 Toate mulţimile finite sunt limbaje de tip 3.
▼ Demonstraţie:
Dacă L este o mulţime finită de cuvinte, atunci }w,...,{wLn1
.
Arătăm întâi că pentru fiecare cuvânt Lwi , există Gi o gramatică de tip 3, astfel încât
ii
w)L(G . Fie wi= a1a2. . . an. Atunci mulţimea de reguli:
S → a1A1
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 32 -
A1 → a2A2
. . . . . . . . . . . . .
An-2 → an-1An-1
An-1 → an
generează cuvântul wi adică:
i
*
GwS
3
Deci limbajele n1,ii
w
sunt regulate.
Cum L este un limbaj finit, n
1ii
wL
, folosind Teorema 2.6.1 rezultă că L este un limbaj de tip 3.
O demonstraţie echivalentă se poate face şi construind un automat finit M, astfel încât T(M)=L.▲
Teorema 2.9.6. Clasa mulţimilor regulate este închisă în raport cu operaţia de oglindire.
▼ Demonstraţie:
Fie un automat finit F),qδ,Σ,(Q,M0
. Considerăm mulţimea regulată L=T(M).
Definim automatul finit nedeterminist M’ astfel încât să funcţioneze “invers” faţă de M:
)F,q,δΣ,},q{(QM00
, unde }{qF0
dacă T(M)λ sau }q,{qF00 dacă T(M)λ
având tranziţiile:
qa)(p,δ dac ă a)(q,δp
Fa)(p,δ dac ă a),q(δp0
Este uşor de demonstrat acum că L~
)MT( (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 )F,q,δ,Σ,(QM111111
şi )F,q,δ,Σ,(QM222222
două automate finite deterministe.
Ele acceptă mulţimile regulate T(M1), respectiv T(M2).
Presupunem că 21
QQ (dacă nu, se face o simplă redenumire a stărilor fiecăruia dintre ele, de
exemplu prin renumerotare). Putem presupune că ΣΣΣ21 (dacă nu, creăm
21ΣΣΣ ).
Construim automatul finit nedeterminist M3 care acceptă concatenarea ))T(MT(M21
după cum
urmează: )F,q,δΣ,,Q(QM313213
cu
pa)(q,δ iş Qpq, ădac , a)(q,δp
pa)(q,δ iş Fp ,Qq ădac , a)(q,δ p},{q
pa)(q,δ iş F\Qp ,Qq ădac , a)(q,δp
223
11132
11113
şi
212
22
3
Lλ ădac ,FF
Lλ ădac ,FF
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)T(M)T(M213
. ▲
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 33 -
Teorema 2.9.8 Clasa mulţimilor regulate este închisă în raport cu închiderea Kleene.
▼ Demonstraţie:
Fie F),qδ,Σ,(Q,M0
un automat finit determinist acceptând limbajul regulat L=T(M).
Construim automatul finit nedeterminist:
})q{F,q,δΣ,},q{(QM000
{p}a)(q,δ atunci F,pa)(q,δ ăDac
}q{p,a)(q,δ atunci F,pa)(q,δ ăDac
{p}a),q(δ atunci F,pa),(qδ ăDac
}q{p,a),q(δ atunci F,pa),(qδ ăDac
0
00
000
Se adaugă astfel o nouă stare iniţială 0
q pentru că, dacă λ trebuie să aparţină lui T(M)*, nu putem forţa
q0 să aparţină lui F3 căci M ar putea intra în q0 şi pe parcursul acceptării unui cuvânt când Fq0 .
a) Dacă *Lx atunci λx şi
300Fqλ),qδ( sau x=x1x2…xn cu Lx
i , iar în acest caz sunt
posibile situaţiile:
a.1) (0
q ,x1x2…xn)├* (p, x2…xn), Fp (pentru că Lx
1 ) 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) (0
q ,x1x2…xn)├* (q0,x2…xn)├
* (q0,x3…xn)├
*…├
*(q0,xn) ├ (r,λ) unde Fr .
Aşadar )MT(x .
b) Dacă )MT(x şi x=a1a2…am , atunci există stările q1,q2,…,qm astfel încât:
Qq,...,q,q iş
Fq
)a,q(δq
)a,q(δq
m21
m
1ii1i
101
Atunci, pentru un anume i avem:
sau
F)a,(qδ
1ii
01i sau 1i1ii
q)a,δ(q
.
Deci x poate fi scris în forma x=x1x2…xn, unde Lxj ( F)x,δ(q
j0 ). ▲
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
ΔRa
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(Rf(R)
)f(R)f(R)Rf(R
)f(R)f(R)Rf(R
2121
2121
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 34 -
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(ef(e)
)f(e)f(e)ef(e
)f(e|)f(e)e|f(e
2121
2121
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:
1 h(a)
wh(x) x (w)h
wh(x) x (w)h
Lh(x) x (L)h
1
1
1
Teorema 2.9.10 Clasa mulţimilor regulate este închisă în raport cu homomorfismul şi cu
homomorfismul invers.
▼ 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.
Automatul M va fi un automat cu λ-tranziţii care citeşte câte un simbol ai de pe banda de intrare şi
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:
a0 a1 … ai … an …
Fig.2.9.1
CF pt.M
h(ai)
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 35 -
’([λ,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 M1 şi M2, ale căror funcţii de tranziţie δ1 şi δ2
sunt definite în următoarele tabele:
Să se construiască automatele finite deterministe echivalente pentru fiecare dintre cele două automate.
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;
3. Să se construiască automate finite deterministe pentru fiecare dintre mulţimile următoare:
a. Mulţimea cuvintelor peste alfabetul {0,1} care se termină în 010;
b. Mulţimea cuvintelor peste alfabetul {0,1} care conţin cel puţin trei apariţii consecutive ale lui 1;
c. 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:
d. Mulţimea cuvintelor peste alfabetul {0,1} care încep cu 1 şi, interpretate ca un număr în baza 2,
sunt divizibile prin 3;
e. Mulţimea cuvintelor peste alfabetul {0,1} pantru care al treilea simbol de la dreapta spre stânga
este 1.
4. Să se construiască automate finite nedeterministe pentru fiecare dintre mulţimile următoare:
a. Mulţimea cuvintelor peste {0,1} astfel încât să conţină doi de 0 separaţi de un număr par de 1;
b. Mulţimea cuvintelor peste alfabetul {a,b,c} astfel încât să conţină subcuvântul aba sau bab.
Σ δ1
0 1
q0 q0,q1 q0
q1 q2 q2
q2 q3 -
Q1
q3 q3 q3
Σ δ2
0 1
p q,s q
q r q,r
r s p
Q2
s - p
M1 = (Q1, Σ, δ1, q0, { q3}) M2 = (Q2, Σ, δ2, p, { q,s})
q0 q1
q2 q3
Start 0
0
0
0
1 1 1 1
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 36 -
5. Pornind de la automatul finit din exerciţiul 2 să se construiască o gramatică de tip 3 care să genereze
limbajul T(M).
6. Să se construiască un automat finit şi o gramatică de tip 3 pentru limbajul;
L = {a (a2b
3)i b | i > 0}
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.
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 37 -
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.
§ 3.1 Arbori de derivaţie pentru gramaticile I.D.C.
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 VN, iar α un şir format din variabile şi terminale, adică α (VN VT)*.
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 TN
VV ;
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,….,Ak sunt toţi descendenţii direcţi ai lui A în ordine de la stânga spre dreapta
atunci : AA1A2…Ak este o regulă din P.
Exemplul 3.1.1
▼ Fie G = ({S,A,B},{a,b},S,P), unde mulţimea P conţine regulile:
AA1A2…Ak
A
A1 A2 Ak …
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 38 -
bSB
aSA
bS
bBAS
aS
aABS
Pentru această gramatică, un arbore
de derivaţie având frunzele a,a,b,b
şi a este cel din 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
ab)▲
Teorema 3.1.1 Fie G =(VN,VT,A,P ) o gramatică I.D.C. Atunci pentru λα , (S αG
) există un
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
AG
α ) dacă şi
numai dacă există un subarbore cu rădăcina A al cărui rezultat este α .
Se observă că regulile din P sunt aceleaşi pentru orice gramatică GA, deci
( A αAG
) (A αBG
)
şi, pentru că G = GS, avem (A αAG
) (A αG
).
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
AG
α :
Figura 3.1.1.
S
a A B
a S b S
b a
Figura 3.1.2.
A
a S
b
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 39 -
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
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 (AA1….AkP).
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 α*
G i).
Deci AGA1A2…Ak
G
α...αααk21 ,
adică (A α*
G ).
b) Presupunem acum că A αAG
. Vom arăta că există un arbore de derivaţie cu rezultatul α în GA, prin
inducţie relativ la numărul de paşi ai derivaţiei.
b1) Dacă A αAG într-un singur pas rezultă că ( A α P ) şi dacă α =A1A2…Ak rezultă din
definiţia arborelui de derivaţie că există un arbore cu rezultatul α :
Figura 3.1.3.
A
A1 A2 Ak …
Figura 3.1.4
A
A1 A2 Ak …
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 40 -
b2) Presupunem că A αAG
în n paşi şi că pentru orice derivaţie a lui β cu numărul de paşi mai
mic decât n există o derivaţie cu rezultatul β . Fie primul pas al derivaţiei αA*
de forma
AA1A2…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,..,Tk de rădăcini A1,A2,…,Ak, cu rezultatele k21
α,...,α,α atunci când
Ai iG
αA
.
Deci dacă la arborele din Figura 3.1.4 adăugăm subarborii Ti, obţinem:
Rezultă că arborele din Figura 3.1.5 (în care câte un arbore Tj poate fi vid, dacă AjVT) are
rezultatul format din rezultatele subarborilor T1, …,Tk în ordine de la stânga α....αααk21 . ▲
§ 3.2 Forme normale
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.
Forma normală Chomsky
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 ABC sau Aa, cu A,B,CVN şi aVT.
▼Demonstraţia se gaseste in [4]▲
Forma normală Greibach
În această formă normală fiecare regulă are membrul drept începând cu un terminal, eventual urmat de
variabile.
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 AVN, aVT, α N
V ( α un şir de variabile,
posibil vid).
▼Demonstraţia se gaseste in [4]▲
§ 3.3 Teorema de pompare pentru limbaje I.D.C.(lema Bar-Hillel)
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ă Lz cu p | z| , atunci z poate fi scris sub forma:
F ig u ra 3 .1 .5
A
A 1 A 2 A k…
T 1 T 2 T k
α 1 α 2 α k…
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 41 -
z = uvwxy, unde
λ) ambelesunt nu x (v, 0 | vx |
q |vwx | astfel încât pentru fiecare întreg 0i ,
Lzwxuv ii .
▼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ă Lz şi p | z | , atunci arborele unei derivaţii a lui z în gramatica G conţine un
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.
Exemplu: G=({A,B,C},{a,b},A,P), unde
P={ bB a,A BA,C BA,B BC,A }
a)
Legendă:
drum R
z3=bb z2=a z4=λ z=bbbaba
b) c)
Figura 3.4.1
A
C B
B A
B C
B A
b
b
b a
B A
b a
n1
n2
A
B C
b B A
b a
n1
n2
A
a
n2
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 42 -
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 n2 ş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 BCA , unde B,CN
V . Subarborele T2 trebuie să fie completat în interior
sau de subarborele lui B sau de subarborele lui C.
Avem atunci 423
*
G43
*
GzzzAzzA , unde q |zzz | 423 . De aici rezultă că
i
2
i*
G
ii*
G 4343zzzAzzA pentru 0i .
Evident şirul z poate fi scris sub forma yzzuz423
, pentru anumiţi u şi y.
Vom pune acum v=z3, w=z2 şi x=z4, demonstraţia fiind astfel încheiată. ▲
Observaţia 3.4.1 Teorema 3.4.1 se poate aplica pentru a demonstra că L={akb
kc
k | 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 = akb
kc
k
(k 0), nu este posibilă alegerea vreunei descompuneri de forma z=uvwxy cu proprietăţile specificate în
teorema amintită şi astfel încât Lywxuv ii .
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 Motiv Lzwxuv ii
I.
am
(an)a
k-m-nb
kc
k
1na
2na 3n
a Grupul de simboluri "a" se alungeşte
independent de grupurile "b" şi "c".
1na
2na nn
ba 3
Grupurile de simboluri "a" şi "b" se
alungesc în mod independent. În plus,
dacă n3,n 0 , simbolurile "a" şi "b" se
amestecă.
1na
32 nnba 4n
b Grupurile de simboluri "a" şi "b" se
alungesc în mod independent.
II.
am
(ak-m
bn)b
k-nc
k
21 nnba
3nb 4n
b
Grupul de simboluri "b" se alungeşte
independent de grupurile "a" şi "c". În
plus, dacă n1,n2 0 , simbolurile "a" şi
"b" se amestecă.
III.
akb
m(b
n)b
k-m-nc
k
1nb
2nb 3n
b Grupul de simboluri "b" se alungeşte
independent de grupurile "a" şi "c".
IV.
akb
m(b
k-mc
n)c
k-n
Similar cazului II. …
V.
akb
kc
m(c
n)c
k-m-n
1nc
2nc 3n
c Grupul de simboluri "c" se alungeşte
independent de grupurile "a" şi "b".
În concluzie, prin pompare se va afecta cel puţin una din proprietăţile limbajului considerat:
numărul de simboluri a, b, respectiv c este acelaşi (deci nu se pot multiplica subcuvinte formate dintr-
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 43 -
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ă {akb
kc
k | k 0} 1 2L L deci clasa limbajelor independente de context este diferită de
cea a limbajelor dependente de context: 1 2L L .▲
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={Sui | i=1,n}.
Dacă L(G1) este infinit, G1=(VN,VT,S,P1), considerăm pentru fiecare AVN gramatica
GA=(VN,VT,S,P1). Prin Teorema 3.4.2 se poate determina dacă L(GA) este finit sau nu.
Presupunem că A1,A2,…,Ak sunt variabilele care generează o infinitate de cuvinte şi că
B1,B2,…,Bm sunt variabilele care generează un număr finit de cuvinte.
Creem mulţimea de reguli P2 din P1 în modul următor:
Presupunem că C0C1C2…Cr este o regulă din P1, iar C0{A1,A2,…,Ak}. Atunci regula
C0u1u2…un este o regulă din P2, unde:
1. Dacă CiVT ui=ci
2. Dacă Ci {A1,A2,…,Ak} ui=ci
3. Dacă Ci {B1,B2,…,Bm} 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=('
NV ,VT,S,P2) unde
'
NV ={A1,A2,…,Ak}. Observăm că S trebuie să aparţină
lui '
NV pentru că L(GS) este infinit.
a) Evident, dacă ( βα2G
*
) atunci β(α1G
) deci L(G1)L(G2).
b) Pentru a demonstra L(G2)L(G1), demonstrăm prin inducţie asupra numărului de paşi din derivaţie
că dacă Ai
1G
w 1 i k unde w*
TV atunci Ai
2G
w.
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 AiC1C2…Cr .
Putem astfel scrie w sub forma w1w2…wr unde Ci
1G
wi , 1 i r.
Atunci există o regulă în G2 de forma Aiu1u2…ur,
unde
}A,...,{AC dac ă C
}B,...,{B VC dac ă wu
k1ii
m1Tii
i .
Dar ci
1G
wi în cel mult j paşi (Ci
G2
wi) .
Deci AG2 u1u2…ur
G2
w1w2…wr . ▲
Exemplul 3.4.1 Fie gramatica G=({S,A,B},{a,b,c,d},S,P), unde P={SASB, SAB, Aa, Ab,
Bc, Bd}). Să aplicăm Teorema 3.4.3.
▼Rezolvare:
Variabilele A şi B generează numai cuvintele a şi b respectiv c şi d, dar S generează o infinitate
de cuvinte. Atunci se construieşte G2=({S},{a,b,c,d},S,P2), mulţimea regulilor fiind:
P2: SaSc S ac SaSd S ad SbSc S bc SaSd S bd ▲
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 44 -
§ 3.5 Automate Push-down 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={{0,1} w| w~wc }, 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= c}S1S1,S0S0,{S .
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 q1.
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 q1, atunci plasează o farfurie verde pe stivă şi, în ambele
cazuri, rămâne în starea q1.
3) Dacă intrarea este c şi starea q1, îşi schimbă starea în q2 fără a acţiona asupra stivei.
4) Dacă intrarea este 0, starea q2 şi pe stivă se află o farfurie albastră, scoate farfuria şi rămâne în q 2,
iar dacă este 1, starea q2 ş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..
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:
ai … Banda de intrare
Z
Capul stivei
Z0
Figura 3.5.1
CONTROL
FINIT (Q)
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 45 -
I. - tranziţie cu simbol de intrare: în funcţie de simbolul de intrare, de capătul stivei şi de starea
controlului finit, sunt posibile anumite mişcări care constau fiecare din: o nouă stare a controlului finit şi
un şir (posibil vid) de simboluri care înlocuieşte capul stivei. După alegerea unei mişcări posibile,
dispozitivul avansează cu un simbol pe banda de intrare.
II. - "λ-tranziţie" : este similară cu mişcarea tip I., dar nu e utilizat nici un simbol de intrare.
Limbajul acceptat de un automat push-down se poate defini în două moduri:
mulţimea şirurilor de intrare care conduc la golirea memoriei push -down sau
mulţimea şirurilor de intrare pentru care automatu l intră într-o stare finală.
Cele două tipuri de acceptări sunt echivalente.
Formal, un automat push-down se defineşte prin:
Definiţia 3.5.1 Un automat push-down nedeterminist, M, este un sistem format din:
M = F),Z,qδ,Γ,Σ,(Q,00
,
unde:
Q este o mulţime finită de stări
Σ este un alfabet finit al benzii de intrare
Γ este un alfabet finit al memoriei push-down
Qq0 stare iniţială
ΓZ0 simbol de start al memoriei push-down
QF mulţimea stărilor finale
)(Q)λ(ΣQ:δ * P
Interpretarea expresiei )}γ,(p),...,γ,(p),γ,{(pZ)a,δ(q,mm2211
, unde
m1,i ,Γ γΓ, ZΣ,a Q,pq, *
ii , este aceea că automatul push-down aflat în starea q, cu a pe
banda de intrare şi Z în capul stivei, poate trece într-una din stările pi înlocuind pe Z cu i
γ şi apoi
avansează cu un simbol pe banda de intrare.
Interpretarea expresiei )}γ,(p),...,γ,(p),γ,{(pZ)λ,δ(q,mm2211
, unde
m1,i ,Γ γΓ, ZQ,pq, *
ii , este aceea că automatul push-down aflat în starea q şi având pe Z
în capul stivei, indiferent de simbolul aflat pe banda de intrare îşi schimbă starea într-una din stările pi şi
înlocuieşte pe Z cu i
γ fără să avanseze pe banda de intrare.
Exemplul 3.5.2 În exemplul anterior, automatul push-down acceptă limbajul {{0,1} w| w~wc }
prin memorie vidă (v.definiţia 3.5.4). Să descriem formal acest automat.
▼
M=({q1,q2},{0,1,c},{R,A,V},δ,q1,R, )
λ)},{(qR)λ,,δ(qVV)},{(qV),1,δ(q
λ)},{(qV),1,δ(qVA)},{(qA),1,δ(q
λ)},{(qA),0,δ(qAV)},{(qV),0,δ(q
R)},{(qR)c,,δ(qAA)},{(qA),0,δ(q
V)},{(qV)c,,δ(qVR)},{(qR),1,δ(q
A)},{(qA)c,,δ(qAR)},{(qR),0,δ(q
2211
2211
2211
2111
2111
2111
▲
Observaţia 3.5.1 Automatul din Exemplul 3.5.2 este determinist pentru că are o singură posibilitate de
mişcare la fiecare pas.
Un astfel de automat, idiferent dacă este determinist sau nedeterminist, se poate şi el reprezenta
printr-o diagramă de tranziţie[23], similară cu cea pentru automatul finit, cu excepţia faptului ca una
dintre etichetele unui arc între starea p şi starea q, este de forma:
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 46 -
(a, A→ BC) dacă (q, BC) (p,a,A)
sau, folosind forma din [13]:
(a, A, BC) dacă (q, BC) (p,a,A)
Să considerăm automatul push-down, definit printr-o diagramă de tranziţie, din figura 2.3.2, care
recunoaşte cuvintele limbajului:
{anb
n | n ≥ 0}.
Definiţia 3.5.2 O configuraţie instantanee este o pereche γ)(q, , unde Qq ş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 Z)a,δ(q,β)(p, , atunci scriem:
a : (q,Zγ)├M
(p,βγ) (Intrarea "a" trece automatul M din (q,Zγ) în (p,βγ).)
Dacă pentru fiecare λ}{Σa...,an1 , Qq,...,q
1n1
şi şirurile
*
1n1Γγ,...,γ
, avem:
ai : (qi,γi)├ M (qi+1,γi+1) n1,i , atunci scriem: a1… an : (q1,γ1)├
*
M (qi+1,γi+1)
Similar, se poate folosi descrierea instantanee, constituită din tripletul Zαaw,q, şi atunci
scriem: Zαaw,q, ├M
(p,w,βα) dacă (p, β) Z)a,δ(q, .
Definiţia 3.5.3 Limbajul acceptat prin stări finale de către automatul M este
)Zw,,(q ,Σ w {wL(M)00
* ├*
M F}p ,Γ γ,γλ,p, * .
Definiţia 3.5.4 Limbajul acceptat prin stivă vidă de către automatul M este
)Zw,,(q ,Σ w {wN(M)00
* ├*
M Q}p ,λλ,p, .
Exemplul 3.5.3 Să construim automatul push-down care acceptă limbajul {{0,1} w|w~w }.
▼
M=({q1,q2},{0,1},{z0,A,B},δ,q1,Z0, )
λ)},(qBB),,{(qB),1,δ(q
λ)},{(q)Zλ,,δ(qBA)},{(qA),1,δ(q
λ)},{(q)Zλ,,δ(qAB)},{(qB),0,δ(q
λ)},(qAA),,{(qA),0,δ(q
λ)},{(qB),1,δ(q)}BZ,{(q)Z,1,δ(q
λ)},{(qA),0,δ(q)}AZ,{(q)Z,0,δ(q
211
20211
10111
211
220101
220101
Spre exemplu, şirul de intrare 001100 este acceptat de automatul push-down deoarece există un
calcul de configuraţii care se finalizează prin golirea memoriei push-down după citirea benzii de intrare:
)Z,001100,(q01
├M
)AZ,01100,(q01
├M
)AAZ,1100,(q01
├M
├M
)BAAZ,100,(q01
├M
)AAZ,00,(q02
├M
)AZ,0,(q02
├M
)Zλ,,(q02
├M
├M
λ)λ,,(q2
,
q p
q
0, A → AA
1, A → λ
s
r
p
q
r
p
q
1, A → λ λ, Z0 → λ
0, Z0 → AZ0
λ, Z0 → λ
Figura 3.2.2
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 47 -
deci 001100 N(M) .
Problema care apare în acest exemplu este de a determina mijlocul cuvântului de pe banda de
intrare. Pentru determinarea mijlocului, singura condiţie cunoscută este de a avea pe banda de intrare doi
de 0 consecutivi sau doi de 1 consecutivi. Însă această condiţie nu determină în mod precis mijlocul
cuvântului de intrare, situaţia nefiind unică. Astfel, automatul push-down poate "bănui" că a ajuns la
mijlocul cuvântului de intrare ori de câte ori apar doi de 0 sau doi de 1 consecutivi. Deci, de câte ori
automatul întâlneşte două simboluri identice pe banda de intrare, are de ales între două variante:
"bănuieşte" că aici este mijlocul şi trece în starea q2, care începe să şteargă stiva, sau "bănuieşte" că nu
este la mijloc şi continuă să memoreze în stivă. Dacă a "bănuit" corect atunci va reuşi să-şi golească
stiva. De aici apare nedeterminismul. ▲
Observaţia 3.5.2
a) Un automat push-down este determinist dacă sunt îndeplinite următoarele condiţii:
- pentru fiecare Γ Zşi Σa Q,q corespunzătoare, Z)a,δ(q, nu conţine mai mult de un element;
- pentru fiecare Zşi Qq , dacă Z)λ,δ(q, atunci ,Z)a,δ(q, 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.
§ 3.6 Legătura dintre automatele push-down nedeterministe şi limbajele independente de context
Î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= F),Z,qδ,Γ,Σ,(Q,00
.
Construim M1= )X,,q,δ{X},ΓΣ,},q,{q(Q00λ
, unde δ este definit după cum urmează:
1) X)λ,,q(δX)Z,(q000
2) Γ Z,λΣa Q,q , Z)a,(q,δZ)a,δ(q,
3) Pentru toţi Z)λ,(q,δλ,q {X}Γ ZF,qλ
4) Pentru toţi Z)λ,,(qδλ,q {X}Γ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 )T(Mw2
. Atunci:
00
Zw,,q ├*
M2(q,λ,γ) pentru q Q .
Fie acum w intrarea lui M1;
- conform regulei 1), rezultă că 00
Zw,,q ├*
M1(q0,w,Z0X)
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 48 -
- conform regulei 2), rezultă că XZw,,q00
├*
M1(q,λ,γX) (M1 simulează pe M2)
- conform regulilor 3) şi 4), rezultă în final că γXλ,q, ├*
M1(qλ,λ,λ)
Aşadar )N(M w1
.
b) Dacă )N(Mw1
, atunci se vede că stiva este complet ştearsă numai dacă sunt aplicate regulile 3)
şi 4), deoarece regulile lui M2 nu pot şterge pe X. Aşadar, este necesar ca M2 să intre într-o stare finală cu
aceeaşi intrare ca M1, ca să poată fi aplicate reguli de tip 3 şi 4.
II. Reciproc, fie M1= ),Z,qδ,Γ,Σ,(Q,00 astfel încât L=N(M1).
Definim M2= }){qX,,q,δ{X},ΓΣ,},q,q{(Qf0f0
, unde δ este definit după cum urmează:
1) X)λ,,q(δX)Z,(q000
2) Z)a,,q(δZ)a,δ(q, Γ Z,λΣa Q,q
3) X)λ,(q,δλ),(q Qqf
Regula 1) îl face pe M2 să intre în configuraţia iniţială a lui M1. Regula 2) simulează pe M1 până
îşi goleşte stiva la citirea intrării. Regula 3) îl determină pe M2 să intre într-o stare finală dacă M1 şi-a
golit stiva iar în stiva lui M2 este doar X.
Demonstraţia este similară cu I. ▲
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= )S,,qδ,,V,V},({q1NT1
, unde A)a,,δ(q1
conţine γ),(q1
pentru fiecare
regulă PaγA .
Pentru a arăta că L(G)=N(M), observăm că:
xaα(xAβG β) Aβa,,q
1 ├
M αβλ,,q
1
Prin inducţie asupra numărului de paşi dintr-o derivaţie rezultă că:
)Vβα, ,VA ,Vypentru x, xyα(xAβ *
NN
*
T
*
G Aβy,,(q
1 )├
*
Mα)λ,,(q
1
Atunci : S)x,,(q x S1
*
G ├
*
Mλ)λ,,(q
1.
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 M1 nedeterminist;
iii) L=T(M2) pentru un automat push-down M2 nedeterminist.
§ 3.7 Proprietăţi de închidere pentru limbaje I.D.C.
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.
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 49 -
Teorema 3.7.1 Limbajele independente de context sunt închise la reuniune, concatenare şi produs
Kleene.
▼Demonstraţie:
Fie L1 şi L2 generate de )P,S,T,(VG11111
şi )P,S,T,(VG22222
. Presupunem că
V1 V2= . Atunci putem realiza următoarele construcţii de gramatici I.D.C:
Limbajul 21
LL este generat de )P,S,TT},{SV(VG33213213
, unde
}SS,S{SPPP2313213
.
Să demonstrăm că )L(GLL321
:
Fie 21
LLw ; înseamnă că w aparţine cel puţin unuia din cele două limbaje:
iL w:{1,2}i , altfel spus )L(G w:{1,2}i
i . Există deci o derivare a lui w în una din cele
două gramatici date, Gi, pornind de la simbolul iniţial al respectivei gramatici: wSiG
i
. Deoarece toate
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:
wSS :{1,2}i33 G
iG
3
, deci )L(G w 3 .
Rezultă că )L(GLL321
.
Fie )G(Lw3
; înseamnă că w poate fi generat cu regulile P3, pornind de la S3: wS 3G
3
.
Deoarece singurele S3-reguli sunt cele două redenumiri }SS,S{S2313
, rezultă că primul pas al
derivaţiei amintite nu poate fi decât rezultatul aplicării uneia d in aceste două reguli:
wSS :{1,2}i33 G
iG
3
, deci wS3G
i
.
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, {1,2}i , în funcţie de simbolul Si obţinut în
primul pas. Deoarece V1 V2= , rezultă că wSiG
i
, deci )L(Gwi
=Li.
S-a arătat astfel că 1
Lw sau 2
Lw , adică 21
LLw .
Rezultă că )L(GLL321
.
Ţinând cont de cele două implicaţii rezultă că limbajul 21
LL este generat de gramatica G3.
Următoarele construcţii se demonstrează în mod asemănător, constituind un bun exerciţiu:
a) Limbajul 21
LL este generat de )P,S,TT},{SV(VG44214214
, unde
}SS{SPPP214214
.
b) Limbajul *
1L este generat de )P,S,T},{S(VG
551515 , λ}S,SS{SPP
515515 .▲
Teorema 3.7.2 Familia limbajelor independente de context este închisă la substituţie.
▼Demonstraţie:
Fie L un limbaj I.D.C., *ΣL şi pentru fiecare Σa fie La un limbaj I.D.C.
Fie o gramatică G care generează limbajul iniţial, L=L(G). De asemenea, pentru fiecare simbol
Σa considerăm câte o gramatică astfel încât La=L(Ga).
Presupunem că variabilele lui G şi ale lui G a sunt distincte, oricare ar fi Σa .
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 50 -
Construim gramatica G I.D.C. în felul următor:
Variabilele lui G sunt variabilele lui G şi cele ale lui Ga, pentru Σa ;
Terminalele lui G sunt terminalele lui Ga;
Simbolul iniţial al lui G este simbolul iniţial al lui G;
Regulile lui G sunt cele ale lui Ga, pentru Σa , şi regulile lui G în care fiecare Σa se
înlocuieşte cu Sa (simbolul iniţial al Ga).
▲
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ă P)S,b},{a,({S},G , unde mulţimea regulilor este
λ}SbSaS,SaSbS,{SP . Se poate verifica faptul că L=L(G). Să considerăm limbajele de
substituţie:
1}n|1{0L nn
a , generat de regulile P(Ga)= 01}S1,0S{S
aaa ;
}{0,2}w|w~{wL *
b , limbaj generat de mulţimea de reguli
P(Gb)= λ}S2,2SS0,0S{Sbbbbb .
Atunci, conform construcţiei efectuate în demonstraţia Teoremei 3.7.2, gramatica rezultată este
G= )PS,{0,1,2},},S,S({S,ba
, cu mulţimea de reguli:
, , , 0 1, 01, 0 0, 2 2, }a b b a a a a b b b b bP S S SS S S S SS S S S S S S S S S S
Să generăm un cuvânt la întâmplare cu aceste reguli:
a b b b b bS S SS S 01SS S 01S S 012S 2S 0120S 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ă Σba,
avem:
b}{a, este I.D.C.
b}{a 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ă:
ba
LL este I.D.C.
ba
LL este I.D.C.
aL 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.
Corolar 3.7.1 Clasa limbajelor I.D.C. este închisă la homomorfism.
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
F),Z,qδ,Γ,Δ,(Q,M00
astfel încât L=T(M).
Construim un automat push-down M care să accepte (L)h 1, 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
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 51 -
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'.
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).
Astfel, L(M')= L(M)}h(w) {w , adică: L(M')= (L(M))h 1
Construcţia formală este )λF,Zλ],,[q,δΓ,Σ,,Q(M00
, unde:
Q’ = {[q,x] | q Q, iar x este un suffix al lui h(a),a }
Funcţia de tranziţie δ :
1) Y)λ,x],([q,δγ)x],([p, pentru fiecare Y)λ,δ(q,γ)(p, .
Astfel, M' simulează λ-mutările lui M, indiferent de conţinutul din buffer.
2) Y)λ,ax],([q,δγ)x],([p, dacă Y)a,δ(q,γ)(p, .
Astfel, M' simulează mutările lui M pe intrarea a din Σ, eliberând a din capul buffer-ului.
3) Y)a,λ],([q,δY)h(a)],([q, 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.
Să demonstrăm că L(M')= (L(M))h 1.
a) Mai întâi, să observăm că printr-o aplicare a regulii (3) urmată de o aplicare a regulilor (1) şi (2),
dacă α)h(a),(q, ├
Mβ)λ,(p, ,
atunci α)a,λ],([q, ├M α)λ,h(a)],([q, ├
Mβ)λ,λ],([p, .
Astfel, dacă M acceptă h(a), adică dacă )Zh(w),,(q00
├
Mβ)λ,(p, pentru Fp şi
Γβ , atunci
)Zw,λ],,([q00
├
Mβ)λ,λ],([p, ,
astfel încât M' acceptă w.
Deci L(M') (L(M))h 1 .
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:
h
Stiva lui
M şi M'
…
Figura 3.7.1
Intrarea lui M'
Controlul
lui M'
Buffer Controlul
lui M
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 52 -
)Z,...aaaλ],,([q0n210
├
M )α,...aaaλ],,([p
1n211├
M)α,...aa)],h(a,([p
1n211├
M
├
M)α,...aaλ],,([p
2n22├
M)α,...aa)],h(a,([p
2n322├
M. . .. . . .
├
M)α,aλ],,([p
nnn├
M)αλ,)],h(a,([p
nnn├
M)αλ,λ],,([p
1n1n , unde pn+1F.
Tranziţia din starea λ],[pi
în )]h(a,[pii
se face prin regula (3) iar celelalte tranziţii prin
regulile (1) şi (2).
Astfel, )Zλ,,δ(q)α,(p0011
şi )α),h(a,δ(p)α,(p :iiii1i1i
deci obţinem o recunoaştere şi din partea lui M:
)Z),...aah(a,(q0n210
├
M)α,...aaaλ],,([p
1n211├
M)α,...aaλ],,([p
2n22├
M…├
M
)α,aλ],,([pnnn
├
M )αλ,λ],,([p
1n1n , unde pn+1F.▲
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.4 Clasa limbajelor I.D.C. nu este închisă relativ la intersecţie .
▼Demonstraţie:
Să presupunem, prin absurd, că intersecţia oricăror limbaje I.D.C. este tot un limbaj I.D.C. Să
construim un contraexemplu:
Am demonstrat că limbajul }1i cb{aL iii nu este independent de context (v. Observaţia
3.4.1). Considerăm acum două limbaje care sunt I.D.C.:
}1j1,i cb{aL jii
1
}1j1,i cb{aL jji
2
Pentru aceste limbaje este uşor să construim câte un automat push-down sau sau câte o gramatică I.D.C.;
spre exemplu, o gramatică pentru generarea limbajului L2 ar putea avea setul de reguli:
bc}BbBc,Ba,AaA,AAB,{S .
Dar 21
LLL şi L nu este I.D.C., ceea ce contrazice presupunerea făcută. ▲
Corolar 3.7.2 Clasa limbajelor I.D.C. nu este închisă relativ la complementare .
▼Demonstraţie:
Ştim că clasa limbajelor I.D.C. este închisă la reuniune. Presupunând că ar fi închisă şi la
operaţia de complementare, şi ţinând cont de relaţiile lui de Morgan privind complementarea reuniunii (
C(A B)=C(A) C(B) ), am obţine concluzia că are loc închiderea şi la intersecţie, ceea ce contrazice
Teorema 3.7.4. ▲
Teorema 3.7.5 Dacă L este un limbaj I.D.C. iar R este o mulţime regulată, atunci RL este un limbaj
I.D.C.
▼Demonstraţie:
Fie L=T(M), M fiind un automat push-down, )F,Z,q,δΓ,Σ,,(QMM00MM
Fie şi R=T(A), unde A este un automat finit nedeterminis, )F,p,δΣ,,(QAA0AA
Construim un automat push-down M' pentru limbajul RL , î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: )FF,Z],q,[pδ,Γ,Σ,,Q(QMMA000MA
,
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 53 -
unde δ este definit astfel:
X)a,q],δ([p,γ)],q,p([ atunci când
X)a,(q,δγ),q(
pa)(p,δ
M
A
Desigur, dacă λa atunci pp .
Să demonstrăm acum faptul că RL =T(M')
a) Se demonstrează uşor prin inducţie relativ la i că dacă )Zw,],q,([p000
├i
M γ)λ,q],([p, , atunci
)Zw,,(q00
├i
Mγ)λ,(q,
şi w),(p0
├i
A
λ)(p,
pentru i=0 rezultatul e trivial, deoarece luăm p=p0, q=q0, γ=Z0 şi w=λ.
presupunem afirmaţia adevărată pentru i-1 şi fie
)Zxa,],q,([p000
├1-i
Mβ)a,],q',([p' ├
M γ)λ,q],([p, ,
unde w=xa şi Σa sau a=λ.
Conform ipotezei de inducţie, rezultă că:
px),(pδ0A
)Zx,,(q00
├
Mβ)λ,,q(
În plus, conform definiţiei,
pa),p(δA
şi β)a,,q( ├M
γ)λ,(q,
Utilizând toate acestea, obţinem:
pxa),(pδ0A
)Zxa,,(q00
├
Mγ)λ,(q,
sau, altfel scris,
T(M)xa
T(A)xa , ceea ce trebuia demonstrat.
b) Reciproc, se procedează într-o manieră similară, pentru a arăta că daca
)Zw,,(q00
├i
Mγ)λ,(q, şi w),(p
0├
i
A
λ)(p, atunci )Zw,],q,([p000
├
Mγ)λ,q],([p, ▲
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:
Stiva lui
M şi M'
…
Figura 3.7.2
Intrarea lui A, M şi M'
Controlul
lui M' Controlul
lui A
Controlul
lui M
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 54 -
G = (VN, VT, S, P) şi L = L(G).
Construim o nouă gramatică G’ = (VN, 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 }b}{a,w{wwL . 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 babaLL
1 ar fi şi el I.D.C.; dar
}1j1,i bab{aL jiji
1 nu este de acest tip, fapt ce se poate vedea cu ajutorul teoremei de
pompare:
Fie p,q N . Alegem z = qqqq baba = uvwxy, unde |v| + |x| > 0, |vwx| q. Posibilităţile de
alegere ale subcuvântului vwx sunt multiple (aib
j cu i+j q , b
i cu i q , b
j-ia
i cu i j q ), ele însă nu
permit crearea de cuvinte ywxuv ii 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
1}j,1idcb{aL jiji
2 .
Fie h(a)=h(c)=a şi h(b)=h(d)=b. Atunci )(Lh1
1 este format din toate cuvintele de forma
x1x2x3x4, unde x1 şi x3 au aceeaşi lungime în c}{a, , iar x2 şi x4 au aceeaşi lungime în
d}{b, .
Atunci 2
****
1
1 Ldcba)(Lh .
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 b
2n | n > 0}
c. {an+1
b3n
| n > 0}
d. {ai b
j | i j}
e. {ai b
j c
k | 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 → L x T 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 ]:
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 55 -
5. Să se construiască automate push-down pentru fiecare dintre mulţimile de la problema 1.
6. Să se construiască automate push-down pentru fiecare dintre mulţimile următoare:
d. {w | w {0,1}* N0(w) = N1(w)}, unde N0(w) reprezintă numărul de apariţii ale simbolului 0 în w;
e. {ai b
j | i ≤ j ≤ 2i}
f. Limbajul generat de gramatica G = ({S,A}, {a,b}, S, { S → aAA, A → bBS, A → aS, A → a})
7. Se consideră automatul push-down definit de M = ({q,p}, {0,1}, {Z,X}, , q, Z, ), unde este:
(q, 1, Z) = {(q, XZ)} (q, λ, Z) = {(q, λ)}
(q, 1, X) = {(q, XX)} (q, 0, X) = {(p, X)}
(p, 1, X) = {(p, λ)} (p, 0, Z) = {(q, Z)}
Să se construiască o gramatică independentă de context care să genereze N(M).
8. Se consideră limbajul L = {an b
n | n ≥ 1} {a
n b
2n| n ≥ 1}. Să se arate că L este un limbaj
independent de context (se construieşte un automat push-down nedeterminist).
Sfârşit
LIMBAJE FORMALE ŞI TEORIA AUTOMATELOR
- 56 -
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]. MARINESCU 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.