Sunteți pe pagina 1din 7

Teoria limbajelor formale-Cursul al 3 lea

1.1 Alfabet. Operatia de concatenare


Definiţie 1. O multime nevida, finita de elemente se numeste alfabet. Ele-
mentele acestei multimi, numite simboluri, sunt notate prin litere minuscule
a, b, c, ..., cifre 1, 2, 3, ... sau alte caractere.
Notam un alfabet cu litere majuscule A, B, C...
Exemplu 2. Multimile A = {a, b, c, d}, B = {0, 1} sunt alfabete. Alfabetul lim-
bii romane contine cele 31 de perechi de litere, majuscule si minuscule, folosite
pentru scrierea limbii romane. Alte exemple sunt alfabetul Morse sau Braille.
Definiţie 3. Fie A un alfabet.

i) O secventa finita, ordonata (a1 , a2 , ..., an ), n ∈ N ∗ , de simboluri din A, ai ∈


A, pentru orice i = 1, n, se numeste cuvant peste A. Pentru a simplifica
scrierea notam cuvantul (a1 , a2 , ..., an ) cu a1 a2 ...an . Cuvintele peste un
alfabet sunt desemnate cu litere mici u, v, w, ...
ii) Numarul n ∈ N ∗ se numeste lungimea cuvantului u = (a1 , a2 , ..., an ) si
scriem l (u) = n.
iii) Definim si un cuvant care nu contine nici un simbol din A, numit cuvantul
vid. Notam acest cuvant cu  ; lungimea lui este 0, l (ε) = 0.

Multimea tuturor cuvintelor peste un alfabet A (inclusiv cuvantul vid) este


notata cu A∗ , in timp ce A∗ {ε} este desemnata prin A+ .
Observaţie 4. 1. Fie a un simbol apartinand alfabetului A. In cele ce urmeaza
identificam simbolul a cu cuvantul ( 1-uplul) format doar cu simbolul a, (a).
Altfel spus, consideram multimea A ca fiind o submultime a lui A∗ . Aceasta
identificare se face cu ajutorul aplicatiei i : A → A∗ , i (a) = (a), numita incluz-
iune canonica.
2. Cuvantul aa...a ce contine p simboluri a, p ∈ N ∗ va fi scris si ap ; de
asemenea, notam a0 = ε, a ∈ A.
3. Cuvantul ε nu se identifica cu un simbol al alfabetului A. Totusi, in
anumite situatii, acceptam ca ε si fie notat la fel ca un simbol din A.
Exemplu 5. 1. Un exemplu important de alfabet este alfabetul limbii romane:

A = {A, a, Ă, ă, Â, Â, B, b, ....}.

1
Secventele de caractere u = matematica, v = abcd, w = ε sunt cuvinte peste
acest alfabet (in sensul definitiei date). Sa remarcam ca unele dintre aceste cu-
vinte, spre exemplu v = abcd sau w = ε, nu reprezinta cuvinte ale vocabularului
limbii romane.
Multimea cuvintelor limbii romane uzuale este stict inclusa in multimea A∗ ,
a tuturor cuvintelor peste A. Aceste consideratii justifica definitia matematica a
notiunii de limbaj, ce va fi data in capitolul urmator.
2. Alfabetul B = {0, 1, 2, 3, ..., 9} al cifrelor permite scrierea zecimala a
numerelor naturale. Observam si in acest caz ca nu toate cuvintele peste B
sunt numere naturale: 01234 ∈ B ∗ dar 01234 ∈ / N. Astfel, multimea N este
strict inclusa in B ∗ .
3. Alfabetul binar C = {0, 1} este util pentru scrierea secventelor (sirurilor)
de biti ale limbajului cod masina. Multimea cuvintelor peste C este infinita,
C ∗ = { 0, 1, 00, 01, 10, 11, 001, 011, ...}.
4. Multimea valorilor sistemului de codificare ASCII este un alfabet.
5. Lanturile de nucleotide ale ADN-ului, care stocheaza informatia biologica,
se pot scrie folosind alfabetul {A, C, G, T }.
6. Sa consideram alfabetul D = {a}. Multimea tuturor cuvintelor peste D
este D∗ = {ε, a, aa, aaa, aaaa, .....}.
7. Daca alfabetul A = ∅ (multimea vida) atunci A∗ = {ε}.
Definiţie 6. Fie A un alfabet. Spunem ca doua cuvinte u, v ∈ A∗ sunt egale si
scriem u = v daca:

