20.11.2014 Views

Limbaje Formale, Automate şi Compilatoare

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Limbaje</strong> <strong>Formale</strong>, <strong>Automate</strong> <strong>şi</strong> <strong>Compilatoare</strong><br />

Curs 2<br />

2014-15<br />

LFAC (2014-15) Curs 2 1 / 26


Proprietăţi de închidere pentru L 3<br />

Curs 2<br />

1 Proprietăţi de închidere pentru L 3<br />

2 Lema Bar-Hillel<br />

3 <strong>Automate</strong> finite deterministe<br />

4 <strong>Automate</strong> finite nedeterministe<br />

LFAC (2014-15) Curs 2 2 / 26


Proprietăţi de închidere pentru L 3<br />

Fie L, L 1 , L 2 limbaje regulate: există gramaticile G, G 1 , G 2 de tip 3<br />

astfel ca L = L(G), L 1 = L(G 1 ) <strong>şi</strong> L 2 = L(G 2 ).<br />

Atunci, următoarele limbaje sunt de asemenea regulate:<br />

1 L 1 ∪ L 2<br />

2 L 1 · L 2<br />

3 L ∗<br />

4 L R<br />

5 L 1 ∩ L 2<br />

6 L 1 \ L 2<br />

LFAC (2014-15) Curs 2 3 / 26


Proprietăţi de închidere pentru L 3<br />

Închiderea la operaţia de iteraţie<br />

Fie L limbaj de tip 3 (regulat).<br />

Fie G = (N, T, S, P) de tip 3, în formă normală, care genereaza L<br />

(L = L(G)).<br />

Presupunem ca simbolul de start S nu apare in partea dreaptă a<br />

vreunei reguli.<br />

Gramatica G ′ = (N, T, S, P ′ ) unde P ′ consta din<br />

reguli A → aB din P<br />

reguli A → aS, pentru orice regula A → a din P<br />

regula S → ǫ<br />

este de tip 3 si generează L ∗<br />

LFAC (2014-15) Curs 2 4 / 26


Proprietăţi de închidere pentru L 3<br />

Închiderea la intersecţie<br />

Fie L 1 , L 2 limbaje de tip 3 (regulate).<br />

Fie G 1 = (N 1 , T 1 , S 1 , P 1 ) si G 2 = (N 2 , T 2 , S 2 , P 2 ) gramatici de tip 3, în<br />

formă normală, cu L 1 = L(G 1 ), L 2 = L(G 2 ).<br />

Gramatica G = (N 1 × N 2 , T 1 ∩ T 2 ,(S 1 , S 2 ), P), unde P constă din:<br />

(S 1 , S 2 ) → ǫ, dacă S 1 → ǫ ∈ P 1 <strong>şi</strong> S 2 → ǫ ∈ P 2<br />

(A 1 , B 1 ) → a(A 2 , B 2 ), dacă A 1 → aA 2 ∈ P 1 <strong>şi</strong> B 1 → aB 2 ∈ P 2<br />

(A 1 , A 2 ) → a, dacă A 1 → a ∈ P 1 <strong>şi</strong> A 2 → a ∈ P 2<br />

este de tip 3 <strong>şi</strong> generează limbajul L 1 ∩ L 2<br />

LFAC (2014-15) Curs 2 5 / 26


Proprietăţi de închidere pentru L 3<br />

Închiderea la operaţia de oglindire<br />

Fie L limbaj de tip 3 (regulat).<br />

Fie G = (N, T, S, P) de tip 3, în formă normală, care generează L<br />

(L = L(G))<br />

Presupunem ca simbolul de start S nu apare in partea dreaptă a<br />

vreunei reguli.<br />

Gramatica G ′ = (N, T, S ′ , P ′ ) unde P ′ constă din<br />

reguli S ′ → aA, pentru orice regulă A → a din P<br />

reguli B → aA pentru orice regulă A → aB din P<br />

regula S → ǫ<br />

regula S ′ → a, pentru orice regulă S → a din P (a ∈ T ∪{ǫ})<br />

este de tip 3 <strong>şi</strong> generează L R<br />

LFAC (2014-15) Curs 2 6 / 26


Lema Bar-Hillel<br />

