Calcolabilit` a e linguaggi formali
4 Settembre 2013
Domanda 1
(a) Dare una grammatica per ciascuno dei seguenti linguaggi:
L1= {(ana)mbak: k ≥ 0, n > 1, 1 < m < 4};
L2= {an(amb)ak: k ≥ 0, n = 2, m = k}.
(b) Determinare il tipo della grammatica data nella classificazione di Chomsky.
(c) Determinare il tipo del linguaggio. Se il linguaggio `e di tipo 3, dare un’espressione regolare o un automa finito corrispondente. Se il linguaggio `e di tipo 2 dimostrare tramite il pumping lemma tipo 3 che non `e un linguaggio regolare.
Soluzione
(a) Semplifichiamo la descrizione di L1.
L1= {(ana)mbak: k ≥ 0, n > 1, 1 < m < 4} =
= {(an+1)mbak: k ≥ 0, n > 1, m ∈ {2, 3}} =
= {a2(n+1)bak : k ≥ 0, n > 1} + {a3(n+1)bak: k ≥ 0, n > 1} =
= {a2hbak : k ≥ 0, h > 2} + {a3hbak : k ≥ 0, h > 2}.
Diamo una grammatica per L1. Le produzioni sono:
S → AbB|CbB, A → aaA|a6, B → aB|, C → aaaC|a9. Semplifichiamo la descrizione di L2.
L2= {an(amb)ak: m, k ≥ 0, n = 2, m = k} = {aaambam: m ≥ 0}.
Diamo una grammatica per L2. Le produzioni sono:
S → aaX, X → aXa|b.
(b) Entrambe le grammatiche sono libere da contesto (tipo 2).
(c) L1 ´e un linguaggio regolare (tipo 3).
Una espressione regolare corrispondente ´e la seguente:
a6(aa)∗ba∗+ a9(aaa)∗ba∗.
L2 ´e un linguaggio libero da contesto (tipo 2).
Applichiamo il pumping lemma tipo 3 per dimostrare che non ´e un linguaggio regolare.
Per ogni n naturale, consideriamo la stringa x = an+2ban, x appartiene ad L e |x| ≥ n.
Ogni scomposizione di x in tre parti, x = uvw, con |uv| ≤ n e |v| = r ≥ 1 ´e tale che v ´e in a+, quindi pompando i volte v, con i = 0, otteniamo uw = an+2−rban che non appartiene ad L. CVD
Domanda 2
(a) Definire induttivamente le espressioni regolari (suggerimento: sono necessari 6 casi).
(b) Associare un automa finito ad ogni caso della definizione induttiva di espressione regolare