i) u = ε si v = ε sau

ii) in cazul in care u = a1 a2 ...am si v = b1 b2 ...bn , m, n ∈ N ∗ , avem m = n si


ai = bi , pentru orice i = 1, n,
altfel spus daca ele au aceeasi lungime si sunt formate cu aceleasi simboluri.

Definiţie 7. Fie A un alfabet, iar u, v cuvinte peste A. Spunem ca u ∈ A∗


este factor al lui v daca exista x, y ∈ A∗ astfel incat v = xuy. Precizam si
urmatoarele cazuri particulare:

ii) in cazul in care x = ε, adica v = uy, u se numeste prefix sau factor la stanga
al lui v
iii) in situatia in care y = ε, adica v = xu, u se numeste sufix sau factor la
dreapta al lui v

Definiţie 8. Fie A un alfabet. Aplicatia · : A∗ × A∗ → A∗ care asociaza:

i) fiecarei perechi (u, v) ∈ A+ × A+ , unde u = a1 a2 ...am , v = b1 b2 ...bn , m,


n ∈ N ∗ , cuvantul u · v = a1 a2 ...am b1 b2 ...bn ∈ A+ (obtinut prin scrierea
simbolurilor cuvantului u, urmate de simbolurile cuvantului v, fara spatiu
intre ele)

2
ii) fiecarei perechi (u, ε) ∈ A∗ × A∗ cuvantul u · ε = u ∈ A∗
iii) fiecarei perechi (ε, v) ∈ A∗ × A∗ cuvantul ε · v = v ∈ A∗
se numeste operatia de concatenare a cuvintelor pe multimea A∗ .

Cuvantul u · v se numeste concatenatul sau produsul cuvintelor u, v ∈ A∗ .


Exemplu 9. Fie A alfabetul limbii romane. Concatenatul cuvintelor u = abcd
si v = mnp este cuvantul u · v = abcdmnp.

Propoziţie 10. Fie A un alfabet. Multimea A∗ − {ε} inzestrata cu restrictia


operatiei de concatenare la A∗ − {ε} este un semigrup.
Proof. Este evident ca restrictia operatiei ”·” la A∗ −{ε} este o lege de compoz-
itie interna. Asociativitatea se justifica astfel: fie u = a1 a2 ...am , v = b1 b2 ...bn ,
w = c1 c2 ...cp trei cuvinte arbitrar alese din A∗ − {ε}. Atunci putem scrie:

(u · v) · w = (a1 a2 ...am b1 b2 ...bn ) · c1 c2 ...cp = a1 a2 ...am b1 b2 ...bn c1 c2 ...cp =


a1 a2 ...am · (b1 b2 ...bn c1 c2 ...cp ) = u · (v · w) ,

pentru orice u, v, w ∈ A∗ , ceea ce implica concluzia.