Curs 2<br />

1 Proprietăţi de închidere pentru L 3<br />

2 Lema Bar-Hillel<br />

3 <strong>Automate</strong> finite deterministe<br />

4 <strong>Automate</strong> finite nedeterministe<br />

LFAC (2014-15) Curs 2 7 / 26


Lema Bar-Hillel<br />

Lema Bar-Hillel (lema de pompare)<br />

Lema 2.1<br />

Fie L un limbaj de tip 3. Există un număr m astfel încât oricare ar fi<br />

cuvântul w ∈ L cu |w| ≥ m, acesta are o descompunere de forma<br />

w = xyz, unde 0 < |y| ≤ m, <strong>şi</strong> xy i z ∈ L oricare ar fi i ≥ 0.<br />

Fie G = (N, T, S, P) astfel ca L(G) = L. Dacă |N| este numărul simbolurilor din N ,<br />

m = |N|+1, se arată că are loc proprietatea enunţată:<br />

Fie w = a 1 a 2 ...a n, n ≥ m ⇒ n ≥ |N|+1<br />

S ⇒ a 1 A 1 ⇒ a 1 a 2 A 2 ⇒ ... ⇒ a 1 a 2 ...a k A k ⇒ ... ⇒ a 1 a 2 ...a k a k+1 ...a sA s ⇒ ... ⇒<br />

a 1 a 2 ...a k a k+1 ...a sa s+1 ...a n−1 A n−1 ⇒ a 1 a 2 ...a k a k+1 ...a sa s+1 ...a n−1 a n<br />

A k = A s<br />

LFAC (2014-15) Curs 2 8 / 26


Lema Bar-Hillel<br />

Demonstraţie<br />

w = a 1 a 2 ...a n , n ≥ m<br />

S ⇒ a 1 A 1 ⇒ a 1 a 2 A 2 ⇒ ... ⇒ a 1 a 2 ...a k A k ⇒ ... ⇒<br />

a 1 a 2 ...a k a k+1 ...a s A k ⇒ ... ⇒ a 1 a 2 ...a k a k+1 ...a s a s+1 ...a n−1 a n<br />

Atunci:<br />

S ⇒ ∗ a 1 a 2 ...a k A k<br />

A k ⇒ ∗ a k+1 ...a s A k <strong>şi</strong><br />

A k ⇒ ∗ a s+1 ...a n−1 a n<br />

Fie x = a 1 a 2 ...a k , y = a k+1 ...a s <strong>şi</strong> z = a s+1 ...a n−1 a n<br />

S ⇒ ∗ xA k , A k ⇒ ∗ yA k <strong>şi</strong> A k ⇒ ∗ z<br />

LFAC (2014-15) Curs 2 9 / 26


Lema Bar-Hillel<br />

Demonstraţie<br />

Fie x = a 1 a 2 ...a k , y = a k+1 ...a s <strong>şi</strong> z = a s+1 ...a n−1 a n<br />

S ⇒ ∗ xA k<br />

A k ⇒ ∗ yA k <strong>şi</strong><br />

A k ⇒ ∗ z<br />

Pentru i = 0, xz ∈ L(G): S ⇒ ∗ xA k ⇒ ∗ xz<br />

Pentru i > 0, xy i z ∈ L(G):<br />

S ⇒ ∗ xA k ⇒ ∗ xyA k ⇒ ∗ xyyA k ⇒ ∗ ... ⇒ ∗ xyy ...yA k ⇒ ∗<br />

xyy ...yz = xy i z<br />

LFAC (2014-15) Curs 2 10 / 26


<strong>Automate</strong> finite deterministe<br />

Curs 2<br />

1 Proprietăţi de închidere pentru L 3<br />

2 Lema Bar-Hillel<br />

3 <strong>Automate</strong> finite deterministe<br />

4 <strong>Automate</strong> finite nedeterministe<br />

LFAC (2014-15) Curs 2 11 / 26


<strong>Automate</strong> finite deterministe<br />

<strong>Automate</strong> finite<br />

Mecanism de recunoaştere (acceptare) pentru limbaje<br />

<strong>Limbaje</strong> de tip 3<br />

Mulţime finită de stări<br />

