Documente Academic
Documente Profesional
Documente Cultură
a
pentru
Computer Science
Mircea Cr
asm
areanu
ii
Cuprins
1 Monoidul cuvintelor unui alfabet
2 Limbaje formale
3 Expresii regulate
15
4 Variet
ati de monoizi
21
5 Automate
29
6 Automate echivalente
33
7 Automat minimal
39
8 Actiuni
45
53
10 Problema cuvintelor
57
11 Functii recursive
61
67
71
14 Compilatoare 1: Analiz
a lexical
a
77
Bibliografie
81
Index
83
iii
iv
CUPRINS
Cursul 1
M. Crasmareanu
Cursul 1
M. Crasmareanu
Cursul 1
M. Crasmareanu
Cursul 2
Limbaje formale
Fixam alfabetul (nit) .
Definitia 2.1 Numim limbaj (formal) peste o submultime L i.e.
L este un element din multimea partilor lui i.e. L P( ). Un element
din L l numim propozitie sau afirmatie (statement n engleza). Daca L
este multime nita spunem ca avem un limbaj finit; n caz contrar avem un
limbaj infinit. Prin conventie, multimea vida se accepta ca limbajul vid
peste orice alfabet la fel ca si {}.
Observatii 2.2 i) = {}; astfel, primul limbaj n-are cuvinte n timp
ce al doilea limbaj are un cuvant.
ii) Limbajele de programare (e.q. Pascal, C, Java) sunt peste alfabetul
ASCII si sunt innite.
iii) Trebuie avuta o mare grija la modul (regula) de denire a unui limbaj. Astfel, avem limbajele peste alfabetul binar L1 = {0n 1n ; n N} si
L2 = {cuvinte cu acelasi numar de 0 si 1} care difera deoarece:
L1 = {, 01, 0011, 000111, ...}, L2 = {, 01, 10, 0011, 1001, 1010, 1100, 0101, ...}.
Observatia 2.3 Dat limbajul nevid L consideram multimea alph(L) =
{a ; u, v a. uav L}. Avem ca alph(L) este alfabetul minimal
peste care poate denit limbajul L.
I) Sa aratam ca alph(L) este nevida.
I1) L; atunci considerand u = v = rezulta ca a = alph(L).
I2) Fie w L, w = . Luand u = si v = w(2)...w(|w|) daca |w| > 1
respectiv v = daca |w| = 1 obtinem ca a = w(1) alph(L).
II) Cum alph(L) si este nita rezulta ca alph(L) este multime nita.
Deci alph(L) este un alfabet.
III) Faptul ca L (alph(L)) este imediat folosind rationamente de tipul
7
M. Crasmareanu
celor de la I.
IV) Faptul ca alph(L) este minimal cu proprietatea III l propunem ca Tema.
Operatii booleene cu limbaje 2.4: din teoria generala a multimilor
avem ca date limbajele L1 si L2 sunt atunci limbaje:
i) reuniunea L1 + L2 := L1 L2 , ii) intersectia L1 L2 ,
iii) complementara L1 := \ L1 .
Datorita structurii algebrice a lui putem deni si produsul L1 L2 =
{uv; u L1 , v L2 } care este evident un limbaj. Este avantajoasa notatia
exponentiala; astfel pentru limbajul L avem limbajele L0 = {}, Ln =
Ln1 L pentru numarul natural nenul n.
Definitia 2.5 Limbajul L se numeste independent la concatenare daca
L n2 Ln = .
Exemple 2.6 i) Pentru alfabetul binar si limbajul L = {01, 110} avem:
L2 = {0101, 01110, 11001, 110110},
L3 = {010101, 0111001, 1100101, 11011001, 0101110, 01110110, 11001110,
110110110}.
ii) Produsul limbajelor este necomutativ. Pentru L1 = {, 101} si L2 =
{0, 0101} avem L1 L2 = {1010, 1010101, 0, 0101} = {0101, 0101101, 0} =
L2 L1 .
Exemplul 2.7 Fie = {1, 2, 3}. L = {21, 213, 1, 2222, 3} este un
limbaj peste si 213222213 L4 L5 deoarece 213, 2222, 1, 3 L iar
21, 3, 2222, 1, 3 L. Totodata 213222213 9 .
M = {2, 13, 222} este limbaj peste si 213222213 L4 L5 M 5 M 7 desi
L M = .
Definitia 2.8 Dat limbajul L denim L+ = n1 Ln numit nchiderea
pozitiv
a respectiv L = n0 Ln numit nchiderea star sau Kleene lui L. (A se
vedea http://en.wikipedia.org/wiki/Stephen Cole Kleene pentru opera sa.)
Observatia 2.9 i) Notatia anterioara provine din faptul ca pentru L =
avem L+ = + si L = .
ii) Pentru limbajul L oarecare avem ca L+ este subsemigrup n + iar L
este submonoid n .
Propozitia 2.10 i) L , L+ = L L = LL , L = LL + {}
ii) L+ dac
a si numai dac
a L,
Cursul 2
lui w daca exista x, y asa ncat w = xvy. Daca n plus, x sau y difera
de spunem ca v este subcuv
ant propriu al lui w. x l numim prefix sau
initial al lui w respectiv prefix propriu daca difera de ; analog y este sufix
sau terminal al lui w respectiv sufix propriu daca difera de .
O generalizare a Exemplului 2.3 este urmatoarea: pentru w e
SubP (w) multimea subcuvintelor proprii ale lui w. Avem ca SubP (w) este
un limbaj peste . Analog, pornind cu limbajul L obtinem limbajul P (L) =
wL SubP (W ).
Spre exemplu, pentru L = {0, 010, 111} avem P (L) = {0, 1, 01, 10, 11}.
Definitia 2.15([12, p. 55]) Relatia de echivalenta R pe monoidul o
numim cvasicongruent
a daca odata cu uRv avem si xuyRxvy pentru orice
x, y . Daca n plus, R are un numar nit de clase de echivalenta spunem
ca R este de index finit.
Exemple 2.16 i) Orice congruenta este cvasicongruenta.
ii) Fixam limbajul L si denim uRL v daca pentru orice x, y cu l(x) =
l(y) din xuy L rezulta xvy L si invers. Avem imediat ca RL este o elatie
de echivalenta pe .
Propozitia 2.17 RL este o cvasicongruent
a.
10
M. Crasmareanu
Cursul 2
11
12
M. Crasmareanu
Cursul 2
13
void main ()
{
char lit;
int i;
for (lit=A; lit<=z; lit++)
{
i=lit;
cout<< Codul ASCII al literei <<lit<< este: <<hex<<i<<
<<dec<<i<< endl ;
}
}
Tem
a Scrieti varianta Pascal a problemei.
S2.12 (Program C) Dat un numar natural se cere caracterul corespunzator.
//conversia din ntreg n caracter
#include<iostream.h>
void main ()
{
int n;
cout<< Dati numarul natural n:= ;
cin>>n;
cout<< Caracterul corespunzator lui <<n<< este:= <<char(n)
<<endl;
}
Exemplu:
Dati numarul natural n:= 321 <Enter>
Caracterul corespunzator lui 321 este:= A
(Un caracter ocupa un singur octet spre deosebire de un ntreg care ocupa
2 octeti. De aceea se calculeaza numarul dat modulo 28 =256, n exemplul
nostru este 65 iar 65 este codul n zecimal al lui A.)
Tem
a Scrieti varianta Pascal a problemei.
S2.13 (Distanta Hamming pe k-cuvinte) Pentru k N denim
dH : k k R+ , dH (a, b) = |{i; a(i) = b(i)}|; deci dH (a, b) contorizeaza
numarul simbolurilor diferite din a si b. Sa se arate ca dH este o metric
a pe
k
:
I) (pozitiva denire) dH (a, b) 0; dH (a, b) = 0 daca si numai daca a = b,
14
M. Crasmareanu
Cursul 3
Expresii regulate
Ca si n cursul precedent xam de la bun nceput un alfabet (nit) .
Definitia 3.1 Consideram simbolurile ), (, +, ce nu apartin lui . Numim expresie regulat
a un cuvant w al alfabetului {, (, ), +, } avand una
din formele urmatoare:
i) w sau w = ,
ii) w = (xy) cu x, y expresii regulate,
iii) w = x + y cu x, y expresii regulate,
iv) w = x cu x expresie regulata.
Fie Rex() multimea expresiilor regulate.
Observatii 3.2 i) Modul de denire al expresiilor regulate este inductiv.
ii) Ca si n cursul precedent uneori vom renunta la parantezele redundante
atunci cand contextul de lucru este evident.
iii) Prin conventie, are prioritatea maxima, urmeaza concatenarea si apoi
+. Astfel, ((((xx) + y) + ((xy))x)) este (xx + y) + xyx.
Definitia 3.3 Aplicatia K : Rex() P( ) denita prin:
a) K() = , K(x) = {x} daca x ,
b) K(xy) = K(x)K(y), K(x + y) = K(x) + K(y),
c) K(x ) = (K(x)) ,
o numim interpretare.
Teorema 3.4 (Kleene) Limbajul L P( ) este regulat dac
a si numai
dac
a apartine imaginii aplicatiei de interpretare K i.e. exist
a o expresie
regulat
a w Rex() asa nc
at L = K(w).
Exemple 3.5 i) Fie x, y . Avem K((x+y)(x+y)) = {xx, xy, yx, yy}.
ii) K( + (x + y) (yx + xyx)) = {x, y} {yx, xyx}.
15
16
M. Crasmareanu
< identicator >::=< litera > (< litera > | < cifra >)
ce sunt exact expresii regulate avand variabilele < litera >, < cifra > si
< identicator > iar simbolul | joaca rolul lui +.
Pentru limbajul xat L denim relatia: L = {(w, z) ; uwv
L uzv L, u, v }. Deoarece echivalenta logica este o relatie de
echivalenta avem ca L este o relatie de echivalenta. Sa aratam ca este o
congruenta. Fie (w, z) L si x oarecare. Avem ca (xw, xz) L si
(wx, zx) L n mod evident datorita regulilor de simplicare din monoidul
. L o numim congruenta sintactic
a asociata limbajului L iar monoidul
cat Syn(L) = /L se numeste monoidul sintactic al lui L.
Definitia 3.11 Limbajul L este recunoscut de monoidul M daca exista
un morsm de monoizi : M si P M asa ncat L = 1 (P ).
Propozitia 3.12 L este recunoscut de monoidul sintactic Syn(L).
Demonstratie Aplicatia de proiectie : Syn(L) este morsm de
monoizi si consideram P = (L). Avem evident L = 1 (P ).
Utilitatea monoidului sintactic este data de:
Cursul 3
17
18
M. Crasmareanu
SEMINARUL 3
S3.1 Dati exemple de palindroame din limba romana.
Rezolvare 1) cu 3 litere: apa, ara, aba, ata, asa, bob, coc, ere, mim,
rar, pop, sas, tot.
2) cu 4 litere: ?.
3) cu 5 litere: anina, caiac, capac, cojoc, etate, minim, soios, potop, reper,
rotor, tivit. In DEX98, exista n jur de 35 de palindroame de 5 litere.
4) 9 litere: aerisirea.
5) 7 litere: rotitor, elevele, atacata, rotator, rolelor, atasata, Elenele, etajate,
ala-bala, etalate, aerarea.
S3.2 Propozitii si expresii palindromice:
ELE NE SEDUC CU DESENELE.
ICRE, PUI, CIUPERCI.
ELE FAC CAFELE.
ENE PURTA PATRU PENE.
MARO.
O RAMA
RAPITOARE
ERA O TIPA
!
TOV. ION.
NOI VOTAM, MA,
Dialoguri palindromice:
- EREMIA, AI MERE?
- O, N-AM, ANO!
-ACU, DUDUCA!
- IZA, CAZI ?
- DA, CAD!
- A... DA !
Scrisoare palindromica :
DRAGA ILEANA, ACI M-A ATACAT RADA CU LUCA, DAR TAC. A
TA AMICA, ANA-ELIA GARD.
S3.3 (Program C): Dat un numar nr se cer numarul sau de cifre,
suma cifrelor sale, produsul cifrelor nenule, cifra de ordin k (cu k dat de la
tastatura) si inversatul sau.
//operatii cu cifrele unui numar
#include<iostream.h>
#include<math.h>
void main()
{
int n,k, nr, N=0, cifra, rasturnat=0;
Cursul 3
19
20
M. Crasmareanu
{
int N, i;
cout<<Dati N(>2):= ;
cin>>N;
for (i=1;i<=N/2;i++)
cout<<i<< ;
for (i=(N+N%2)/2;i;i)
cout<<i<< ;
cout<<endl;
}
t1=abc;
t2=def;
t3=ghi;
strvcat(t1, t2, t3)
=
Cursul 4
Variet
ati de monoizi
Fie monoidul M si congruentele Ci , i I pe M . Rezulta imediat ca C =
iI Ci este o congruenta pe M . Fie acum R o relatie oarecare pe M gandita
ca submultime n M M si sa observam ca exista congruente ce o includ,
n sensul incluziunii de multimi; spre exemplu congruenta total
a M M.
Aplicand argumentul anterior exista intersectia tuturor congruentelor ce
contin pe R si s-o notam R conform [8, p. 197]; rezulta ca R este cea
mai mica (n sensul relatiei de ordine data de incluziunea submultimilor lui
M M ) congruenta ce contine pe R: daca C este o congruenta si R C
atunci R C.
Definitia 4.1 R se numeste congruenta generat
a de R.
S
a ne amintim ca pentru limbaje regulate eram interesati de congruente
de index nit; n acest sens dam:
Propozitia 4.2 Dat alfabetul si C o congruenta
pe de index finit
exist
a o submultime finit
a T a lui asa nc
at C = T . Cu alte cuvinte,
orice congruent
a de index finit pe monoidul cuvintelor unui alfabet este de
tip sharp.
Demonstratie Fie w si clasa sa de echivalenta [w] relativ la C.
Denim l : /C N prin l([w]) = min{|z|; z [w]}. Cum C este de index
nit exista mC = max{l([w]; [w] /C)}; e kC = mC + 1. Rezulta ca
pentru orice [w] /C exista z [w] cu |z| < kC ; n caz contrar am avea
l([w]) kC 1 + l([w]), fals. Fie T = {(u, v) ; (u, v) C, |u|
C
kC , |v| kC } si e R congruenta T . Deoarece T ki=0
i rezulta ca T
este multime nita.
Avem din modul de denire, T C si deci R C. Mai ramane de aratat
ca C R. Vom proceda prin reducere la absurd. Fie deci (u, v) C cu
21
22
M. Crasmareanu
(u, v)
/ R. Putem presupune, eventual schimband ordinea datorita simetriei
relatiei de echivalenta C, ca |u| |v|; de asemeni, putem considera u si v asa
ncat |u| + |v| este cea mai mica posibila. Nu putem avea |u| < kC deoarece
ar rezulta si |v| < kC ceea ce spune ca (u, v) R. Fie deci |u| kC ;
prin urmare u = zu cu |u | = kC . Exista v [u ] cu |v | < kC . Deci,
(u , v ) T R C. Din [v] = [u] = [zu ] si [zu ] = [zv ] rezulta prin
tranzitivitate ca [v] = [zv ]. Daca am presupune ca (v, zv ) R ar rezulta
din aceasta relatie si u = zu , (zu , zv ) R ca (u, v) R ceea ce contrazice
presupunerea de plecare.
Prin urmare, (v, zv ) C, (v, zv )
/ R si |v|+|zv | < |v|+|zu | = |u|+|v|
ceea ce contrazice ipoteza de minimalitate de la care am plecat.
Definitie 4.3 O submultime nevida I a monoidului M se numeste ideal
daca din a I si s M oarecare rezulta as I si sa I.
Idealele sunt o sursa importanta de congruente. Astfel, dat idealul I
denim relatia CI pe M prin (a, b) CI daca sau a = b sau a si b apartin
simultan lui I. Se verica imediat ca CI este o congruenta pe M avand
drept clase de echivalenta multimile singleton {a} pentru a M \I respectiv
multimea I. Monoidul cat M/CI se noteaza M/I si regulile de calcul sunt:
I) {a}{b} := {ab} daca ab
/ I respectiv I n caz contrar,
II) {a}I = I{a} = II = I
si deci I este un zerou al lui M/I. Prin urmare, putem gandi M/I ca
ind format din M \ I si un zerou iar produsul a doua elemente nenule {a}
si {b} este e elementul nenul {ab} daca acesta nu apartine lui I, e zeroul
dat. Acest tip de congruente se numesc congruente Rees iar monoidul cat
M/I l numim monoid Rees dupa numele celui care le-a introdus.
Definitia 4.4 O clasa V de monoizi o numim varietate daca este nchisa
la considerarea submonoizilor, monoizilor cat si a produselor directe.
Prin urmare, V este o varietate daca:
V1) odata cu M V si S submonoid al lui M avem ca S V ,
V2) odata cu M V si C congruentape M avem ca M/C V ,
V3) odata cu Mi V , i I avem ca iI Mi V .
Exemple 4.5 Sunt varietati urmatoarele clase:
i) Clasa Com a monoizilor comutativi,
ii) Clasa Bm monozilor band
a n care ecare element este idempotent.
Prin contrast, clasa grupurilor nu este varietate; spre exemplu luam grupul
ciclic innit M =< a > iar submonoidul puterilor pozitive {1, a, a2 , ...} nu
mai este grup.
Cursul 4
23
24
M. Crasmareanu
Avem si:
Cursul 4
25
26
M. Crasmareanu
Latici
Definitia 4.4 Fie L o multime nevida nzestrata cu doua legi de compozitie
(sau), (si) : L L L. Tripletul (L, , ) l numim latice daca
sunt satisfacute proprietatile:
L1) (comutativitate) a b = b a, a b = b a,
L2) (asociativitate) (a b) c = a (b c), (a b) c = a (b c),
L3) (absorbtie) a (a b) = a, a (a b) = a.
Exemplul 4.5 Fie multimea nevida A. Avem ca (L = P(A), , ) este
o latice. Invitam cititorul sa verice absorbtia: pentru X, Y P(A) avem
X (X Y ) = X si X (X Y ) = X.
Cursul 4
27
28
M. Crasmareanu
D1) (a b) c = (a c) (b c),
D2) (a b) c = (a c) (b c).
Definitia 4.16 O latice (L, , , 0, 1,) complementata si distributiva se
numeste algebr
a Boole sau latice boolean
a.
Cursul 5
Automate
Desi n literatura de specialitate exista o multitudine de tipuri de automate,
notiunea utilizata n acest curs este urmatoarea:
Definitia 5.1 Numim automat un 5-uplu A = (Q, , q0 , , F ) unde Q si
sunt multimi nevide si nite, q0 Q, F Q nevida iar este o functie:
: Q ( {}) P(Q). Denumiri:
-Q=multimea st
arilor,
-=alfabetul de intrare; un element din se mai numeste input,
-q0 =starea initial
a,
-=functia de tranzitie,
-F =multimea st
arilor finale sau terminale.
Observatii 5.2 i) Datorita caracterului nit al multimilor implicate,
uneori se precizeaza n denumire ca A este un automat nit (AF).
ii) Notiunea introdusa mai poate ntalnita si cu numele de automat nedeterminist cu -tranzitii. Particularizari ale lui conduc la notiunea de automat
determinist (fara -tranzitii) respectiv automat determinist. Astfel avem:
Definitia 5.3 I) Automatul A se numeste:
i) nedeterminist (AFN) daca (q, ) = pentru orice q Q,
ii) determinist (AFD) daca satisface conditia precedenta plus conditia |(q, x)| =
1, pentru orice q Q si x . In continuare, vom considera n principal
AFD-uri (a se vedea cursul urmator) si deci functia de tranzitie se considera
: Q({}) Q deoarece daca (q, x) = {q } notam simplu (q, x) = q .
II) Data starea q Q numim nchiderea lui q multimea:
Cl(q) = {q} + kN {qk+1 Q; q2 (q1 = q, ), ..., qk+1 (qk , )}.
Pentru Q Q denim: Cl(Q ) = qQ Cl(q) si (Q , x) = qQ (q, x).
29
30
M. Crasmareanu
O notiune extem de importanta n ceea ce urmeaza este:
Cursul 5
31
x1
...
xj
...
xm
(qi , xj )
qn
unde sageata marcheaza starea initiala iar stari nale.
Exemplul 5.11 Fie AF-ul cu Q = {a, b, c}, q0 = a, F = {c}, = {0, 1}
si:
(a, 0) = {b}, (a, 1) = {a, b}, (b, 0) = {c}, (b, 1) = {a}, (c, 0) = {c}, (c, 1) =
{b, c}. Avem:
0
1
a b {a, b}
.
b
c
a
c c {b, c}
Fie w1 = 100100 si w2 = 0101. Avem:
i) e (a, w1 ) = e ((a, 1), 0010) = e (b, 0010) = e ((b, 0), 010) = e (c, 010) =
e ((c, 0), 10) = e (c, 10) = ((c, 1), 0) = ({b, c}, 0) = {(b, 0), (c, 0)} =
{c, c} {c} =
ii) e (a, w2 ) = e ((a, 0), 101) = e (b, 101) = e ((b, 1), 01) = e (a, 01) =
((a, 0), 1) = (b, 1) = {a} {c} = .
In concluzie, w1 L(A) si w2 L(A). Mai general, (01)+ L(A).
Pagini Web utile:
1) http://en.wikipedia.org/wiki/Automata theory
2) http://mathworld.wolfram.com/AutomataTheory.html
SEMINARUL 5
32
M. Crasmareanu
S5.1 Fie automatul nedeterminist:
q0
q1
q2
q3
0
q1
q2
q2
1
q0
q0
.
{q2 , q3 }
0
q0
q0
q1
1
q1
.
q2
q0
0
q0
q2
q2
q0
1
q0
q1 .
q3
q1
i) Sa se studieze w1 = 12 03 12 04 si w2 = 12 03 104 .
ii) Sa se arate ca w = ...010... L(A).
iii) Sa se deduca faptul ca L(A) = {0, 1} \ {0, 1} 010{0, 1} .
Rezolvare i) e (q1 , w1 ) = q2 F deci w1 L(A); e (q1 , w2 ) = q0 F
deci w2 L(A).
ii) e (q1 , ...010...) = q0 deoarece la aplicarea secventei 010 avem:
1) q0 q0 q0 q0 ,
2) q1 q2 q3 q0 ,
3) q2 q2 q3 q0 ,
4) q3 q0 q0 q0 .
Cursul 6
Automate echivalente
Deoarece aspectul cel mai important n functionarea unui automat l reprezinta
limbajul acceptat este naturala :
Definitia 6.1 Automatele A, A peste acelasi alfabet se numesc echivalente si notam A A daca L(A) = L(A ).
Cum egalitatea multimilor este o relatie de echivalenta avem:
Propozitia 6.2 Relatia este o relatie de echivalent
a pe multimea automatelor cu alfabetul fixat.
Prin urmare suntem interesati de gasirea unor reprezentanti remarcabili ai unei clase de echivalenta date; acest aspect motiveaza urmatoarele
teoreme de reducere. Astfel, un prim rezultat este legat de eliminarea tranzitiilor:
Teorema 6.3 Dat automatul A cu -tranzitii exist
a A f
ar
a -tranzitii
si echivalent cu A.
La fel de important este rezultatul urmator ce releva o egalitate AFN=AFD
din punctul de vedere al limbajelor acceptate:
Teorema 6.4 Dat AFN-ul A exist
a un AFD Ad echivalent cu A.
Demonstratie Presupunem A = (Q, , , q0 , F ) si e Ad = (Qd , , d , Q0 , Fd ):
i) Qd = P(Q), Q0 = {q0 }, Fd = {Z Qd ; Z F = },
ii) d : Qd ( {}) Qd este:
ii1) d (, x) = , (Z, ) = pentru Z Qd nevida si x ,
ii2) d (Z, x) = {(q, x); q Z}.
Avem ca Ad este AFD deoarece d (Z, x) are un singur element (=o multime)
privit ca element n Qd .
1) L(A) L(Ad )
33
34
M. Crasmareanu
q0
q1
q2
0
q1
q2
q2
1
{q0 , q1 }
.
q0
{q1 , q2 }
Avem Qd = {Q1 , Q2 = Q0 , Q3 , Q4 , Q5 , Q6 , Q7 , Q8 = Q} cu Q1 = , Q3 =
{q1 }, Q4 = {q2 }, Q5 = {q0 , q1 } = Q2 + Q3 , Q6 = {q0 , q2 } = Q2 + Q4 ,
Q7 = {q1 , q2 } = Q3 + Q4 si:
-d (Q1 , 0) = Q1 , d (Q1 , 1) = Q1 ,
-d (Q2 , 0) = Q3 , d (Q2 , 1) = Q5 ,
-d (Q3 , 0) = Q4 , d (Q3 , 1) = Q2 ,
-d (Q4 , 0) = Q4 , d (Q4 , 1) = Q7 ,
-d (Q5 , 0) = d (Q2 , 0) + d (Q3 , 0) = Q3 + Q4 = Q7 , d (Q5 , 1) = d (Q2 , 1) +
d (Q3 , 1) = Q5 + Q2 = Q8 ,
-d (Q6 , 0) = d (Q2 , 0) + d (Q4 , 0) = Q3 + Q4 = Q7 , d (Q6 , 1) = d (Q2 , 1) +
d (Q4 , 1) = Q5 + Q7 = Q8 ,
-d (Q7 , 0) = d (Q3 , 0) + d (Q4 , 0) = Q4 + Q4 = Q4 , d (Q7 , 1) = d (Q3 , 1) +
d (Q4 , 1) = Q2 + Q7 = Q8 ,
-d (Q8 , 0) = d (Q2 , 0) + d (Q7 , 0) = Q3 + Q4 = Q7 , d (Q8 , 1) = d (Q2 , 1) +
d (Q7 , 1) = Q5 + Q8 = Q8 .
Avem Fd = {Q4 , Q6 , Q7 , Q8 } si deci tabelul lui Ad este:
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q8
0
Q1
Q3
Q4
Q4
Q7
Q7
Q4
Q7
1
Q1
Q5
Q2
Q7
Q8
Q8
Q8
Q8
Cursul 6
35
0
q1
{q1 , q2 }
q2
1
q2
.
q1
{q1 , q2 }
Avem deci:
Pasul 1. Observam ca multimea starilor accesibile este tot Q deoarece
e (q0 , ) = q0 , (q0 , 0) = q1 , (q0 , 1) = q1 .
Pasul 2. ac (Q0 , 0) = (q0 , 0) = {q1 } = Q1 , ac (Q0 , 1) = (q0 , 1) = {q2 } =
Q2 . Retinem Q1 si Q2 .
Pasul 3. ac (Q1 , 0) = (q1 , 0) = {q1 , q2 } = Q3 , ac (Q1 , 1) = (q1 , 1) =
{q1 } = Q1 ,
ac (Q2 , 0) = (q2 , 0) = {q2 } = Q2 , ac (Q2 , 1) = (Q2 , 1) = (q2 , 1) =
{q1 , q2 } = Q3 . Deci retinem Q3 .
36
M. Crasmareanu
coaccesibil
a) daca exista w asa ncat e (q, w) F .
ii) Un automat cu toate starile accesibile si productive se numeste trim.
Observatia 6.11 Din denitie avem ca q0 este productiva daca L(A) =
deoarece luam orice w L(A).
Teorema 6.11 Dat AFD-ul A exist
a un AFD Ap cu toate st
arile productive si echivalent cu A.
Demonstratie Construim Ap = (Qp = {Q1 , ..., Qr+1 }, , p , Q0 , Fp ) cu
Q0 = {q0 } si procedand analog cu demonstratia anterioara luand Q1 = F si
Fp = {Qj Qp ; Qj F = }.
SEMINARUL 6
S6.1 Sa se studieze AFD-ul cu |Q| = || = 1.
Rezolvare Avem Q = {q0 } = F , = {0} si : Q Q, (q0 , 0) = q0 .
Rezulta L(A) = {0} . Reprezentarea tabelara:
0
.
q0
q0
0
q0
1
.
q0
Cursul 6
37
q0
q1
0
q0 .
q0
q0
q1
0
q1 .
q1
q0
q1
0
q0 .
q1
q0
q1
0
q1 .
q0
0 1
0 1
38
M. Crasmareanu
S6.4 Automatul ciclic C (p, r).
q0
..
.
qr1
..
.
qr
..
.
qr+p2
qr+p1
qr+p1
qr
Daca automatul paraseste una din starile q0 , ..., qr1 el nu se mai ntoarce
niciodata n acea stare; le putem numi f
ar
a ntoarcere. Ciclul de stari
qr , ..., gr+p1 se poate numi ciclul f
ar
a evadare, n engleza no escape.
S6.5 Sa se studieze AFD-ul cu Q
functia:
q0
q1
1
q1 .
q1
0 1
q0 q1 q2
.
q1 q1 q2
q2
q2 q2
Rezolvare L(A) = {0}+ (= {0} {0} = {0} {0} ).
Cursul 7
Automat minimal
Am vazut n cursul precedent ca pretul platit pentru adaugarea anumitor
proprietati (convenabile) unui automat se reecta n cresterea, uneori foarte
mare (rapida), a numarului de stari. Este astfel naturala ntrebarea daca
putem lucra cu anumite conditii de minimalitate.
Definitia 7.1 Fie A un AFD.
i) Dat numarul natural k denim relatia =k pe Q prin: q1 =k q2 daca pentru
orice w ki=0 i avem e (q1 , w) F daca si numai daca e (q2 , w) F .
Spunem ca starile q1 si q2 sunt k-echivalente.
ii) Denim relatia pe Q prin: q1 q2 daca q1 =k q2 pentru orice k N.
Vom spune ca q1 si q2 sunt echivalente.
Reamintim ca apartenenta unui element la o multime se studiaza cu
ajutorul unei functii:
Definitia 7.2 Data multimea nevida X si submultimea sa Y denim
functia caracteristic
a a lui Y functia Y : X {0, 1} data de:
i) Y (x) = 1 daca x Y , ii) Y (x) = 0 altfel.
Exista autori care fac alegerea inversa: Y (x) = 0 daca x Y ([15, p. 84])
dar n literatura clasica (romaneasca) avem alegerea de mai sus.
Prin urmare, q1 =k q2 daca si numai daca F (e (q1 , w)) = F (e (q2 , w))
pentru orice w 0 + ... + k . Astfel, obtinem ca q1 =0 q2 daca si numai
daca q1 , q2 apartin simultan lui F sau Q \ F . O caracterizare pentru =k cu
k 1 este:
Propozitia 7.3 q1 =k q2 dac
a si numai dac
a q1 =k1 q2 si (q1 , x) =k1
(q2 , x) pentru orice x \ {}.
Deoarece relatia de egalitate este o echivalenta avem:
39
40
M. Crasmareanu
Propozitia 7.4 Relatiile =k si sunt echivalente pe Q.
Q Q
Rezulta imediat ca:
1) h(e (q, w)) = e (h(q), w) pentru orice w ,
2) L(A) = L(A ) si deci A, A sunt echivalente. Putem spune ca un izomorsm realizeaza n fapt, o recontorizare a starilor.
In determinarea automatului minimal de un mare folos este rezultatul
urmator:
Propozitia 7.7 i) Fie q1 , q2 Q pentru |Q| = n. Atunci q1 q2 dac
a
si numai dac
a q1 =n2 q2 .
ii) Dac
a Qm este n bijectie cu Q atunci automatul A este minimal.
Unul din rezultatele centrale ale acestui curs este:
Teorema 7.8 Dat AFD-ul A avem c
a Am = (Qm , , m , [q0 ], Fm ) este
automat minimal echivalent cu A.
Definitia 7.9 i) Daca n denitia automatului retinem primele trei elemente SA = (Q, , ) atunci obtinem notiunea de semiautomat.
ii) Un semiautomat (automat) se numeste conex daca orice doua stari se pot
uni i.e. oricare ar q1 , q2 Q exista w asa ncat e (q1 , w) = q2 .
Cursul 7
41
42
M. Crasmareanu
tipul urmator: exista d 2 un divizor al lui n asa ncat partitia este de tip
Rd adica are d clase cu acelasi numar de elemente si ordonand elementele
unei clase crescator avem ca diferenta dintre doua elemente consecutive este
d.
ii) Fie d1 , d2 2 divizori ai lui n; daca d1 |d2 atunci Rd2 Rd1 .
S7.5 Fie automatul A peste alfabetul binar cu Q = {q0 , q1 , q2 , q3 } si:
q0
q1
q2
q3
0
q1
q3
q2
q3
1
q2
q1
q3
q3
Se cere L(A).
Rezolvare Avem L(A) = {01n ; n N} + {10n ; n N}.
S7.6 Fie automatul avand Q = {q0 , ..., qn }, = {1, ..., n} si:
q0
q1
..
.
1
q1
...
q2
qn1
qn
qn
q0
...
...
si se cere L(A).
Rezolvare L(A) = {}.
S7.8 Dat alfabetul binar se cere un automat care sa recunoasca limbajul
L(A) = {(01)n ; n N}.
Cursul 7
43
q0
q1
q2
0
q1
q1
.
q2
q0
q1
..
.
a1
q1
a2
...
an
q2
qn1
qn
qn
q0
q1
...
ai
q1
q1
...
.
q0
q1
...
ai
q0
q0
...
.
Avem L(A) = .
S7.11 Fie L1 si L2 recognoscibile. Sa se arate ca L1 L2 este recognoscibila.
44
M. Crasmareanu
Cursul 8
Actiuni
Fixam n acest curs o multime nevida X, nu neaparat nita. Reamintim ca
n exercitiul 1.3 am introdus grupul bijectiilor lui X, Bij(X) = {f : X
X; f bijectie}. Pentru simplitate, acelasi grup l vom nota cu S(X) deoarece
daca X are n elemente atunci acest grup este bine cunoscutul grup simetric
Sn .
Definitia 8.1 Numim grup de transform
ari pe X un subgrup G al lui
S(X). Notiuni analoage se denesc prin nlocuirea cuvantului grup cu
monoid respectiv semigrup.
Din conditia de subgrup avem:
GT1) daca f1 , f2 G atunci f2 f1 G,
GT2) daca f G atunci f este bijectie si f 1 G.
Una din cele mai importante notiuni matematice este:
Definitia 8.2 Dat grupul (G, , e) oarecare, numim actiune (la stanga)
a lui G pe X o aplicatie : G X X, (g, x) gx satisfacand:
A1) g2 (g1 x) = (g2 g1 )x,
A2) ex = x,
pentru orice g1 , g2 G si orice x X.
Observatia 8.3 Exista si notiunea de actiune la dreapta, : X G
X, (x, g) xg cu propritatile:
A1) (xg1 )g2 = x(g1 g2 ),
A2) xe = x.
Dar cele doua notiuni sunt echivalente n sensul urmator:
I) data o actiune la stanga avem ca aplicatia (x, g) = g 1 x este o actiune
la dreapta. In adevar:
A1) (xg1 )g2 = g21 (g11 x) = (g21 g1 1)x = (g1 g2 )1 x = x(g1 g2 ),
45
46
M. Crasmareanu
A2) xe = e1 x = ex = x.
II) Reciproc data o actiune la dreapta avem ca aplicatia (g, x) = xg 1 este
o actiune la stanga. In adevar,
A1) g2 (g1 x) = (xg11 )g21 = x(g11 g21 ) = x(g2 g1 )1 = (g2 g1 )x,
A2) ex = xe1 = xe = x.
Prin urmare, n cele ce urmeaza ne vom restrange la actiuni la stanga, acestea ind cel mai des ntalnite n matematica (spre exemplu n studiul proprietatilor de simetrie ale unui obiect matematic) fara a pierde din vedere
faptul ca proprietatile A1, A2 sunt analoage proprietatilor extinderii functiei
de tranzitie e din teoria automatelor. Acest fapt a si motivat alegerea
subiectului acestui curs.
Fixam deci : G X X si pentru orice g G denim g : X X
prin x gx.
Propozitia 8.4 g S(X).
Demonstratie Avem: g g1 : x g 1 x g(g 1 x) = (gg 1 )x =
ex = x. Analog, g g1 : x gx g 1 (gx) = (g 1 g)x = ex = x. In
concluzie, g este bijectie cu (g ) = g1 .
Putem deci deni : G S(X), g g .
Propozitia 8.5 este morfism de grupuri.
Demonstratie Trebuie aratat ca (g2 g1 ) = (g2 ) (g1 ). Cum acestea sunt aplicatii trebuie aratata egalitatea pentru orice x X. Dar asta
nseamna exact A1.
Corolarul 8.6 Imaginea prin a lui G este un grup de transform
ari pe
X.
Demonstratie Este o consecinta a rezultatului clasic din teoria grupurilor:
dat un morsm de grupuri : G G avem ca (G) este subgrup n G .
(Aratati !).
Avem si reciproca acestui ultim rezultat:
Propozitia 8.7 Dat grupul de transform
ari G al lui X avem c
a:
i) incluziunea i : G S(X) este un morfism de grupuri,
ii) aplicatia : G X X, (g, x) g(x) este o actiune a lui G pe X.
Demonstratie i) evident, i(g1 g2 ) = g1 g2 = i(g1 ) i(g2 ),
ii) A1 g2 (g1 x) = g2 (g1 (x)) = (g2 g1 )(x) = (g2 g1 )x; A2 ex = 1X (x) = x.
Avem si un al treilea rezultat analog:
Cursul 8
47
48
M. Crasmareanu
O proprietate remarcabila a stabilizatorilor este:
Cursul 8
49
(8.1).
N (o) |G| =
|F ix(g)|.
(8.2)
gG
Rezolvare Vom numara n doua moduri distincte elementele lui X invariate de actiunea lui G. Avem:
|F ix(g)| =
|Stab(x)|,
(8.3)
gG
xX
N (o)
si deci membrul drept din (7.2) este i=1
yOrb(xi ) |Stab(y)|. Dar pentru
orice y, z Orb(xi ) avem: |Stab(y)| = |Stab(z)|f rac|G||Orb(xi ) rezulta:
gG
N (o)
|F ix(g)| =
i=1
|Orb(xi )|
|G|
= N (o) |G|.
|Orb(xi )|
50
M. Crasmareanu
q0
q1
q2
q3
q4
q5
0
q1
q1
q2
q3
q4
q5
1
q5
q0
q1 .
q2
q3
q4
q0
q1
q2
q3
0
{q0 , q1 , q3 }
q2
q3
1
q0
.
Cursul 8
51
52
M. Crasmareanu
Rezolvare Cele doua grupuri au aceeasi tabela Cayley:
(Z2 , +)
b
0
b
1
(C2 , +)
1
1
b
0
b
0
b
1
1
1
1
b
1
b
1
b
0
1
1 .
1
Cursul 9
Gramatici si limbaje
generate. Ierarhia Chomsky
Definitia 9.1 Numim gramatic
a sau sistem generativ un 4-uplu
G = (VN , VT , S, P ) cu:
i) VN =multime nevida, nita, numita multimea variabilelor (neterminalilor),
ii) VT =multime nevida, nita, disjuncta de VN , numita multimea terminalilor. V = VN VT este vocabularul lui G,
iii) S VN este simbolul de start sau axioma gramaticii,
iv) P V V , nita, este multimea regulilor de generare (productie).
Elementele (, ) P sunt supuse conditiei ca sa contina un simbol din
VN ; putem scrie P (V VN V ) V .
Conventii de notatie 9.2
I) Urmatoarele simboluri noteaza elemente din VN :
-A, B, C, ..., S, ...
-numele italice scrise cu minuscule: expresie, instructiune, ...
II) Urmatoarele simboluri noteaza terminali:
-a, b, c, ..., 0, ..., 9
-operatori: +, , , /
-simboluri de punctuatie, paranteze,
-unitati lexicale: id, if, while, begin, ...
III) X, Y, Z, ... sunt elemente din V iar u, v, x, y, z, w, ... sunt cuvinte din V .
IV) , , , ... sunt cuvinte din V . Un element (, ) P l notam .
V) Daca A 1 ,..., A n sunt toate productiile cu originea n A, (Aproductii), notam: A 1 |...|n .
VI) O gramatica va precizata prin productiile sale; de aici se deduc
multimile VN si VT iar S este partea stanga a primei productii.
53
54
M. Crasmareanu
Cursul 9
55
56
M. Crasmareanu
Cursul 10
Problema cuvintelor
Deoarece vom lucra n acest curs pe grupuri, extindem mai ntai denitia
cuvintelor pentru a formaliza notiunea de invers. Fixam X = {x1 , ..., xk }
o multime nita. Numim cuv
ant de lungime n pe multimea X o functie
w : Nn = {1, ..., n} X {1}. Daca w(i) = (wi , i ) atunci cuvantul w
se mai noteaza w = xw11 ...xwnn . Operatia de concatenare se deneste uzual:
ww := xw11 ...xwnn xw1 ...xwn si ramane asociativa. Fie W (X) acest monoid
n
1
relativ la cuvantul vid.
Definitia 10.1 i) O echivalent
a elementar
a pe W (X) este o pereche de
cuvinte de forma (d1 xw x
d
,
d
d
)
cu
{1}
si d1 , d2 cuvinte arbitrare.
w 2 1 2
ii) Pe W (X) denim o relatie n modul urmator: doua cuvinte le numim
echivalente daca pot legate printr-un lant nit de echivalente elementare.
Astfel, cele doua cuvinte se transforma unul n celalalt prin stergerea sau
1
introducerea unor perechi xw x1
w sau xw xw , w = 1, ..., n.
Propozitia 10.2 Relatia astfel introdus
a este o congruenta
.
Monoidul cat devine grup denind inversul astfel: [w = xw11 ...xwnn ]1 =
n ...x1 ]
[w = xw
si notand cu 1 clasa cuvantului vid.. Acest grup numit
w1
n
grupul liber generat de X si notat F (X); are o proprietate de universalitate
n categoria grupurilor: pentru orice grup G si elemente xate g1 , ..., gk G
exista un unic morsm de grupuri : F (X) G satisfacand (xi ) = gi , i =
1, ..., k.
Mai general, xam R = {c1 , ..., cm } o multime de cuvinte peste numite relatii. Intersectia tuturor subgrupurilor normale ce contine R l notam
N (R) si este subgrup normal. Putem vorbi atunci de grupul factor F ()/N (R)
notat < X|R > si pentru care elementele lui X le numim generatori. Mai
spunem ca grupul G =< X|R > este prezentat prin generatori si relatii.
57
58
M. Crasmareanu
Cursul 10
59
60
M. Crasmareanu
Cursul 11
Functii recursive
In acest curs consideram functii f de tipul urmator:
-functie partial
a daca f : X N cu X submultime (nevida ) a lui Nn ,
-functie total
a daca f este denita pe tot Nn .
Pentru simplitatea scrierii, ambele tipuri de functii le notam la fel f : Nn
N, ntelegandu-se din context tipul. Fie P multimea tuturor functiilor
partiale (deci orice n) si T multimea tuturor functiilor totale. De asemenea,
n-uplul (x1 , ..., xn ) l notam x
.
Definitia 11.1 1) Fie numerele naturale n, k 1 si functiile g : Nk
N, h1 , ..., hk : Nn N din P. Numim compunerea lor functia f = g
(h1 , ..., hk ) : Nn N data de f (
x) = g(h1 (
x), ..., hk (
x)). Evident f P
membrul stang ind denit acolo unde se poate deni membrul drept. Mai
spunem cam denit operatorul de superpozitie SUP.
2) Fie g : Nn N si h : Nn+2 N din P. Functia partiala f : Nn+1 N
data de f (
x, 0) = g(
x), f (
x, y + 1) = h(
x, f (
x), y) se numeste obtinut
a prin
recursie primitiv
a. Cazul n = 0 este admis si atunci g se considera numar
natural xat. Mai spunem cam denit operatorul de recursie primitiv
a REC.
Observatia 11.2 Dat x
avem ca f (
x, y) este denit: sau pentru niciun
y sau pentru orice y N sau pentru y Nk = {1, ..., k} cu k determinat de
g si h.
Definitia 11.3 1) Urmatoarele functii le numim initiale:
i) functia zero z : N N, z(x) = 0,
ii) fuctia succesor : N N, (x) = x + 1,
iii) functii proiectie kr : Nk N, kr (
x) = xr , k 1, 1 r k.
Evident, toate functiile initiale apartin lui T .
61
62
M. Crasmareanu
2) Numim clas
a de functii o submultime a lui P si clas
a de functii totale o
submultime a lui T .
3) O clasa C de functii totale o numim nchis
a primitiv recursiv daca:
i) toate functiile initiale apartin lui C .
ii) C este nchisa la compunere i.e. daca g, h1 , ..., hk C atunci g(h1 , ..., hk )
C.
iii) C este nchisa la recursia primitiva i.e. daca g, h C atunci f otinuta
din g si h prin recursie primitiva este element din C .
Exista o cea mai mica multime nchisa primitiv recursiv F (pr) anume
intersectia tuturor claselor nchise primitiv recursiv.
Definitia 11.4 Un element f F (pr) l numim functie primitiv recursiv
a.
Teorema 11.4 (de caracterizare) Fie f T . Atunci f F (pr)
dac
a si numai dac
a exist
a un sir f0 , ..., fk = f unde fi este sau functie
initial
a sau se obtine prin compunere din unele fj cu j < i sau se obtine
prin recursie primitiv
a din dou
a functii fj , j < i.
Definitia 11.6 Un sir de tipul celui precedent l numim definitie primitiv
recursiv
a a lui f .
Exemplu 11.7 Fie f : Nn N element dintr-o clasa nchisa primitv
recursiv C si denim g : Nm N prin g(x1 , ..., xm ) = f (y1 , ..., yn ) unde
yi este sau o constanta sau xj pentru un j xat. Atunci g C deoarece
g = f (h1 , ..., hm ) cu hj sau functie constanta (care este primitiv recursiva;
vezi Ex. 10.?) sau o functie kj .
Propozitia 11.8 Fie C o clas
a nchis
a primitiv recursiv si g C de
forma g : Nn+1 N. Atunci urm
atoarele functii
apartin lui C :
n+1
t).
1)(adunarea repetat
a) f1 : N
N, f1 (X, y) = yt=0 g(X,
y
n+1
t).
2)(nmultirea repetat
a) f2 : N
N, f1 (X, y) = t=0 g(X,
Demonstratie Denitia primitiv recursiva a acestor functii este:
1) f1 (
x, 0) = g(
x, 0), f1 (
x, y + 1) = f1 (
x, y) + g(
x, y + 1).
2) f2 (
x, 0) = g(
x, 0), f2 (
x, y + 1) = f2 (
x, y)g(
x, y + 1).
Definitia 11.9 1) Dat n 1 numim predicat n-ar o armatie P (x1 , ..., xn )
n n variabile ce este adevarata sau falsa n functie de valorile variabilelor
considerate ca elemente din N. Predicatul dat se identica cu multimea
T (P ) = {
x N; P (
x) = adevarata}.
2) Data C o clasa nchisa primitiv recursiv. O submultime A a lui Nn o
numim n C daca functia caracteristica A C . In particular, un predicat
n-ar este n C daca T (P ) C .
Cursul 11
63
64
M. Crasmareanu
2) g(
x) este nedenita n caz contrar. Folosim notatia g(
x) = y (f (
x, y =
0)). Atentie, g poate partiala chiar si cand f este totala. Spunem ca am
denit operatorul de minimizare MIN
Definitia 11.15 Date functiile f si g ca mai sus, spunem ca g se obtine
din f prin minimizare regulat
a daca f este totala si pentru orice x
Nn
exista y N asa ncat f (
x, y) = 0. Rezulta ca g este atunci functie totala.
Definitia 11.16 Clasa functiilor recursive ete cea mai mica clasa C
de functii totale care este nchisa primitiv recursiv si nchisa la minimizare
reguluata i.e. daca f C si g se obtine din f prin minimizare regulata
atunci g C .
O astfel de clasa exista, ind de fapt intersectia tuturor claselor ce verica
proprietatile mentionate.
Definitia 11.17 1) O submultime A a lui Nn se numeste recursiv
a daca
A este functie recursiva.
2) Predicatul n-ar P se numeste recursiv daca multimea
AP = {
x Nn ; P (
x) = adevarat} este recursiva.
Definitia 11.18 Clasa functiilor partial recursive este cea mai mica clasa
de functii partiale ce contine functiile initiale si este nchisa la compunere,
primtiv recursivitate si minimizare.
Clasa functiilor partial recursive ce sunt totale este nchisa primitiv recursiv si nchisa la minimizare regulata; prin urmare contine clasa functiilor
recursive. Deci, o functie recursiva este partial recursiva si totala dar reciproca nu este valabila.
Exemple 11.19 Functia f : N N, f (x) = y (x(y +1) = 0) este partial
recursiva dar neind totala nu este recursiva. In adevar, f (0) = 0 si n rest
f este nedenita.
Definitia 11.20 Se dau functiile f, g : N2 N. Spunem ca f este
func tia de minimizare limitat
a a lui g daca g(x, z) = y z(f (x, y) = 0)
i.e. valoarea g(x, z) se obtine astfel: daca exista 0 y0 z astfel ca
f (x, 0) > 0, ..., f (x, y0 1) > 0 si f (x, y0 ) = 0 atunci g(x, z) = y0 ; n caz
contrar g(x, z) = z + 1. Spunem ca am denit operatorul de minimizare
limitat
a.
Concluzii: Criteriul de recunoastere a functiilor primitiv recursive sau recursive Se dau sirul nit de functii f0 , ..., fk si functia f :
1) sirul dat l numim pr-sir daca orice element al sau este functie initiala
sau se obtine din precedentele elemente cu operatorii SUP sau REC. Daca
Cursul 11
65
7) x0
+ y x.
8) |x y| = (xy)
9) sg(0) = 0, sg(x + 1) = 1.
S11.2 Sa se arate ca functiile urmatoare sunt primitiv recursive:
1) ./. : N2 N, x/y = cel mai mic numar natural mai mic sau egal cu
x/y daca y > 0 respectiv x/0 = 0.
2) ./. : N2 N, x/y = cel ami mic numar natural mai mare sau egal cu
x/y daca y > 0 respectiv x/0 = 0.
3) rest : N2 N, rest(x, y) = restul mpartirii lui x la y daca y > 0 respectiv
rest(x, 0) = 0.
4) prim : N N, prim(n) = al n-lea numar prim cu prim(0) = 2.
66
M. Crasmareanu
Rezolvare .
S11.3 .
Rezolvare
Cursul 12
68
M. Crasmareanu
i
III) 2 (ai1 ...aik ) = 2k kj=1 pjj unde pj este al j-lea numar prim impar.
Definitia 12.6 Limbajul L peste A se numeste recursiv (respectiv r.e.)
daca (L) este recursiv (respectiv r.e.) unde este 1 , 1 sau 2 .
Fie gramatica G = (VN , VT , S, P ) si A = VN VT ; presupunem A =
{a1 , ..., an }. Sa notam productiile P = {1 1 , ..., l l } si e i = |i |,
i = |i |.
Propozitia 12.7 Pentru i {1, ..., l} exist
a o functie primitiv recursiv
a
fi : N2 N astfel ca, dac
a m = 2 (x1 ...xk ) si x1 ...xk = x1 ...xr1 i xr+i ...xk
atunci fi (r, m) = 2 (x1 ...xr1 r+i ...xk ) respectiv fi (r, m) = m alftel fi (r, m) =
m.
Teorema 12.8 Un limbaj de tip 0 este r.e. si reciproc.
Cursul 12
69
sa Kleene L .
SEMINARUL 12
S12.1 .
Rezolvare .
S12.2 .
Rezolvare .
S12.3 .
Rezolvare .
S12.4 .
Rezolvare .
S12.5 .
S12.6 .
Rezolvare .
S12.7 .
Rezolvare .
S12.8 .
Rezolvare .
70
M. Crasmareanu
Cursul 13
s1
p1
...
...
sn
pn
72
M. Crasmareanu
la limbaje peste :
iii) () = 0,
pi log pi
i=1
Cursul 13
73
Demosntrat
ie i,j pi qj log(pi qj ) = i,j pi qj log pi i,j pi qj log qj =
j qj H(S1 ) +
i pi H(S2 ).
Definitia 13.14 Pentru sursa data initial denim:
1) redundanta R = log n H(),
2) eficienta = H()
log n .
74
M. Crasmareanu
Exemplul 13.15 (n=2) Notand p1 = p avem:
S
s1
p
s2
1p
p2i .
i=1
n
E() = n1 + i=1 x2i .
ii) Avem egalitate n stanga daca si numai daca toti xi sunt nuli.
iii) Avem egalitate n dreapta daca si numai daca p2i = pi ceea ce revine la
p1 =1 si p2 = ... =
pn = 0.
iv) i,j (pi qj )2 = ( p2i )( qj2 ) din independenta celor doua surse.
Definitia 13.18 Date sursele S1 si S2 de aceea
si dimensiune n numim:
i) corelatia lor numarul real nenegativ C(1 , 2 ) = ni=1 pi qi .
ii) coeficientul de corelatie numarul real nenegativ CC(1 , 2 ) = C(1 ,2 ) .
E1 )E(2 )
Cursul 13
75
SEMINAR 13
S13.1 Se da o sursa cu n = 5 si p1 = 21 , p2 = 14 , p3 = 18 , p4 = p5 =
cere entropia, redundanta, ecienta si energia acestei surse.
1
16 .
Se
1
Rezolvare H = 12 1 + 14 2 + 18 3 + 16
4 2 = 15
i/simbol.
8 = 1.875 bit
1.875
R = log 5 H = 2.3219 1.8750 = 0.4469, = 2.3219 = 0.8075,
1
1
2
+ 64
+ 256
= 0.25 + 0.0625 + 0.0156 + 0.0078 = 0.3359
E = 41 + 16
S13.2 .
Rezolvare .
S13.3 .
Rezolvare .
S13.4 .
Rezolvare .
S13.5 .
Rezolvare .
S13.6 .
Rezolvare .
S13.7 .
Rezolvare .
76
M. Crasmareanu
Cursul 14
Compilatoare 1: Analiz
a
lexical
a
Definitia 14.1 i) Un translator este un program (cutie neagra) care primeste
la intrare un text scris ntr-un limbaj de programare, limbajul surs
a, si produce la iesire un text echivalent scris n alt limbaj de programare, limbajul
obiect.
ii) Daca limbajul sursa este un limbaj de nivel nalt iar limbajul obiect este
un limbaj de nivel inferior (limbaj de asamblare sau cod masina), atunci
translatorul respectiv se numeste compilator.
Procesul de compilare a unui program are loc n mai multe faze. O faza
este o operatie unitara n cadrul careia are loc transformarea programului
sursa dintr-o reprezentare n alta.
Principalele faze ale unei compilari sunt:
1) Analiza lexical
a: textul sursa este preluat sub forma unei secvente de caractere care sunt grupate apoi n entitati numite atomi; atomilor li se atribuie
coduri lexicale, astfel ca, la iesirea acestei faze, programul sursa apare ca o
secventa de asemenea coduri. Exemple de atomi: cuvinte cheie, identicatori, constante numerice, semne de punctuatie etc.
2) Analiza sintactic
a are ca scop gruparea atomilor rezultati n urma analizei lexicale n structuri sintactice. O structura sintactica poate vazuta ca
un arbore ale carui noduri terminale reprezinta atomi, n timp ce nodurile
interioare reprezinta siruri de atomi care formeaza o entitate logica . Exemple de structuri sintactice: expresii, instructiuni, declaratii etc.
3) Pe durata analizei sintactice, de obicei are loc si o analiz
a semantic
a,
ceea ce nseamna efectuarea unor vericari legate de:
-compatibilitatea tipurilor datelor cu operatiile n care ele sunt implicate,
77
78
M. Crasmareanu
Cursul 14
79
instrumente software precum generatoarele de analizoare lexicale si sintactice, generatoarele de compilatoare sau sistemele de scriere a translatoarelor.
Aceste instrumente sunt programe care produc compilatoare sau parti din
compilatoare, primind la intrare o specicare a limbajului sursa precum si
a calculatorului tinta.
Un analizor lexical citeste textul sursa caracter cu caracter si-l transforma ntr-o secventa de unitati primitive (elementare) numite unit
ati lexicale, n engleza tokens.
O unitate lexicala descrie o secventa de caractere cu o anumita semnicatie
si este tratata ca o entitate logica. Astfel, pentru ecare limbaj de programare se stabilesc, atunci cand se proiecteaza acel limbaj, unitatile lexicale
corespunzatoare.
Majoritatea limbajelor utilizeaza urmatoarele unitati lexicale:
1) constante; exemplu: 737, 68.94, 3e + 2,
2) identificatori; exemplu: alpha, un ident,
3) operatori; exemplu: +, , /, <, >,
4) cuvinte rezervate; exemplu: begin, while,
5) semne speciale; de exemplu: ; . : .
Problema analizei lexicale comporta cel putin doua aspecte:
I) gasirea unei modalitati de descriere a unitatilor lexicale; astfel, se constata
ca expresiile regulate sunt instrumentele ce pot descrie orice unitate lexicala.
II) recunoasterea acestor unitati lexicale ceea ce constituie analiza lexicala
propriu zisa; daca descrierea se face prin intermediul expresiilor regulate
atunci mecanismul de recunoastere este automatul nit determinist conform
Teoremei 5.8.
Unitatile lexicale sunt de doua categorii:
a) unitati ce descriu un sir anume de caractere; exemplu if, while, ++ := ;
b) unitati ce descriu o clasa de siruri: identicatori, constante, etc.
In al doilea caz, vom considera o unitate lexicala ca ind o pereche (tipul,
valoarea).
Pentru unitati lexicale ce descriu un sir anume, prin conventie tipul
este acel sir iar valoarea coincide cu tipul. Astfel, caracterul ( este de tip
paranteza stanga iar alpha este unitate lexicala de tip identificator care are
valoarea alpha. Mai spunem ca alpha este o instanta a tokenului identicator
sau lexem.
LEXEM e 1) Cuvant sau parte de cuvant care serveste ca suport minimal
al semnicatiei; morfem lexical. 2) Unitate de baza a vocabularului care
reprezinta asocierea unuia sau a mai multor sensuri; cuvant; unitate lexicala.
din fr. lexeme. Sursa : NODEX (341523)
80
M. Crasmareanu
limbaje cu compilator C, FORTRAN, Pascal, ALGOL, BASIC
Bibliografie
[1] Capra, F., Conexiuni ascunse, Ed. Tehnica, Bucuresti, 2004.
[2] Cazacu, C., Teoria calculabilit
atii efective, Ed. Univ. Al. I. Cuza, Iasi,
1996.
[3] Chiswell, I., A Couse in Formal Languages, Automata and Groups,
Universitext, Springer-Verlag, London, 2009.
[4] Grigoras Gh., Limbaje formale si tehnici de compilare, Ed. Univ. Al.
I. Cuza, Iasi, 1985.
[5] Grigoras Gh., Constructia compilatoarelor. Algoritmi fundamentali, Ed.
Univ. Al. I. Cuza, Iasi, 2005.
[6] Gontineac M., Limbaje formale si automate,
http://www.math.uaic.ro/mgonti/.
Note de curs,
82
Bibliografie
Index
-masura unui limbaj, 72
k-cuvant, 1
nchiderea Kleene a unui limbaj, 8
nchiderea pozitiva a unui limbaj, 8
nmultirea repetata, 62
84
Index
expresie regulata, 15
expresii regulate echivalente, 16
latice, 26
latice booleana, 28
latice complementata, 27
latice distributiva, 28
latice marginita, 27
laticea submultimilor unei multimi,
26
lema de pompare, 25
limbaj (formal), 7
limbaj acceptat de un automat, 30
limbaj independent la concatenare, 8
limbaj produs neambiguu, 72
limbaj r.e. nerecursiv, 69
limbaj recognoscibil, 30
limbaj recunoscut de un monoid, 16
limbaj recursiv, 68
limbaj regulat, 9
limbajul generat de o gramatica, 54
limbajul obiect al unui compilator,
77
limbajul sursa al unui compilator, 77
litere, 1
lungimea unui cuvant, 1
metrica=distanta, 14
minimizare regulata, 64
monoid, 2
monoid banda, 22
Index
monoid liber, 3
monoid Rees, 22
monoid semilaticeal, 25
monoidul cuvintelor, 2
multime listabila, 67
multime periodica, 26
multime recognoscibila, 43
multime recursiv enumerabila (semirecursiva), 67
multime recursiva, 64
numarul literelor dintr-un cuvant, 4
obiect initial, 3
operatii boolene cu limbaje, 8
operatorul de minimizare limitata, 64
operatorul de minimizare MIN, 64
operatorul de recursie primitiva REC,
61
operatorul de superpozitie SUP, 61
optimizare de cod, 78
orbita, 47
palindrom, 17
permutare ciclica =k-ciclu, 49
pr-sir, 65
predicat, 62
predicat primitiv recursiv, 63
predicat recursiv, 64
prex, 9
prex propriu, 9
prezentarea grupurilor prin generatori si relatii, 57
problema cuvintelor, 58
proprietatea de universalitate a
monoizilor liberi, 3
r-sir, 65
recursie primitiva, 61
redundanta unei surse de informatie,
73
85
reguli de simplicare n monoidul cuvintelor, 4
reprezentarea tabelara a automatelor,
31
reversul unui cuvant, 17
ridicarea la putere a unui simbol, 2
RL-functie, 24
scaderea proprie, 65
semiautomat, 41
semiautomat (automat) perfect, 41
semiautomatul (automatul) grup, 41
semigrup, 2
semigrup liber, 3
semilatice, 27
simboluri, 1
spatiul proiectiv real, 52
stari k-echivalente, 39
stari echivalente, 39
stabilizator, 47
stare accesibila a unui automat, 35
stare ambigua a unui automat, 30
stare nedenita a unui automat, 30
stare productiva a unui automat, 36
structura automata pentru un grup,
59
structura rationala pentru un grup,
58
subcuvant, 9
subcuvant propriu, 9
subgrup, 4
sublatice, 27
submonoid, 4
subsemigrup, 4
sux, 9
sux propriu, 9
sumatorul modulo n, 41
sursa de informatie, 71
sursa produs de informatii, 73
86
teorema Kleene, 15
tipul unei unitati lexicale, 79
translator, 77
transpozitie, 49
tratarea erorilor la compilare, 78
trim, 36
unitati lexicale, 79
valoarea unei unitati lexicale, 79
varietate de monoizi, 22
VRL-functie, 24
Index