Propoziţie 11. Fie A un alfabet. Multimea A∗ inzestrata cu operatia de con-
catenare este un monoid.
Proof. Demonstratia faptului ca ” · ” este interna si asociativa se face la fel ca in
propozitia anterioara. In plus, exista cuvantul ε ∈ A∗ astfel incat, pentru orice
cuvant u ∈ A∗ , avem
ε · u = u · ε = u.
Prin urmare (A∗ , ·) este monoid.
Definiţie 12. Monoidul (A∗ , ·) se numeste monoidul liber generat de multimea
A.
Observaţie 13. 1. In cele ce urmeaza concatenatul u · v va fi scris si in forma
uv.
2. Deoarece cuvintele (u · v)·w si u·(v · w) sunt egale, ele vor fi scrise uneori,
fara paranteze u · v · w, pentru a simplifica notatia.
3. Semigrupul (A∗ − {ε}, ·) , respectiv monoidul (A∗ , ·) nu sunt, in general,
comutative.
Exemplu 14. 1. Fie alfabetul A = {a, b} si sa construim monoidul A∗ . Este
clar ca ε, a, b ∈ A∗ . Concatenand doua simboluri obtinem aa, ab, ba, bb, ele-
mentele de lungime 2 ale monoidului. Analog, gasim cuvintele de lungime 3 :
aaa, aab, abb, aba, etc. Sa remarcam ca daca u = ab, v = bb, atunci u · v 6= v · u.

3
1.2 Proprietatea de universalitate a monoidului liber
Teoremă 15. Fie A un alfabet si i : A → A∗ incluziunea canonica. Atunci,
oricare ar fi un monoid (M, ∗) si o functie f : A → M, exista un morfism de
monoizi f : (A∗ , ·) → (M, ∗) unic determinat, astfel incat urmatoarea diagrama
este comutativa, ceea ce inseamna f = f ◦ i.
Proof. Definim aplicatia f astfel: pentru orice u ∈ A∗ , u = a1 a2 ...am 6= ε,
def
m ∈ N ∗ , definim f (u) = f (a1 · a2 · ... · am ) = f (a1 ) ∗ f (a2 ) ∗ ... ∗ f (am ) , iar
daca u = ε, f (ε) = eM .
In mod evident, avem f (a) = f (a) , pentru orice a ∈ A.

i) Sa demonstram ca aplicatia definita este un morfism de monoizi. Fie u, v ∈


A∗ , u = a1 a2 ...am , v = b1 b2 ...bn si sa aratam ca f (u · v) = f (u) ∗ f (v) .
Atunci sunt adevarate:
def
f (u · v) = f (a1 a2 ...am b1 b2 ...bn ) = f (a1 )∗...∗f (am )∗f (b1 )∗...∗f (bn ) = f (u)∗f (v) .

Deoarece este adevarata si egalitatea f (ε) = eM , rezulta ca f : (A∗ , ·) →


(M, ∗) este morfism.
ii) Pentru orice simbol a ∈ A avem:

(f ◦ i) (a) = f (i (a)) = f (a) = f (a) ,

prin urmare f ◦ i = f.
iii) Pentru a dovedi unicitatea consideram un alt morfism g : (A∗ , ·) → (M, ∗),
care face diagrama urmatoare comutativa:
Prin urmare f = g ◦ i si sa aratam ca g = f . Egalitatea f ◦ i = g ◦ i
antreneaza f (a) = g (a) , pentru orice a ∈ A. Daca u = a1 · a2 · ... · am ∈ A∗
este arbitrar ales avem:

g (u) = g (a1 · a2 · ... · am ) = g (a1 ) ∗ g(a2 ) ∗ ... ∗ g(am ) =



