Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> Programmazione >> Computer Programming Languages >> .

Come si può dimostrare che una lingua non è senza contesto?

Esistono diversi modi per dimostrare che una lingua non è senza contesto. I metodi più comuni si basano sulla prova della lingua viola le proprietà inerenti alle lingue senza contesto (CFL):

1. Pompare lemma per lingue senza contesto: Questa è la tecnica più utilizzata. Il lemma di pompaggio afferma che per qualsiasi cfl L, esiste una costante * P * (la lunghezza di pompaggio) tale che qualsiasi stringa * w * in l con lunghezza | w | ≥ *p *può essere scritto come *uvxyz *, dove:

* | VXY | ≤ *p *

* | Vy | ≥ 1

* * Uv i xy i z* ∈ L per tutti* i* ≥ 0

Per dimostrare che una lingua non è * senza contesto usando il lemma di pompaggio:

1. Supponi: Supponiamo, per motivi di contraddizione, che la lingua * l * sia priva di contesto.

2. Scegli una stringa: Seleziona una stringa *w *in *l *con lunghezza almeno la lunghezza di pompaggio *p *(spesso dovrai scegliere strategicamente *w *).

3. Pump la stringa: Prova a decomporre * w * in * uvxyz * Soddisfare le condizioni del lemma.

4. Trova una contraddizione: Mostralo per alcuni *i *, *uv i xy i z*non*non*in*l*. Ciò contraddice il lemma di pompaggio, dimostrando che l'assunzione originale (che * l * è priva di contesto) deve essere falso.

Esempio: Consideriamo la lingua l ={a n B n C n | n ≥ 0}. Usando il lemma di pompaggio:

1. Supponi: L è senza contesto.

2. Scegli una stringa: Let * w * =a p B p C p (dove * p * è la lunghezza di pompaggio).

3. Pump la stringa: Non importa come decomporre *w *in *uvxyz *, il pompaggio violarà inevitabilmente l'A n B n C n struttura. Ad esempio, se * VXY * contiene solo "A, il pompaggio aumenterà il numero di" A senza aumentare il numero di "B e" C. Problemi simili sorgono se * vxy * contiene solo "B o" o una miscela che non mantiene il rapporto uguale.

4. Contraduzione: Pertanto, esiste un *i *tale che *uv i xy i Z* ∉ L, contraddicendo il lemma di pompaggio. Pertanto, L non è senza contesto.

2. Proprietà di chiusura: Le lingue senza contesto sono chiuse sotto determinate operazioni (Union, Concatenation, Kleene Star, Intersection con una lingua normale). Se puoi dimostrare che una lingua * non * chiusa sotto una di queste operazioni, non può essere senza contesto. Questo metodo è meno frequentemente utilizzato per la prova diretta rispetto al lemma di pompaggio ma può essere utile in combinazione con altre tecniche.

3. Lemma di Ogden: Questa è una versione più potente del lemma di pompaggio, che consente di scegliere posizioni contrassegnate all'interno della stringa *w *. È utile per le lingue in cui è difficile applicare il semplice lemma di pompaggio.

4. Teorema di Parikh: Questo teorema si riferisce al numero di occorrenze di ciascun simbolo nelle stringhe di un linguaggio. Sebbene non sia usato direttamente per dimostrare una lingua * non è * senza contesto, a volte può aiutare a dimostrare che la struttura di una lingua è incompatibile con i vincoli imposti dai CFL. È spesso usato insieme ad altre tecniche.

In sintesi, il lemma di pompaggio è il metodo più comune e generalmente efficace per dimostrare una lingua non è privo di contesto. Tuttavia, la scelta del metodo dipende dalla struttura del linguaggio specifico e dalla facilità con cui ogni tecnica può essere applicata. Il Lemma di Ogden offre più energia quando necessario e le proprietà di chiusura possono fornire prove supplementari.

 

Programmazione © www.354353.com