LFAC (2014-15) Curs 2 12 / 26


<strong>Automate</strong> finite deterministe<br />

<strong>Automate</strong> finite<br />

Definiţie 1<br />

Un automat finit determinist este un 5-uplu A = (Q,Σ,δ, q 0 , F), unde:<br />

Q <strong>şi</strong> Σ sunt mulţimi finite, nevide, numite mulţimea stărilor<br />

respectiv alfabetul de intrare<br />

q 0 ∈ Q este starea iniţială<br />

F ⊆ Q este mulţimea stărilor finale<br />

δ este o funcţie , δ : Q ×Σ → Q, numită funcţia de tranziţie<br />

LFAC (2014-15) Curs 2 13 / 26


<strong>Automate</strong> finite deterministe<br />

Reprezentare prin diagrame(grafuri) de tranziţie<br />

Stări:<br />

Stare iniţială:<br />

Stări finale:<br />

Funcţia de tranziţie:<br />

LFAC (2014-15) Curs 2 14 / 26


<strong>Automate</strong> finite deterministe<br />

Reprezentare prin matricea de tranziţie<br />

A = ({q 0 , q 1 },{a, b},δ, q 0 ,{q 1 })<br />

LFAC (2014-15) Curs 2 15 / 26


<strong>Automate</strong> finite deterministe<br />

Limbajul acceptat<br />

Extensia lui δ la cuvinte ˆδ : Q ×Σ ∗ → Q<br />

1 ˆδ(q,ǫ) = q,∀q ∈ Q;<br />

2 ˆδ(q, ua) = δ(ˆδ(q, u), a)), ∀q ∈ Q,∀u ∈ Σ ∗ ,∀a ∈ Σ.<br />

Observaţii:<br />

ˆδ(q, a) = δ(q, a),∀q ∈ Q,∀a ∈ Σ<br />

ˆδ(q, uv) = ˆδ(ˆδ(q, u), v), ∀q ∈ Q,∀u, v ∈ Σ ∗<br />

LFAC (2014-15) Curs 2 16 / 26


<strong>Automate</strong> finite deterministe<br />

Limbajul acceptat<br />

Definiţie 2<br />

Limbajul acceptat (recunoscut) de automatul A = (Q,δ,Σ, q 0 , F) este<br />

mulţimea :<br />

L(A) = {w|w ∈ Σ ∗ ,ˆδ(q 0 , w) ∈ F}.<br />

Un cuvânt w este recunoscut de un automat A dacă, după citirea<br />

în întregime a cuvântului w, automatul (pornind din starea iniţială<br />

q 0 ) ajunge într-o stare finală.<br />

ˆδ(q, a) = δ(q, a),∀q ∈ Q,∀a ∈ Σ. Din acest motiv, ˆδ va fi notată de<br />

asemenea cu δ.<br />

Două automate A <strong>şi</strong> A ′ sunt echivalente, dacă L(A) = L(A ′ )<br />

LFAC (2014-15) Curs 2 17 / 26


<strong>Automate</strong> finite deterministe<br />

Exemple<br />

LFAC (2014-15) Curs 2 18 / 26


<strong>Automate</strong> finite deterministe<br />

Exemple<br />

L(A) = {a n b m |n ≥ 0, m ≥ 1}<br />

LFAC (2014-15) Curs 2 18 / 26


<strong>Automate</strong> finite deterministe<br />

Exemple<br />

L(A) = {a n b m |n ≥ 0, m ≥ 1}<br />

L(A) = {a, b} ∗<br />

LFAC (2014-15) Curs 2 18 / 26


<strong>Automate</strong> finite deterministe<br />

Exemple<br />

<strong>Automate</strong> deterministe pentru:<br />

L = {w ∈ {0, 1} ∗ |w conţine un număr par de 0}<br />

L = {w ∈ {0, 1} ∗ |w se termina cu 11}<br />

LFAC (2014-15) Curs 2 19 / 26


<strong>Automate</strong> finite nedeterministe<br />

Curs 2<br />

1 Proprietăţi de închidere pentru L 3<br />

2 Lema Bar-Hillel<br />

3 <strong>Automate</strong> finite deterministe<br />

