Limbaje Formale, Automate şi Compilatoare
Limbaje Formale, Automate şi Compilatoare Curs 2 2014-15 LFAC (2014-15) Curs 2 1 / 26
- Page 2 and 3: Proprietăţi de închidere pentru
- Page 4 and 5: Proprietăţi de închidere pentru
- Page 6 and 7: Proprietăţi de închidere pentru
- Page 8 and 9: Lema Bar-Hillel Lema Bar-Hillel (le
- Page 10 and 11: Lema Bar-Hillel Demonstraţie Fie x
- Page 12 and 13: Automate finite deterministe Automa
- Page 14 and 15: Automate finite deterministe Reprez
- Page 16 and 17: Automate finite deterministe Limbaj
- Page 18 and 19: Automate finite deterministe Exempl
- Page 20 and 21: Automate finite deterministe Exempl
- Page 22 and 23: Automate finite nedeterministe Curs
- Page 24 and 25: Automate finite nedeterministe Exem
- Page 26 and 27: Automate finite nedeterministe Exte
- Page 28 and 29: Automate finite nedeterministe Dete
<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