Sunteți pe pagina 1din 59

LFA: C3 LIMBAJE REGULATE

1. Automate finite deterministe


2. Operatii de inchidere
3. Automate finite nedeterministe
4. Expresii regulate
5. Lema de pompare

1
LFA: C3 LIMBAJE REGULATE

Automatele finite: aplicatii


procesarea vorbirii,
recunoasterea optica a caracterelor,
recunoasterea formelor,
modele matematice pentru calculatoarele cu memorie f mica
(incorporate in aparatele electrocasnice, comutatoare/bariere
electrice etc.).

2
LFA: C3 LIMBAJE REGULATE

Exemple 1:
AF pt un comutator electric

apasat

qinchis qdeschis
apasat

Ascensoare, termostate, masini de spalat etc.

3
LFA: C3 LIMBAJE REGULATE

Exemplu 2: AF pt o usa automata

Suport Usa Suport


frontal final

Dam pt acest automat cele 3 descrieri posibile


i. Descrierea in limbajul natural;
ii. Descrierea cu ajutorul diagramei de stare;
iii. Descrierea formala
4
LFA: C3 LIMBAJE REGULATE
Acest comutator este un calculator cu 1! bit
de memorie , suficient pt a memora in care
dintre cele 2 stari se afla comutatorul
(i) Descrierea in limbajul natural:
(ii) Descrierea cu ajutorul diagramei de stare
Final
Ambele Frontal
Frontal
Niciunul
Inchis Deschis

(iii) Descrierea formala


Pe suportul Pe suportul Pe ambele Pe niciun
frontal final suporturi suport
Inchis Deschis Inchis Inchis Inchis
Deschis Deschis Inchis Inchis Inchis
5
LFA: C3 LIMBAJE REGULATE
starea starea finala tranzitie
initiala de acceptare

0 1

q1 0
q2 q3
1 0,1
Observatie 3: Principiul de lucru
Automatul finit (determinist) este un mecanism => e caracterizat de
stari i tranzitii intre stari
date de intrare i rezultate
Date de intrare:
o secventa de simboluri din alfabet, care sunt citite unul cate unul;
In ce consta calculul/prelucrarea?
aflat in starea initiala, automatul citeste cate un simbol din secventa
primita ca intrare
trece din starea curenta in alta stare (unic determinata).

6
LFA: C3 LIMBAJE REGULATE
starea starea finala tranzitie
initiala de acceptare

0 1

q1 0
q2 q3
1 0,1
Observatie 3 (cont.)
Ce determina trecerea intr-o (anumita) alta stare (calculul/prelucrarea)?
starea curenta
simbolul curent citit
Cand se termina calculul?
au fost citite toate simbolurile din secventa de intrare
Cum se termina calculul (ce produce automatul)?
la terminarea secventei, automatul ajunge intr-una dintre starile
qF, deci automatul accepta secventa,
la terminarea secventei, automatul ajunge intr-una dintre starile
qQ\F, deci automatul nu accepta secventa;
Observatie 4: Conventii de reprezentare. 7
LFA: C3 LIMBAJE REGULATE
starea starea finala tranzitie
initiala de acceptare

0 1 1

q1 0 0
q2 q3 q1 q2
1 0,1 0,1

(A1) (A2)

1, 01, 11, 0101, 010100, 01001,


0, 10, 01010, ..
(q1,1)q2; (q1,0) (q1,1) q2; (q1,0) (q1,1)(q2,0) (q3,1) q2;
(q1,0) (q1,1)(q2,0) (q3,1) (q2,0) (q3,0) q2; etc
(q1,0) q1 ; (q1,1) (q2,0) q3 ; (q1,0) (q1,1)(q2,0) (q3,1) (q2,0) q3;
=>
L(A1) = L1 = {w{0,1}* | w=1(00)n, {0,1}*}
L(A2) = L1 { , 00 }
8
=> e necesara o definitie formala a AFD
LFA: C3 LIMBAJE REGULATE

Definitie 5: Automat finit determinist


AFD = (Q, , , s, F), unde:
Q = multime finita, nevida (stari),
= multime finita, nevida, numita alfabet de intrare (simboluri),
: Q x Q, numita functia de tranzitie,
s Q, numita starea initiala,
FQ numita multimea starilor finale (de acceptare);
Notatie 6
A = { A | A este un automat finit determinist }.

9
LFA: C3 LIMBAJE REGULATE

Exemplu 7 starea starea finala tranzitie


