Esercizi pumping lemma

Linguaggi di programmazione – esercizio 2 pumping lemma

pumping lemmaEsercizio pumping lemma

Dimostrare se questo linguaggio sia libero da contesto:

L = {ai bj ck | i,j,k ≥ 0, j = max(i,k)}

Supponiamo per assurdo che L sia libero da contesto, quindi vale il pumping lemma per i linguaggi liberi da contesto. Per il pumping lemma:

∃p ∈ N, p dipendente solo da L, tale che se z ∈ L, |z| > p

allora

z = uvwxy con
1) |vwx| ≤ p
2) vx ≠ ɛ
3) uviwxiy ∈ L, ∀i ≥ 0

Consideriamo la parola: z = arbrcr con r = p+1
z ∈ L, |z| = 3r > p quindi per il pumping lemma z = uvwxy

Per la 1) del Pumping Lemma si hanno le seguenti possibilità:

1) vwx è costituita da sole a: vwx = ak con 0<k≤p

2) vwx è costituita da sole b: vwx = bk con 0<k≤p

3) vwx è costituita da sole c: vwx = ck con 0<k≤p

4) vwx è a cavallo tra le a e le b: vwx = akby con 0<k+y≤p

5) vwx è a cavallo tra le b e le c: vwx = bkcy con 0<k+y≤p

vwx non può essere contemporaneamente a cavalo tra a,b e c perché sarebbe troppo lunga: |vwx| > p

Analizziamo ciascun caso:

1) Consideriamo la stringa pompata uv2wx2y
aggiungiamo almeno una a ed al più p  a

uv2wx2y = ar+t br cr con 0<t≤p

uv2wx2y ∉ L perché #(b) ≠ max(#a, #c)

 

2) Consideriamo la stringa pompata uv2wx2y
aggiungiamo almeno una b ed al più p  b

uv2wx2y = ar br+t cr con 0<t≤p

uv2wx2y ∉ L perché #(b) ≠ max(#a, #b)

 

3) Consideriamo la stringa pompata uv2wx2y
aggiungiamo almeno una c ed al più p  c

uv2wx2y = ar br cr+t con 0<t≤p

uv2wx2y ∉ L perché #(b) ≠ max(#a, #c)

 

4) Per la 2) del Pumping Lemma si distinguono i seguenti casi:

  • 4a) v ≠ ɛ, x ≠ ɛ
  • 4b) v ≠ ɛ, x = ɛ
  • 4c) v = ɛ, x ≠ ɛ

 

4a) v ≠ ɛ, x ≠ ɛ allora v = ak1 con 0<k1≤k e x = by1 con 0<y1≤y
consideriamo la stringa spompata uv0wx0y

uv0wx0y = ar-k1 br-y1 cr

uv0wx0y ∉ L perché #(b) ≠ max(#a, #c)

 

4b) v ≠ ɛ, x = ɛ allora v = ak1 con 0<k1≤k
consideriamo la stringa pompata uv2wx2y

uv2wx2y = ar+k1 br cr

uv2wx2y ∉ L perché #(b) ≠ max(#a, #c)

 

4c) v = ɛ, x ≠ ɛ allora x = by1 con 0<y1≤y
consideriamo la stringa pompata uv2wx2y

uv2wx2y = ar br cr+y1

uv2wx2y ∉ L perché #(b) ≠ max(#a, #c)

 

5) Per la 2) del Pumping Lemma si distinguono i seguenti casi:

  • 5a) v ≠ ɛ, x ≠ ɛ
  • 5b) v ≠ ɛ, x = ɛ
  • 5c) v = ɛ, x ≠ ɛ

 

5a) v ≠ ɛ, x ≠ ɛ allora v = bk1 con 0<k1≤k e x = by1 con 0<y1≤y
consideriamo la stringa spompata uv0wx0y

uv0wx0y = ar br-k1 cr-y1

uv0wx0y ∉ L perché #(b) ≠ max(#a, #b)

 

5b) v ≠ ɛ, x = ɛ allora v = bk1 con 0<k1≤k
consideriamo la stringa pompata uv2wx2y

uv2wx2y = ar br+k1 cr

uv2wx2y ∉ L perché #(b) ≠ max(#a, #c)

 

5c) v = ɛ, x ≠ ɛ allora x = cy1 con 0<y1≤y
consideriamo la stringa pompata uv2wx2y

uv2wx2y = ar br cr+y1

uv2wx2y ∉ L perché #(b) ≠ max(#a, #c)

 

Analizzando tutti i casi la stinga spompata e pompata non appartiene ad L.
Per assurdo ne consegue che L non è libero da contesto.

/ 5
Grazie per aver votato!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *