Pumping Lemma per CFG

Lemma

Se L è un linguaggio privo di contesto, c'è una lunghezza di pompaggio p tale che qualsiasi stringa w ∈ L di lunghezza ≥ p può essere scritto come w = uvxyz, dove vy ≠ ε, |vxy| ≤ pe per tutti i ≥ 0, uvixyiz ∈ L.

Applicazioni del Pumping Lemma

Il pompaggio del lemma viene utilizzato per verificare se una grammatica è libera dal contesto o meno. Facciamo un esempio e mostriamo come viene controllato.

Problema

Scopri se la lingua L = {xnynzn | n ≥ 1} è contestuale o meno.

Soluzione

Permettere Lè privo di contesto. Poi,L deve soddisfare il pumping lemma.

All'inizio, scegli un numero ndel lemma pompante. Quindi, prendi z come 0 n 1 n 2 n .

Rompere z in uvwxy, dove

|vwx| ≤ n and vx ≠ ε.

Quindi vwxnon può coinvolgere sia 0 che 2, poiché l'ultimo 0 e il primo 2 sono almeno (n + 1) posizioni separate. Ci sono due casi:

Case 1 - vwxnon ha 2s. Poivxha solo 0 e 1. Poiuwy, che dovrebbe essere in L, ha n 2s, ma meno di n 0 o 1.

Case 2 - vwx non ha 0.

Qui si verifica una contraddizione.

Quindi, L non è una lingua priva di contesto.