A1: Q = {q1,q2,q3}; initiala de acceptare
= {0,1};
s = q1; 0 1
F = {q2}
: q1 0
0 1
q2 q3
1 0,1
q1 q1 q2
q2 q3 q2
q3 q2 q2

10
LFA: C3 LIMBAJE REGULATE

Definitie 8
L(A) = limbajul recunoscut de AFD A
= multimea secventelor peste care aduc A intr-o stare finala de
acceptare.
Observatie 9: acceptare vs. recunoastere
Fie AFD A3= (Q, , , s, )
=> L(A3) =
(automatul nu accepta nicio secventa peste alfabetul sau de intrare pentru ca
nu are nicio stare finala F = Q
dar recunoaste totusi un limbaj, i anume limbajul vid!!).

11
LFA : C3 LIMBAJE REGULATE

Cum proiectam un AFD?


Ideea metodica a proiectarii unui AFD:
proiectantul devine un AFD
Sa pp. ca primim un limbaj L si vrem sa proiectam AFD A care sa il
recunoasca
Metoda de mai sus presupune ca proiectantul primeste o fraza si i se cere
sa spuna daca ea L sau L
Ca si un AFD, proiectantul vede simbolurile din fraza unul cate unul si
dupa citirea fiecarui smb trebuie sa fie in stare sa spuna daca fraza
citita pana in acel moment L sau L
i.e.: proiectantul la fel ca un AFD
are o memorie limitata
nu stie cand ajunge la capatul frazei si
trebuie sa aiba mereu un raspuns pregatit. ->
12
LFA : C3 LIMBAJE REGULATE

Cum proiectam un AFD? (cont.)


Elementul esential in aceasta strategie:
CE INFORMATIE DESPRE FRAZA CITITA TREBUIE MEMORATA
DE AFD?
De ce nu memoram toata fraza citita?
limbajul: infinit; automatul: numar finit de stari, deci memorie finita
nu este necesar:
e suficient sa memoram informatia cruciala
CARE ESTE INSA INFORMATIA CRUCIALA?
aceasta depinde de limbajul respectiv =>
stabilirea ei: elementul dificil si creativ in proiectarea unui AFD.

13
LFA : C3 LIMBAJE REGULATE