= f a1 ) ∗ f (a2 ) ∗ ... ∗ f (am = f (a1 · a2 · ... · am ) = f (u) ,

deci g = f .

Definiţie 16. Un monoid abstract (M, ∗) se numeste liber daca exista un alfabet
A astfel incat monoidul (A∗ , ·) este izomorf cu (M, ∗)
Exemplu 17. Monoidul (N, +) este un monoid liber generat de submultimea
A = 1.
Definiţie 18. Fie (M, ∗) un monoid si B ⊆ M. Cel mai mic (in sensul incluzi-
unii) submonoid al lui M, care include submultimea B se numeste submonoidul
generat de B. In aceasta situatie, spunem ca B este un sistem de generatori
pentru submonoidul generat.

4
Teoremă 19. Fie A un alfabet si S un submonoid al lui (A∗ , ·), avand sistemul
minimal de generatori B. Atunci S este liber daca si numai daca egalitatea

x1 x2 ...xm = y1 y2 ...yn , m, n ∈ N, xi , yj ∈ B

implica m = n si xi = yi , pentru orice i ∈ {1, .., n}.

1.3 Limbaje formale


Definiţie 20. Fie A un alfabet. O submultime de cuvinte L ⊆ A∗ se numeste
limbaj formal peste alfabetul A. Notam limbajele peste un alfabet cu litere ma-
juscule L, N, M, ...
Un limbaj poate fi definit in diverse moduri. Astfel este posibil sa precizam
un limbaj folosind limba romana colocviala (un limbajul natural) ca metalimbaj:

i) limbajul L = {00, 01, 10, 11}, definit peste alfabetul A = {0, 1} poate fi definit
ca fiind limbajul cuvintelor peste alfabetul A = {0, 1} formate din doua
simboluri;
ii) limbajul M = {0, 01, 011, 0111, ...} poate fi descris ca fiind limbajul cuvin-
telor peste A = {0, 1} care contin exact un 0, iar acesta este primul simbol.
iii toate cuvintele din vocabularul limbii romane formeaza limbajul numit limba
romana.

Din punctul de vedere al teoriei multimilor, un limbaj poate fi specificat


astfel:

1. extensional-prin enumerarea elementelor sale; spre exemplu limbajul cu-


vintelor peste alfabetul A = {0, 1} formate cu 2 simboluri este L =
{00, 01, 10, 11}.
2. intensional-printr-o proprietate caracteristica a elementelor sale;

i) astfel limbajul L definit la 1) poate fi definit prin L = {u ∈ A∗ |l (u) =


2}.
ii) iar limbajul M de la ii) : M = {v ∈ A∗ |v = 0u, u ∈ {1}∗ }
iii) limbajul N = {v ∈ {a, b}∗ |v = aabu, u ∈ {a, b}∗ } este limbajul
cuvintelor peste alfabetul B = {a, b} care au ca prefix cuvantul aab.

O alta modalitate de a defini un limbaj este de a preciza un formalism care


permite fie generarea fie recunoasterea cuvintelor acestuia. Astfel un limbaj
poate fi definit ca fiind multimea cuvintelor peste un alfabet:

1. descrise printr-o expresie regulata


2. acceptate de sisteme (programe) numite automate finit deterministe sau
nedeterministe

5
3. generate de o gramatica

Miezul teoriei limbajelor formale il constituie exact studiul sistematic al


acestor formalisme.

1.3.1 Operatii cu limbaje


Limbajele formale peste un alfabet A fiind submultimi ale lui A∗ , putem defini
pe P (A∗ ) operatiile uzuale cu multimi: daca L1 , L2 , L ⊆ A∗ definim L1 ∪ L2 ,
L1 ∩ L2 , L1 − L2 , cL = A∗ − L in mod obisnuit.
Concatenarea este o operatie specifica limbajelor:
Definiţie 21. Fie A un alfabet si L1 , L2 ⊆ A∗ . Limbajul notat L1 · L2 =
{u1 · u2 |u1 ∈ L1 , u2 ∈ L2 } se numeste concatenatul limbajelor L1 , L2 . Aplicatia
· : P (A∗ ) × P (A∗ ) → P (A∗ ) care asociaza fiecarei perechi (L1 , L2 ) limbajul
L1 · L2 se numeste operatia de concatenare a limbajelor.
Exemplu 22. Fie L1 = {b, cc}, L2 = {ab, acc} limbaje peste alfabetul B =
{a, b, c}. Avem L1 · L2 = {bab, bacc, ccab, ccacc}.
Propoziţie 23. Sa consideram L1 , L2 , L, M1 , M2 limbaje peste alfabetul A
astfel incat L1 ⊆ L2 si M1 ⊆ M2 . Atunci sunt adevarate:

