Sunteți pe pagina 1din 19

Gramatici. Automate finite.

Curs 3
Gramatica 𝐺 = (𝑁, Σ, 𝑃, 𝑆)
Un ansamblu 𝐺 = (𝑁, Σ, 𝑃, 𝑆) unde:
• N este un alfabet de simboluri neterminale;
• Σ este un alfabet de simboluri terminale;
• 𝑃 ⊆ (𝑁⋃∑)*N (𝑁⋃∑)*x (𝑁⋃∑)*, P este o multime finita de productii;
• SЄN, S este simbolul initial;
se numeste gramatica.

Daca (α,β)ЄP, atunci notam productia α→β si inseamna ca α se inlocuieste cu β

N∩Σ=Ф

Folosite pentru specificarea limbajelor de programare.


Relatia de Derivare
Definita pe (𝑁⋃Σ)*

⟹ 𝑑𝑒𝑟𝑖𝑣𝑎𝑟𝑒 𝑑𝑖𝑟𝑒𝑐𝑡𝑎

𝛾⟹𝛿 ∃𝛾1, 𝛾2, 𝛼, 𝛽 ∈(Ν⋃∑) 𝑎𝑠𝑡𝑓𝑒𝑙 𝑖𝑛𝑐𝑎𝑡 𝛾 = 𝛾1𝛼𝛾2, 𝛿 = 𝛾1𝛽𝛾2, 𝑖𝑎𝑟 (𝛼 ⟶ 𝛽)𝜖𝑃

𝑘
k-derivare
Succesiune de k derivari directe
𝑘
𝛾 𝛿 ⟺ ∃𝛼1, 𝛼2, … , 𝛼𝑘−1 ∈ (Ν ∪ Σ)* astfel incat 𝛾 𝛼1 ⋯ 𝛼𝑘−1 𝛿

∗ 𝑑𝑒𝑟𝑖𝑣𝑎𝑟𝑒
∗ 𝑘
𝛾 𝛿, daca 𝛾 = 𝛿 𝑠𝑎𝑢 𝛾 𝛿

+
+ 𝑑𝑒𝑟𝑖𝑣𝑎𝑟𝑒
+ 𝑘
𝛾 𝛿 𝑑𝑎𝑐𝑎 ∃ 𝑘 > 0 𝑎𝑠𝑡𝑓𝑒𝑙 𝑖𝑛𝑐𝑎𝑡 𝛾 𝛿
Forma propozitionala. Limbajul generat de o
gramatica.

Fie G=(N, Σ, P, S) . O secventa xЄ(NUΣ)* astfel incat S 𝐱 se numeste 𝐟𝐨𝐫𝐦𝐚 𝐩𝐫𝐨𝐩𝐨𝐳𝐢𝐭𝐢𝐨𝐧𝐚𝐥𝐚.

O forma propozitionala care nu contine neterminale se numeste propozitie.

Limbajul generat de o gramatica G=(N, Σ, P, S) este:

∗ ∗
L(G)={𝒘|𝒘 ∈ 𝜮 , 𝑺 𝒘}

Doua gramatici, G1 si G2 sunt echivalente daca ele genereaza acelasi limbaj (L(G1)=L(G2)).
Clasificarea gramaticilor (Chomsky):
Gramatici de tip 1 Gramatici dependente de context
• Gramatici in care pentru orice productie 𝛼 → 𝛽 ∈ 𝑃 avem |𝛼| ≤ |𝛽|
• Daca 𝑆 → 𝜀 ∈ 𝑃 , atunci S nu apare in membrul drept al niciunei productii.

Gramatici de tip 2 Gramatici independente de context



• Gramatici in care productiile sunt de forma 𝐴 → 𝛼, 𝐴 ∈ 𝑁 𝑠𝑖 𝛼 ∈ 𝑁⋃Σ

Gramatici de tip 3 Gramatici regulare


• Gramatici in care orice productie are una din formele urmatoare:
• 𝐴 → 𝑎𝐵 𝑠𝑎𝑢 𝐴 → 𝑏, 𝑢𝑛𝑑𝑒 𝐴, 𝐵 ∈ 𝑁 𝑠𝑖 𝑎, 𝑏, ∈ Σ
• Daca 𝑆 → 𝜀 ∈ 𝑃 , atunci S nu apare in membrul drept al niciunei productii.
𝜀 − productie. Gramatica ε-independenta
› O productie de forma 𝐴 → 𝜀 se numeste ε-productie

› Gramatica G=(N, Σ, P, S) se numeste ε-independenta daca:


– Daca 𝜀 ∉ 𝐿 𝐺 atunci G nu are ε-productii
– Daca εЄL(G) atunci G are o singura productie 𝑆 → 𝜀, iar S nu apare in
membrul drept al niciunei productii.

Teorema
∀ G= (N, Σ, P, S), ∃ G' = (N', Σ', P', S) echivalentã, ε-independentã.
Notatii
› A, B, C – neterminale/nonterminale
› SЄN – simbol de start
› a, b, c Є Σ -terminale