Exemplu 10
Fie = {0,1} si L = {w{0,1}+ | #1(w)=2k+1, kN}
Fie secventa de intrare
01011100100000111100011111000011100011111110000111100001:
Pas 1: stabilim informatia de memorat:
nr de smb 1 citite pana la momentul crt este sau nu impar?
la citirea unui nou smb:
daca acesta este 0 -> raspunsul trebuie lasat neschimbat;
daca acesta este 1 -> raspunsul trebuie comutat
Pas 2: reprezentam informatia de memorat ca o lista finita de posibilitati:
numar par de simboluri 1, pana acum;
numar impar de simboluri 1, pana acum. ->
14
LFA : C3 LIMBAJE REGULATE
0 0
Pas 3: asignam fiecarei posibilitati cate o stare:
qpar 1 qimpar
qpar qpar qimpar 1
qimpar . ->
Pas 4: definim tranzitiile, examinand modul in care se trece de la o
posibilitate la alta la citirea fiecarui tip de simbol din :
se trece din orice stare in cealalta la citirea unui simbol 1
se ramane in aceeasi stare la citirea unui simbol 0.

Pas 5: stabilirea starii initiale si a multimii starilor finale, examinand modul


in care se intra/se paraseste fiecare posibilitate:
initial se citesc 0 simboluri -> AFD porneste din starea qpar.
starea finala trebuie sa fie cea in care acceptam secventa de intrare =>
starea finala este qimpar.
0 0

qpar 1 qimpar
1 15
LFA : C3 LIMBAJE REGULATE
0 0

qpar 1
qimpar
L = {w{0,1}+ | #1(w)=2k+1, kN} 1
.
Pas 1: stabilim informatia de memorat:
nr de smb 1 citite pana la momentul crt este sau nu impar?
la citirea unui nou smb:
daca acesta este 0 -> raspunsul trebuie lasat neschimbat;
daca acesta este 1 -> raspunsul trebuie comutat
Pas 2: reprezentam informatia de memorat ca o lista finita de posibilitati:
numar par de simboluri 1, pana acum;
numar impar de simboluri 1, pana acum
Pas 3: asignam fiecarei posibilitati cate o stare:
qpar
qimpar . ->
Pas 4: definim tranzitiile, examinand modul in care se trece de la o posibilitate la alta la citirea fiecarui tip de
simbol din :
se trece din orice stare in cealalta la citirea unui simbol 1
se ramane in aceeasi stare la citirea unui simbol 0.
Pas 5: stabilirea starii initiale si a multimii starilor finale, examinand modul in care se intra/se paraseste
fiecare posibilitate:
initial se citesc 0 simboluri -> AFD porneste din starea qpar.
starea finala trebuie sa fie cea in care acceptam secventa de intrare starea finala este qimpar. 16
LFA : C3 LIMBAJE REGULATE
Definitie 11: Calculul efectuat de un AFD
Fie A = (Q, , , s, F) un AFD
w = w1w2 ... wn : 1in: wi
Atunci, A accepta w daca ro, r1 ,, rnQ astfel incat:
1. ro = qo,
2. (ri, wi+1) = ri+l, 0in-1, 1
0
3. rn F;
q1 0
q2 q3
Exemplu 12 1 0,1
Fie automatul de mai sus;
el accepta secventa 010100 pentru ca exista secventa de stari
q1, q1, q2, q3, q2, q3, q2 , care indeplineste toate cele 3 conditii:
(q1, 0) =q1, (q1, 1) =q2, (q2, 0) =q3, (q3, 1) =q2, (q2, 0) =q3, (q3, 0) =q2

Definitie 13
LL3 AA astfel incat L(A) = L . 17
LFA : C3 LIMBAJE REGULATE

0 1

q1 1 q2 0 1
. 0
q1 1 q2
Exemple 13
0
1. L1 = {w{0,1}* | w=w1w2wk1, kN}
Putem verifica pentru:
10101, 0001, 0 1
0000, 1010, .. => q1 q1 q2
Analog, ajungem la urmatorul AFD A1 pt L1: q2 q1 q2
A1 = ({q1, q2}, {0,1}, , q1, {q2}),
0 1 Putem verifica pentru:
q1 q1 q2 0000, 1010, ..
10101, 0001, =>
q2 q1 q2 2. L2 = {w{0,1}* | w=w1w2wk0, kN} .
18
LFA : C3 LIMBAJE REGULATE
.
s
a a b b

q1
p1
b a a b

q2 p2
b
a

3. Fie A3:
Observam simetria =>
simulam un calcul (pentru ramura stanga):
aaabbbaaabbbaa..a.
=> an, anbmak, anbmakbuav =>an1bm1ak1an2bm2ak2anxbmxakx
=> L3= {w{a,b}* | w incepe i se termina cu a}
{w{a,b}* | w incepe i se termina cu b} . 19
LFA : C3 LIMBAJE REGULATE
1 0 0,1
.
0
s q0 0 q00 1
q001
1

4. Vrem sa construim un AFD care sa recunoasca toate cuvintele binare care


contin subcuvantul 001:
L4 = {w{0,1}* | x,y {0,1}* a.i. w=x001y}
=> trecem peste prefixele formate numai din 1 (pastram starea initiala, s)
cand gasim un 0 semnalam cu o noua stare q0
daca intalnim 1 reluam cautarea intorcandu-ne in s
0 din nou semnalam cu o noua stare, q00
daca intalnim 1 semnalam cu o noua stare q001 i o declaram finala (nu
conteaza cate simboluri 0 sau 1 mai intalnim in continuare,
acceptam pt ca am gasit deja subcuvantul cautat)
0 ramanem pe loc in asteptarea unui 1 (daca il gasim trecem
in starea finala, daca nu, AFD nu accepta secventa) 20
.
LFA: C3 LIMBAJE REGULATE

1. Automate finite deterministe


2. Operatii de inchidere
3. Automate finite nedeterministe
4. Expresii regulate
5. Lema de pompare

21
LFA : C3 LIMBAJE REGULATE

Definitie 14
Fie A, B * ; definim urmatoarele operatii:
reuniunea : A B = { * | A sau B },
concatenarea : AB = { * | A i B},
operatia star : A* = {12 n * | kA, 1kn, nN };
Observatii 15
Cele 3 operatii: operatii regulate
specifice clasei limbajelor formale,
utilizate pentru a studia proprietatile limbajelor (regulate);
Operatia star
este singura unara,
A *: A* contine (n>0 sau n=0!); 22
LFA : C3 LIMBAJE REGULATE

Exemplu 16
Fie = {a,b, c,,z}, A = {telefon, mobil, fax}, B = {fix, mobil}
=> A B = {telefon, mobil, fax, fix}
A B = {telefonfix,telefonmobil, mobilfix,mobilmobil, faxfix, faxmobil}
B* = {, fix, mobil, fixfix, fixmobil, mobilfix, mobilmobil, fixfixfix,
fixfixmobil, fixmobilfix, fixmobilmobil, fixfixfixfix, . }.

23
LFA : C3 LIMBAJE REGULATE
Teorema 17
L3 este inchisa la reuniune (ie.: L1, L2 L3 => L = L1 L2 L3 )
Demonstratie (constructiva)
Ideea dem.:
ip.: L1, L2 L3 => Ai = (Qi, i, i, si, Fi), A a. i. Li = L(Ai), i=1,2
cum L = L1 L2 ->
trebuie sa construim un AFD A care sa accepte oridecateori A1, respectiv A2 accepta
-> A trebuie sa se bazeze pe A1, A2: simuleaza intai A1 i, daca el nu accepta, simuleaza A2
-> eroare: daca A l-a simulat intai pe A1 i el nu a acceptat, A nu poate relua secventa pt A2
-> alta strategie: A simuleaza simultan, pe fiecare simbol din secventa de intrare, pe A1 i A2
-> dificultate: trebuie sa memoram starile prin care trece A in timpul celor 2 simulari;
se poate face cu memoria finita a unor AFD?!?
DA, pt ca avem de memorat tot un numar finit de perechi de stari: |Q1|x|Q2| !!
=> aceste perechi de stari vor constitui multimea de stari ale lui A
starile finale de acceptare ale A sunt acele perechi de stari din A 1 respectiv A2 care
contin cel putin o stare finala de acceptare (pentru A1, respectiv A2). 24
LFA : C3 LIMBAJE REGULATE
Demonstratie formala:
Construim A = (Q, , , s, F), care recunoaste L= L1 L2 = L(A1) L(A2),
unde A1 = (Q1, 1, 1, s1, F1), A2 = (Q2, 2, 2, s2, F2), astfel:
Q = {(q1,q2) | q1Q1 i q2Q2} = Q1 x Q2
= 1 2
: Q x Q, ((q1,q2) , a) = ( 1(q1,a) , 2(q2,a) )
s = (s1,s2 )
F = {(q1,q2) | q1F1 sau q2F2} = (F1 x Q2) (Q1 x F2) q.e.d.
Corolar 18
L3 este inchisa la intersectie (ie.: L1, L2 L3 => L = L1 L2 L3 )
Demonstratie
Acelasi rationament (constructie), dar AFD care recunoaste L = L1L2 are ca
multime de stari finale, multimea:
F = {(q1,q2) | q1F1 i q2F2} = F1 x F2 q.e.d.
Intersectia NU este o operatie regulata! 25
LFA: C3 LIMBAJE REGULATE

1. Automate finite deterministe


2. Operatii de inchidere
3. Automate finite nedeterministe
4. Expresii regulate
5. Lema de pompare

26
LFA : C3 LIMBAJE REGULATE

Observatie 19
Incercam sa folosim pentru demonstrarea inchiderii L3 la
concatenare (i operatia star) aceeasi tehnica utilizata pentru
reuniune (i intersectie),
-> dificultate: AFD A care trebuie sa recunoasca A1.A2 (deci
sa accepte o secventa de tipul w=w1w2 ) trebuie sa accepte
numai cand A1, respectiv A2 accepta w1, respectiv w2
(simultan),
ori, A nu stie unde trebuie sa sparga w pentru a obtine w1 i
w2 i a incepe simularea!
=> trebuie introdusa o noua tehnica: nedeterminismul !
27
LFA : C3 LIMBAJE REGULATE
0,1 0,
1
0 1
q1 0 1 0, 1
q2 q3 q1 q2 q3 q4
1 0,1

Conceptual, diferentele dintre un AFD si un AFN sunt:


1) qQ: a:
in AFD pleaca o singura sageata pentru fiecare simbol de intrare,
0,
in AFN pleaca
1, sau
mai multe sageti pentru fiecare smb. de intrare;
2) Sagetile sunt etichetate:
in AFD: cu simboluri din ,
cu simboluri din ,
in AFN:
cu simboluri din sau cu simbolul vid, .
3) Modul de calcul 28
LFA : C3 LIMBAJE REGULATE

