1. Indica il lemma di pompaggio (con cura!)
Prima di iniziare, è essenziale capire la dichiarazione di Pumping Lemma *esattamente *. Ecco una formulazione comune:
Pumping Lemma per CFLS:
Se l è un linguaggio senza contesto, esiste un intero *p *(la "lunghezza di pompaggio") tale che per qualsiasi stringa *s *in l con lunghezza maggiore o uguale a *p *(| s | ≥ *p *), *s *può essere diviso in cinque substrings:*s =uvxyz *, soddisfacendo le seguenti condizioni:
* | VXY | ≤ * p * (la porzione centrale da pompare non è troppo lunga)
* | Vy | ≥ 1 (la sezione pompata non è vuota)
* Per tutto * i * ≥ 0, * Uv
2. Supponiamo che la lingua * sia * senza contesto
Inizia assumendo, per motivi di contraddizione, che la lingua *l *che vuoi dimostrare è *non *senza contesto *è *, in effetti, senza contesto. Questo è il presupposto iniziale che alla fine smentirai.
3. Lascia * P * la lunghezza di pompaggio
Dato che hai ipotizzato che * l * sia privo di contesto, il lemma di pompaggio * deve * applicare. Ciò significa che esiste una lunghezza di pompaggio * P * (di cui non conosci il valore esatto). È fondamentale ricordare che l'avversario (chissà che la lingua non è *senza contesto e sta cercando di ingannarti) riesce a scegliere *P *. Il tuo obiettivo è trovare una stringa che * non importa quale valore di P * sia scelto, le condizioni del lemma di pompaggio portano a una contraddizione.
4. Scegli una stringa*s*∈*l*tale che |*s*| ≥ *p *
Questo è un passo critico. È necessario selezionare attentamente una stringa *s *che appartiene alla lingua *l *e ha una lunghezza maggiore o uguale a *p *. La scelta di * s * è fondamentale per far funzionare la prova. Pensa alla struttura delle stringhe nella tua lingua e al modo in cui il pompaggio potrebbe influenzare quella struttura. L'obiettivo è quello di scegliere una corda le cui proprietà verranno violate quando "V" e "Y" vengono pompate in un modo dettato dal lemma pompare. Questa scelta *spesso *prevede l'impostazione di alcune parti della stringa in base al valore *P *.
*Pensa alle proprietà che fanno apparire le stringhe nella lingua. Quindi scegli una stringa in modo tale che quando viene pompato una sotto-corda, almeno uno dei vincoli per l'appartenenza alla lingua viene violato.*
5. Prendi in considerazione tutte le possibili decomposizioni * s =uvxyz * soddisfacente | VXY | ≤ * p * e | vy | ≥ 1
Il lemma di pompaggio afferma che*qualsiasi*stringa*s*con |*s*| ≥ * p * può essere diviso in questo modo. Quindi, * il tuo avversario * può scegliere come * s * è diviso in * uvxyz * (soggetto ai vincoli | vxy | ≤ * p * e | vy | ≥ 1). Tuttavia, puoi considerare tutte le possibili divisioni. Devi dimostrare che *non importa come *l'avversario sceglie *u *, *v *, *x *, *y *e *z *, puoi pompare la stringa per ottenere una contraddizione.
Spesso ciò comporta la considerazione di diversi *casi *in base a dove *v *e *y *potrebbero potenzialmente cadere all'interno della stringa *s *. Per ogni caso, analizzerai cosa succede quando pompa *V *e *Y *.
6. Mostralo per alcuni *i *≥ 0, la stringa *uv
Questo è il nucleo della contraddizione. Per ogni caso considerato nel passaggio 5, devi mostrare che esiste un po 'di *i *(di solito *i *=0 o *i *=2, ma a volte sono necessari altri valori) in modo tale che la stringa risultante *uv
* Come mostrare * Uv
* che mostra che la stringa ora ha un numero ineguale di simboli che erano precedentemente uguali. Ad esempio, se * L * richiede lo stesso numero di "A e" B, mostri che il pompaggio fa sì che il conteggio sia disuguale.
* Mostrando che l'ordine dei simboli è ora errato. Ad esempio, se * l * richiede che tutte le "A vengano prima di tutte le B, mostri che il pompaggio può mettere una" b "prima di una" A ".
* Mostrando che una relazione matematica tra i conteggi non vale più. Ad esempio, se * L * richiede che il numero di "A sia il doppio del numero di" B, mostri che il pompaggio viola questa relazione.
7. Concludere che * l * non è * non * senza contesto
Dal momento che hai dimostrato che il presupposto che * l * sia privo di contesto porta a una contraddizione (il lemma di pompaggio deve contenere, ma hai mostrato un caso in cui non lo fa), puoi concludere che la tua ipotesi iniziale era falsa. Pertanto, * L * non è un linguaggio senza contesto.
Esempio:il linguaggio l ={a
Dimostriamo che * l * ={a
1. Supponiamo * l * sia privo di contesto.
2. Let * p * sia la lunghezza di pompaggio Garantito dal lemma di pompaggio.
3. Scegli una stringa *s *: Let*s*=a
4. Considera tutte le possibili divisioni * s =uvxyz * tale che | vxy | ≤ * p * e | vy | ≥ 1: Dobbiamo considerare dove i substrings *v *e *y *possono essere posizionati all'interno di *s *. Il vincolo cruciale è quello | VXY | ≤ *p *. Ciò limita in modo significativo le possibilità:
* Caso 1:* Vxy * consiste solo di 'A. Quindi * v * =a
* Caso 2:* Vxy * consiste solo di 'B's. Quindi * v * =b
* Caso 3:* VXY * consiste solo di 'C. Quindi * v * =c
* Caso 4:* VXY * è costituito da 'A e' B. Dal momento che | VXY | ≤ *P *, non può includere alcun "C perché tutte le *B *P *'A e *P *' B devono precedere qualsiasi C. Dal momento che | Vy | ≥ 1, almeno uno di * v * o * y * deve contenere un carattere. Pertanto * v * =a
Se pompiamo (*i*=2), otteniamo la stringa a
* Caso 5:* Vxy * è costituito da 'B's e' C's. Questo è simmetrico per il caso 4. Ancora una volta, il pompare si tradurrà in una stringa che non si trova nella lingua.
5. Contradicanza: In ogni caso possibile, abbiamo dimostrato che esiste un *i *tale che *uv
6. Conclusione: Pertanto, il nostro presupposto iniziale che * l * sia privo di contesto deve essere falso. Quindi, * l * ={a
Suggerimenti chiave per l'uso del lemma di pompaggio:
* Comprendi precisamente il lemma: Conoscere la dichiarazione e le condizioni esatte.
* Scelta di stringa strategica: La scelta di * s * è cruciale. Scegli una stringa che evidenzia la proprietà che si desidera rompere il pompaggio. Spesso è utile impostare parti della stringa in base a * p *.
* Analisi accurata dei casi: Considera tutte le posizioni possibili per *v *e *y *all'interno di *s *, dati i vincoli | vxy | ≤ * p * e | vy | ≥ 1.
* Scegli il diritto * i *:Sperimenta *i *=0, *i *=2, o altri valori per trovare quello che dimostra chiaramente la violazione di *l *. A volte * i * =0 farà scomparire qualcosa e * i * =2 farà duplicare qualcosa.
* Sii chiaro e rigoroso: Spiega esattamente perché la stringa pompata non è più in *l *. Fare riferimento alle proprietà di definizione della lingua.
Il lemma di pompaggio può essere difficile da padroneggiare. Esercitati con lingue diverse per acquisire esperienza nella scelta delle stringhe appropriate e nella gestione dell'analisi del caso. Ricorda, l'obiettivo è trovare una stringa in cui * qualsiasi * possibile applicazione del lemma di pompaggio porta a una contraddizione. Buona fortuna!
Informazioni correlate
Programmazione © www.354353.com