Pumping Lemma per Linguaggi Liberi

Transcript

Pumping Lemma per Linguaggi Liberi
Pumping Lemma per Linguaggi Liberi
Data una stringa w definita su un certo alfabeto, indichiamo con |w| la sua lunghezza,
ovvero il numero di caratteri da cui è composta. Per ogni intero n > 0, definiamo wn
come la stringa ottenuta concatenando n volte la stringa w.
Teorema (Pumping Lemma). Per ogni linguaggio libero L, esiste un intero positivo
costante H tale che ogni stringa z∈L di lunghezza |z| > H può essere decomposta nella
forma z = uvwxy tale che:
1. |vx| ≥ 1 (almeno una stringa tra v e x è diversa da ε);
2. |vwx| ≤ H;
3. per ogni intero k ≥ 1 vale che uvkwxky∈L.
Sfruttando il Pumping Lemma è possibile dimostrare che un certo linguaggio non è
esprimibile attraverso una grammatica libera dal contesto. Si consideri, ad esempio, il
seguente linguaggio: L = {anbncn | n ≥ 1}.
Teorema. Il linguaggio L = {anbncn | n ≥ 1} non è libero.
Dimostrazione. Supponiamo per assurdo che L sia libero. Applicando il Pumping
Lemma abbiamo che esiste una costante positiva H tale che la stringa z = aHbHcH∈L,
di lunghezza |z| = 3H > H, può essere decomposta nella forma z = uvwxy tale che:
1. |vx| ≥ 1 (almeno una stringa tra v e x è diversa da ε);
2. |vwx| ≤ H;
3. uv2wx2y∈L.
L’osservazione fondamentale, adesso, è che la stringa vwx non può contenere sia a
che c (infatti, se vwx contenesse contemporaneamente a e c, vorrebbe dire che essa
dovrebbe contenere tutte le H occorrenze di b, quindi si avrebbe |vwx| ≥ H+2, il ché
contrasta con il punto 2). Quindi, in uv2wx2y ci saranno o lo stesso numero di a
presenti in z, o lo stesso numero di c presenti in z, ovvero H. Dunque, poiché
|uv2wx2y| > 3H e uv2wx2y contiene esattamente H occorrenze di una tra le lettere a e c,
abbiamo che uv2wx2y non può appartenere a L. Ciò genera un assurdo con il punto 3,
dovuto al fatto di aver supposto che L fosse libero. Quindi, L non può essere un
linguaggio libero.