Definitie 20: Automat finit nedeterminist


AFN = (Q, , , s, F), unde:
Q = multime finita, nevida (stari),
= multime finita, nevida, numita alfabet de intrare (simboluri),
: Q x ( {}) P(Q), numita functia de tranzitie,
s Q, numita starea initiala,
FQ numita multimea starilor finale (de acceptare);

Notatii 21
= {},
AN = { N | N este un automat finit nedeterminist .

29
LFA : C3 LIMBAJE REGULATE

Definitie 22: Calculul efectuat de un AFN


Fie AN = (Q, , , s, F) un AFN
w = w1w2 ... wn : 1in: wi
Atunci, NA accepta w daca ro, r1 ,, rnQ astfel incat:
1. ro = s,
2. ri+1 (ri, wi+1), 0in-1,
3. rn F.

30
FA : C3 LIMBAJE REGULATE

Exemplu 22
AFN care recunoaste limbajul:
L2= { w* | u,v *: w=u101v sau w=u11v}
AFN1 = ( {q1,q2,q3, q4}, {,0,1}, , q1, {q4} ), unde:
0 1
q1 {q1} {q1,q2}
q2 {q3} {q3}
q3 {q4}
q4 {q4} {q4}

(a) 0,1 0,1

q1 1 q2 0, q3 1 q4

31
LFA : C3 LIMBAJE REGULATE

(b) 0,1

0,1 q2
1
1
q0 q1 0,1
0
1
0 q3 q4

(c) 1

q1
0,1 1
q0 0,1
0
1
1
0 q2 q3

32
LFA : C3 LIMBAJE REGULATE
Teorema 23
AFN AFD
Demonstratie

Evident: orice AFD se converteste intr-un AFN in care fiecare multime de stari in care
poate trece automatul consta dintr-o singura stare;

Fie AN=(Q, , , q0, F) AN;
el se poate converti intr-un AFD, A=(Q, , , q0, F) A, astfel:
Q = P (Q), = , q0={q0},
F = { RQ=P(Q) | R contine cel putin o stare finala a lui AFN },
RQ si a: (R,a) = { q Q | rR: q (r,a) } = rR (r,a)
Daca tranzitii etichetate cu , mai definim
Vid( R) = R {qQ | q poate fi atinsa din R cu ajutorul a 1 sau mai multe tranzitii
etichetate cu }
(R,a) = {q Q | rR: qVid((r,a))} = rRVid((r,a))
q0=Vid({q0}) q.e.d.
Corolar 24
L*: LL3: ANAN : L(AN) = L. 33
LFA : C3 LIMBAJE REGULATE
Fie AFN=(Q, , , s, F) -> AFD=(Q, , , s, F) astfel:
Q = P (Q), = , q0={q0},
F = { RQ=P(Q) | R contine cel putin o stare finala a lui AFN },
RQ si a : (R,a) = { q Q | rR: q (r,a) }= rR (r,a).
Daca tranzitii etichetate cu , mai definim
Vid( R) = R {qQ | q poate fi atinsa din R cu ajutorul a 1 sau m. multe tranzitii etichet. cu }
(R,a) = {q Q | rR: qVid((r,a))}=rRVid((r,a))
q0=Vid({q0})

Aplicatie 25
Fie AFN de mai sus (care accepta secvente de forma , a, baba, baa etc. (i
accepta b, bb, babba etc.) => NA = ({1,2,3}, {a,b}, , 1, {1});
construim AFD A, echivalent, cf. Teoremei 23
Q = {, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3}}; = {a,b}
s = {1} Vid({1})= {1} {3} = {1, 3}
F = submultimile lui Q care contin cel putin o stare de acceptare =
= {{1}, {1,2}, {1,3}, {1,2,3}}
: (,a)= , (,b)=
({1},a)=, ({1},b)={2}, ({2},a)={2,3}, ({2},b)={3}, ({3},a)={1,3},
({3},b)=,
34
LFA : C3 LIMBAJE REGULATE

<=>

35
LFA : C3 LIMBAJE REGULATE

Teorema 26
L3 e inchisa la reuniune
Demonstratie
Fie N1=(Q1, 1, 1, s1, F1), L(N1) = L1 i
N2=(Q2, 2, 2, s2, F2), L(N2) = L2
Construim N care recunoaste L1L2 folosind
aceeasi idee ca in dem. ant. dar cu AFN:
Avantaj: noul AFN, N, poate ghici care
dintre N1 sau N2 poate accepta cuvantul
de intrare astfel:
N are o noua stare initiala din care ajunge in
s1 sau s2 cu ajutorul unor tranzitii
etichetate cu .
36
LFA : C3 LIMBAJE REGULATE

Construim N = (Q, , , s, F) care va recunoaste


L1L2 astfel:
Q = {s} Q1 Q2
s=s
F = F1 F2 (pt ca N accepta cand fie N1 accepta,
fie N2 accepta, fie ambele)

1 (q, a), q Q1
2 (q, a), q Q2

( q, a )
{s1 , s2 }, q s, a
, q s, a
.

37
LFA : C3 LIMBAJE REGULATE

Teorema 27
L3 e inchisa la concatenare
Demonstratie
Fie N1=(Q1, 1, 1, s1, F1), L(N1) = L1
i N2=(Q2, 2, 2, s2, F2), L(N2) = L2
Construim N care recunoaste L1L2 folosind
aceeasi idee ca in dem. ant.
Diferenta: noul AFN, N, poate ghici unde se
termina primul cuvant i poate trece din
orice stare finala a lui N1 in starea initiala
a lui N2 printr-o tranzitie etichetata cu .
Starile finale ale lui N sunt numai starile
finale ale lui N2.
38
LFA : C3 LIMBAJE REGULATE

Construim N = (Q, , , s, F) care va recunoaste


L1L2 astfel:
Q = Q1 Q2
s = s1
F = F2 (pt ca N accepta doar cand N2 accepta
dupa ce N1 a aceptat la randul sau)

1 (q, a), q Q1 \ F1
(q, a), q F , a

( q, a ) 1 1

1 (q, a)U{s2 }, q F1 , a
2 (q, a), q Q2
.

39
LFA : C3 LIMBAJE REGULATE

Teorema 28
L3 e inchisa la operatia star
Demonstratie
Fie N1=(Q1, 1, 1, s1, F1), L(N1) = L; construim N=(Q, , , s, F), L(N) = L*.
Folosim aceeasi idee ca in cazul reuniunii i concatenarii: N va recunoaste secventa
de intrare doar cand o va putea descompune in mai multe subsecvente pe care N 1 le
va recunoaste (pe fiecare).
N are aceleasi elemente ca N1 dar contine in plus tranzitii etichetate cu care ii permit
sa se intoarca din orice stare finala in starea initiala =>
cand N incheie calculul pentru o subsecventa pe care N 1 o accepta, N are optiunea
de a reveni la starea initiala pentru a citi o noua subsecventa acceptabila de catre N 1;
Dificultate specifica: N trebuie sa accepte (L* contine intotdeauna ):
adaugam o noua stare intiala, s, pentru N
o defininim i ca stare finala
etichetam tranzitia dintre s i s 1 cu (pentru a nu introduce secvente noi in L(N).
40
LFA : C3 LIMBAJE REGULATE

Construim N = (Q, , , s, F) care va recunoaste L1.L2 astfel:


Q = Q1 {s}
s=s
F = F1 {s} (pt ca N accepta doar cand N2 accepta dupa ce N1 a aceptat la
randul sau)
1 (q, a), q Q1 \ F1
(q, a), q F , a
1 1
(q, a) 1 (q, a)U{s1}, q F1 , a
{s1}, q s, a
.
, q s, a

41
LFA: C3 LIMBAJE REGULATE

1. Automate finite deterministe


2. Operatii de inchidere
3. Automate finite nedeterministe
4. Expresii regulate
5. Lema de pompare

42
LFA : C3 LIMBAJE REGULATE

Definitie 29
Expresie regulata =
= o expresie R care satisface una dintre urmatoarele conditii:
1. a este o expresie regulata (reprezentand lb. {a}*);
2. este o expresie regulata (reprezentand lb. {} *);
3. este o expresie regulata (reprezentand limbajul vid);
4. daca R1 si R2 sunt expresii regulate
(R1R2) este o expresie regulata,
(R1oR2) este o expresie regulata,
(R1*) este o expresie regulata;
Notatii 30
L(R) = limbajul generat de expresia regulata R;
R = { R | R este o expresie regulata }.
43
LFA : C3 LIMBAJE REGULATE

Exemple 31: Expresii regulate peste alfabetul ={a,b}


1. abab = {ab,ab}
2. a = {,a}
3. (a) (b) = {,a,b,ab}
4. (a)b* = ab*b*
5. b* =
6. * = {}

44
LFA : C3 LIMBAJE REGULATE
Aplicatii ale expresiilor regulate
1. descrierea pattern-urilor:
o utilitare: AWK sau GREP din UNIX;
o limbaje de programare moderne: PERL;
o editoarele de texte
ofera mecanisme de descriere a patternurilor folosind expresii regulate
pentru cautari de secvente care satisfac anumite conditii;
2. proiectarea analizoarelor lexicale (parte a compilatoarelor pentru
limbajele de programe; efectueaza analiza lexicala a programului-sursa ca
prima faza a traducerii acestuia in program-obiect):
expresiile regulate permit descrierea sintaxei identificatorilor (nume de
variabile, constante etc.) ca in ex.:
o constanta numerica, formata dintr-o parte intreaga i eventual dintr-o
parte fractionara i/sau un semn, poate fi descrisa ca un cuvant din limbajul
(+ ) (C+ C+ . C* C* . C+) peste alfabetul C = { 0,1,2,,9 }.
45
LFA : C3 LIMBAJE REGULATE

Definitie 32
AFNG = (Q, , , qstart, qaccept), unde:
Q = multime finita, nevida, ale carei elemente se numesc stari;
= multime finita, nevida, numita alfabet de intrare, ale carei
elemente se numesc simboluri;
qstart Q, numita starea initiala;
qaccept Q, numita starea finala;
: (Q \ {qaccept }) x (Q \ { qstart }) R, numita functia de tranzitie.

46
LFA : C3 LIMBAJE REGULATE

Teorema 33
L*, LL3: o expresie regulata R peste care descrie L.
Demonstratie

Fie L* un limbaj regulat => AA a.i. L=L(A)
Exista un algoritm de convertire a unui AFD intr-o expresie regulata:
1. se converteste AFD intr-un AFNG,
2. se converteste AFNG intr-o expresie regulata;

Fie L* un limbaj si fie R o expresie regulata peste a.i. L(R)=L;
E suficient sa demonstram cum se transforma o expresie regulata intr-un
AFN (examinand pe rand cele 6 cazuri din Definitia 29) i sa aplicam
Corolarul 24):
47
LFA : C3 LIMBAJE REGULATE

Fie R R => AN AN care o recunoaste, unde AN este:


1. daca R=a, a => L(R)={a} i AN care recunoaste L(R) este:
a

Formal: AN=( {s,q}, , , s, {q} ) unde: (s,a)={q}, (r,x)= daca rs sau xa;
2. daca R= => L(R)={} i AN care recunoaste L(R) este:

Formal: AN=( {s}, , , s, {s} ) unde: (r,x)= r i x;


3. daca R= => L(R)= i AN care recunoaste L(R) este:

Formal: AN=( {s}, , , s, ) unde: (r,x)= r i x.


48
LFA : C3 LIMBAJE REGULATE

Fie R R => AN AN care o recunoaste, unde AN este:


4. daca R=R1R2 unde L(Ri) este recunoscut de Ni AN , i=1,2;
atunci AN care recunoaste L(R) se construieste din N1 i N2
ca in Teorema 26 de inchidere a L3 la ;
5. daca R=R1R2 unde L(Ri) este recunoscut de Ni AN , i=1,2;
atunci AN care recunoaste L(R) se construieste din N1 i N2
ca in Teorema 27 de inchidere a L3 la ;
6. daca R=R1 unde L(R1) este recunoscut de N1 AN;
atunci AN care recunoaste L(R) se construieste din N1
ca in Teorema 28 de inchidere a L3 la * q.e.d.
49
LFA : C3 LIMBAJE REGULATE
Exemplificare 34
1) ? NFA pentru R=(ab a)*
a
a:
b
b:
a b
ab:
a b