i) L1 M1 ⊆ L2 M2 ;
ii) LM1 ⊆ LM2 ;
iii) L{ε} = {ε}L = L;
iv) ∅L = L∅ = ∅.

Proof. Sa dovedim afirmatia i). Relatia w ∈ L1 M1 implica faptul ca exista


u1 ∈ L1 , v1 ∈ M1 astfel incat w = u1 v1 . Deoarece L1 ⊆ L2 si M1 ⊆ M2 , avem
u1 ∈ L2 , v1 ∈ M2 , prin urmare w ∈ L2 M2 . Incluziunea de la ii) este un caz
particular al celei demonstrate, iar iii) si iv) sunt evidente.
Propoziţie 24. Operatia de concatenare a limbajelor este distributiva la stanga,
respectiv la dreapta fata de operatia de reuniune, i.e. pentru orice L1 , L2 , L
⊆ P (A∗ ) sunt adevarate egalitatile:

L · (L1 ∪ L2 ) = L · L1 ∪ L · L2
(L1 ∪ L2 ) · L = L1 · L ∪ L2 · L.

Observaţie 25. Tripletul (P (A∗ ) , ∪.·) este un semiinel, acesta fiind motivul
pentru care, uneori, vom nota operatia de reuniune ∪, cu +.
Definiţie 26. Fie L ⊆ A∗ un limbaj peste alfabetul A. Definim inductiv puterea
acestui limbaj astfel:

i) L0 = {ε};

6
ii) Ln = Ln−1 · L, pentru orice n ∈ N ∗ .

Exemplu 27. 1. Daca alfabetul A = {a} atunci L2 = {aa}, L3 = {aaa}, iar


L4 = {aaaa}.
Exemplu 28. Daca A = {a, b} si L = {a, b}, atunci

L2 = {a, b} · {a, b} = {aa, ab, ba, bb}, iar


L3 = {aa, ab, ba, bb} · {a, b} = {aaa, aab, aba, abb, baa, bab, bba, bbb}.

Remarcam ca L2 , respectiv L3 reprezinta multimea cuvintelor peste A de lungime


2, respectiv 3.

1.3.2 Operatorul steaua Kleene


Definiţie 29. Fie L ⊆ A∗ un limbaj peste alfabetul A. Limbajul definit prin

L∗ = Ln = L0 ∪ L1 ∪ L2 ∪ .... ∪ Ln ∪ ...
S
n=0

se numeste limbajul L-steaua Kleene. Aplicatia ∗ : P (A∗ ) → P (A∗ ) care asoci-


aza fiecarui lim baj L ∈ P (A∗ ) limbajul L∗ se numeste operatorul steaua Kleene.
In cazul in care ∪ este notata cu +, notam limbajul L-steaua Kleene si cu

L∗ = Ln = L0 + L1 + L2 + .... + Ln + ....
P
n=0

Iata cateva exemple:

Exemplu 30. 1. Daca alfabetul A = {a, b}, iar L = {a} atunci

L∗ = L0 ∪ L1 .... ∪ Ln ∪ ... = {ε} ∪ {a} ∪ {aa} ∪ {aa} ∪ ... =


{ε, a, aa, aaa, ...}.

2. Daca A = {a, b}, iar L = {a, b} atunci

L∗ = L0 ∪ L1 .... ∪ Ln ∪ ... = {ε} ∪ {a, b} ∪ {aa, ab, ba, bb} ∪ ... =


{ε, a, b, aa, ab, ba, bb, ...}.

In acest caz L∗ este multimea tuturor cuvintelor peste A, L∗ = {a, b}∗ , ceea ce
justifica si notatia {a, b}∗ .

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