› 𝛼, 𝛽, 𝛾𝜖 𝑁⋃Σ - forme propozitionale
› x, y, z ЄΣ* - cuvinte
› ε – cuvantul vid
› X, YЄ(NUΣ) – simboluri din gramatica
Exemplu
› G=(N, Σ, P, S)
› N={S,A, B}
› Σ={a, b}
› P: S→AS|a
A →b
bba ЄL(G)? ab ЄL(G)?


S bbba??

S ⟹AS ⟹AAS ⟹AAAS ⟹bAAS ⟹bbAS ⟹bbbS ⟹bbba


Provocare
› Gramatica pentru declaratie lista identificatori C++.
› Ex: int a,b, c;
› a,b,c identificatori (notati prin id)
Solutie
› G=(N, Σ, P, Decl)
› N={Decl, Tip, ListaId}
› Σ={“,”, id, integer, char, double, “;”}
› P: Decl→ Tip listaId ;
Tip → integer char double
listaId → id| id,ListaId
› Un automat finit este un ansamblu
AUTOMATE 𝑴 = 𝑸, 𝜮, 𝜹, 𝒒𝟎, 𝑭 in care:
FINITE
 Q- multime finita si nevida de elemente,
numite stari;
𝑴 = 𝑸, 𝜮, 𝜹, 𝒒𝟎, 𝑭  Σ – multime finita si nevida numita,
alfabet de intrare;
 𝛿: 𝑄 × Σ → 𝒫(𝑄) este o aplicatie, numita
functie de tranzitie;
 q0ЄΣ este stare initiala;
 F ⊆ Q este o multime nevida numita,
multimea starilor finale.
Modelul fizic
Automat finit determinist (AFD). Automat finit
nedeterminist (AFN)
Fie M un automat finit. Daca ∀𝑞 ∈ 𝑄, ∀𝑎 ∈ Σ 𝑎𝑣𝑒𝑚 𝛿 𝑞, 𝑎 ≤ 1 atunci automatul M se numeste
automat finit determinist (AFD), iar in caz contrar se numeste automat finit nedeterminist
(AFN).

Fie M un automat finit. Daca ∀𝑞 ∈ 𝑄, ∀𝑎 ∈ Σ 𝑎𝑣𝑒𝑚 𝛿 𝑞, 𝑎 = 1 atunci automatul M se numeste


automat finit determinist complet (total) definit.
In acest caz, avem intotdeauna ∀𝑞 ∈ 𝑄, ∀𝑎 ∈ Σ, 𝛿 𝑞, 𝑎 = 𝑝 , 𝑝Є𝑄
Configuratii si relatii de tranzitie
c=(q,x), q- stare, x –secventa necitita de pe banda de intrare, x ЄΣ*

Configuratia initiala
• (q0,w), w secventa
Configuratia finala
• (qf,ε), qfЄF, ε-secventa vida (acceptare)
Relatii intre configuratii
Tranzitie simpla (move) ⊢

𝒒, 𝒂𝒙 ⊢ 𝒑, 𝒙 , 𝒑 ∈ 𝜹(𝒒, 𝒂)

k-tranzitie ⊢k

Succesiune de k tranzitii directe 𝑐0 ⊢ 𝑐1 ⊢ ⋯ ⊢ 𝑐𝑘

+
+-tranzitie ⊢

𝑐 ⊢+𝑐 ′ 𝑑𝑎𝑐𝑎 ∃𝑘 > 0 𝑎𝑠𝑡𝑓𝑒𝑙 𝑖𝑛𝑐𝑎𝑡 𝑐 ⊢k 𝑐′

*-tranzitie*⊢
k
𝑐 ⊢* 𝑐 ′ 𝑑𝑎𝑐𝑎 ∃𝑘 ≥ 0 𝑎𝑠𝑡𝑓𝑒𝑙 𝑖𝑛𝑐𝑎𝑡 𝑐 ⊢ 𝑐′
Limbajul acceptat de un automat

Limbajul acceptat de automatul 𝑀 = 𝑄, Σ, 𝛿, 𝑞0, 𝐹 este



T 𝑀 = 𝑤 ∈ Σ 𝑞0 , 𝑤 ⊢ 𝑞𝑓 , 𝜀 * , 𝑞𝑓 ∈ 𝐹 .

• Doua automate M1 si M2 sunt echivalente daca si numai daca T(M1)=T(M2)

• εЄL(M) q0ЄF
𝑴 = 𝑸, 𝜮, 𝜹, 𝒒𝟎, 𝑭
Reprezentare

Daca 𝛿 𝑞0,0 ∋ 𝑞1 𝑎𝑡𝑢𝑛𝑐𝑖 𝑣𝑜𝑚 𝑎𝑣𝑒𝑎 𝑢𝑛 𝑎𝑟𝑐 𝑒𝑡𝑖𝑐ℎ𝑒𝑡𝑎𝑡 𝑐𝑢 0 𝑖𝑛𝑡𝑟𝑒 𝑞0 𝑠𝑖 𝑞1


Stare
Stare finala Graf orientat
initiala

Stare finala
(Boolean 0/1)

a1 … aj … am
q0 Tabelar

qi … … 𝛿(𝑞𝑖, 𝑎𝑗) … …. zi

qn
Exercitii

Reprezentati ca graf automatul:

Q Σ a b
p q p 1
q r p 0
r p r 0
Exercitii

Construiti un AFD pentru identificatori.