ab a
a

a b



(ab a)* a
q.e.d.
50

LFA: C3 LIMBAJE REGULATE

1. Automate finite deterministe


2. Operatii de inchidere
3. Automate finite nedeterministe
4. Expresii regulate
5. Lema de pompare

51
LFA : C3 LIMBAJE REGULATE

Lema de pompare
Fie L*, LL3 p N (numit lungimea sau ct.de pompare)
a.i.
wL: |w|p atunci x,y,z* cu proprietatea ca
w=xyz si:
(1) i 0: xyiz L;
(2) |y| > 0;
(3) |xy|p.
Observatii 33
x= z=;
cond (2) evita solutiile triviale;
cond. (3): f. utila in unele demonstratii de neapartenenta;
daca wL: |w|< p (pt. p N ales) => () wL: |w|p si atunci
cele 3 conditii sunt trivial verificate, lema nemaiavand obiect!! .
52
LFA : C3 LIMBAJE REGULATE
Ideea demonstratiei
Luam p=|Q|
i n=|w| , np
n+1 > p=|Q| cel putin 1 repetitie: q0qiqkqrqr+1qrqtqf

y
x qr
q0
z qf

Verificam conditiile:
fie w=xyyz; xyiz, i 2 >0, s=xz (1);
subsecv. y aduce M din qr inapoi in qr (2);
qr este prima stare care se repeta iar n+1>p
repetitia apare in una dintre primele p+1 stari din secv.53 (3)
LFA : C3 LIMBAJE REGULATE