4 <strong>Automate</strong> finite nedeterministe<br />

LFAC (2014-15) Curs 2 20 / 26


<strong>Automate</strong> finite nedeterministe<br />

<strong>Automate</strong> finite nedeterministe<br />

Definiţie 3<br />

Un automat finit nedeterminist este un 5-uplu A = (Q,Σ,δ, q 0 , F),<br />

unde:<br />

Q, Σ, q 0 <strong>şi</strong> F sunt definite ca în cazul automatelor finite<br />

deterministe<br />

δ este o funcţie , δ : Q ×Σ → 2 Q , numită funcţia de tranziţie<br />

Observaţie:<br />

A este automat determinist, dacă<br />

|δ(q, a)| = 1,∀q ∈ Q,∀a ∈ Σ<br />

LFAC (2014-15) Curs 2 21 / 26


<strong>Automate</strong> finite nedeterministe<br />

Exemple<br />

LFAC (2014-15) Curs 2 22 / 26


<strong>Automate</strong> finite nedeterministe<br />

Extensia lui δ la cuvinte<br />

Fie S mulţime de stări. Notăm δ(S, a) = ⋃ q∈Sδ(q, a).<br />

Extensia lui δ la cuvinte ˆδ : Q ×Σ ∗ → 2 Q<br />

1 ˆδ(q,ǫ) = {q},∀q ∈ Q;<br />

2 ˆδ(q, ua) = δ(ˆδ(q, u), a), ∀q ∈ Q,∀u ∈ Σ ∗ ,∀a ∈ Σ.<br />

LFAC (2014-15) Curs 2 23 / 26


<strong>Automate</strong> finite nedeterministe<br />

Extensia lui δ la cuvinte<br />

Fie S mulţime de stări. Notăm δ(S, a) = ⋃ q∈Sδ(q, a).<br />

Extensia lui δ la cuvinte ˆδ : Q ×Σ ∗ → 2 Q<br />

1 ˆδ(q,ǫ) = {q},∀q ∈ Q;<br />

2 ˆδ(q, ua) = δ(ˆδ(q, u), a), ∀q ∈ Q,∀u ∈ Σ ∗ ,∀a ∈ Σ.<br />

Observaţii:<br />

ˆδ(q, a) = δ(q, a), ∀q ∈ Q,∀a ∈ Σ<br />

ˆδ(q, uv) = ˆδ(ˆδ(q, u), v), ∀q ∈ Q,∀u, v ∈ Σ ∗ .<br />

LFAC (2014-15) Curs 2 23 / 26


<strong>Automate</strong> finite nedeterministe<br />

Limbajul acceptat<br />

Definiţie 4<br />

Limbajul acceptat (recunoscut) de automatul finit nedeterminist<br />

A = (Q,Σ,δ, q 0 , F) este mulţimea :<br />

L(A) = {w|w ∈ Σ ∗ ,ˆδ(q 0 , w)∩F ≠ ∅}.<br />

Un cuvânt w este recunoscut de un automat A dacă, după citirea<br />

în întregime a cuvântului w, automatul (pornind din starea iniţială<br />

q 0 ) poate să ajungă într-o stare finală.<br />

LFAC (2014-15) Curs 2 24 / 26


<strong>Automate</strong> finite nedeterministe<br />

Determinism = Nedeterminism<br />

Teorema 1<br />

Pentru orice automat nedeterminist A, există unul determinist A ′<br />

echivalent.<br />

Dacă A = (Q,Σ,δ, q 0 , F) atunci A ′ = (2 Q ,Σ,δ ′ , Q 0 , F ′ ) unde:<br />

Q 0 = {q 0 }<br />

F ′ = {S|S ⊆ Q, S ∩ F ≠ ∅}<br />

δ ′ (S, a) = ⋃ s∈Sδ(s, a) (= δ(S, a)), ∀S ∈ 2Q<br />

Pentru aplicaţii se construiesc doar stările accesibile din starea<br />

iniţială<br />

LFAC (2014-15) Curs 2 25 / 26


<strong>Automate</strong> finite nedeterministe<br />

Exemplu<br />

LFAC (2014-15) Curs 2 26 / 26

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!