x qr y
q0
Demonstratie z qf
Fie A = (Q, , , s, F)A , L(A) = L
i p = |Q|
Fie w = w1w2 ... wn L, |w| = n, n p
i ro, r1 ,, rnQ starile parcurse de A pentru prelucrarea secventei w
=> ro = s; ri+1=(ri, wi+1), 0in-1; rn F
Obs. ca numarul de stari este n+1 p+1 (am pp. n p ) =>
cf. principiului cutiei: intre primele p+1 stari exista o stare care se repeta
doua stari rj i rk ,1 j<kp+1: rj = rk
=> kp+1 => x,y,z*: x = w1w2...wj-1,
y = wjwj+1...wk-1,
z = wkwk+1...wn. ->
54
LFA : C3 LIMBAJE REGULATE
Demonstratie (cont.)
Cum secventa x duce A din starea ro in starea rj
iar z duce A din starea rk in starea rn , unde rn F =>
=> A accepta toate secvenetele xyiz, i 0 (=> cond(i));
Cum 1 j<kp+1 => jk |y| > 0 (=> cond(ii)),
=> |xz| p (=> cond(iii)); q.e.d.
x qr y
Aplicatie 34
q0
Lema de pompare: demonstrarea L L3: z qf
ppa LL3 => putem aplica Lema:
exista pN a.i. wL, |w|p, poate fi pompat
cautam un contraexmplu i.e.
cautam un wL, |w|p, care, oricum ar fi descompus in x,y,z *:
contrazice cel putin una dintre conditiile (i)-(iii),
(cel mai des: i N (i=0 sau i>0) a.i. xyizL);
De obicei, alegem acel w care evidentiaza esenta caracterului neregulat
55 al L.
LFA : C3 LIMBAJE REGULATE

Exercitii 35
1. L1= { anbn | n N } L3
2. L2= { an | n,k N, n=2k } L3

56
LFA : C3 LIMBAJE REGULATE

x qr y
q0
z qf

Solutii 35
1. L1= { anbn | n N } L3
fie w=apbp, p=ct de pompare => |w|=2p>p1;
exista 3 descompuneri posibile w=xyz:
x=ap, y=bk, 1kp, z=bp-k => xy2z=apbkbkbp-k=apbp+k
x=ap-k, y=ak, 1kp, z=bp => xy2z=ap-kakakbp=ap+kbp
x=ap-k, y=akbk, 1<k<p, z=bp-k => xy2z=ap-kakbkakbkbp-k=apbkakbp

57
LFA : C3 LIMBAJE REGULATE

Solutii 35
4. L2= { an | n,k N, n=2k } L3.
pt a gasi contradictia trebuie sa examinam sirul de patrate perfecte:
0, 1, 4, 9, 16, 25, 36, 49,... : distanta intre p2 i (p+1)2 creste odata cu p
=> vom examina cuvintele w=xyz= ap^2 i xy2z (evident |xy2z|=|xyz|+|y| )
Verficam conditia (iii): cf. ei trebuie sa avem:
|xy|p i deci |y|p
Pe de alta parte, |xyz|=|ap^2|=p2 => , |xy2z|=p2+|y| p2+p (a)
dar p2+p < p2+2p+1=(p+1)2, (b)
cf. cond. (ii): y => |xy2z|=p2+|y| > p2 (c)
Din (a), (b), (c) => p2 < |xy2z| < (p+1)2
=> () nN a.i. |xy2z| =n2
=> xy2z L4 => L4 L3. 58
LFA: C3 LIMBAJE REGULATE

1. Automate finite deterministe


2. Operatii de inchidere
3. Automate finite nedeterministe
4. Expresii regulate
5. Lema de pompare

59

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