Come dimostrare che una lingua non è senza contesto?


89

Abbiamo imparato a conoscere la classe di linguaggi senza contesto . È caratterizzato sia da grammatiche senza contesto sia da automi pushdown, quindi è facile dimostrare che una determinata lingua è senza contesto.CFL

Come faccio a mostrare il contrario, però? Il mio TA è stato fermamente convinto che, per farlo, dovremmo dimostrare per tutte le grammatiche (o automi) che non possono descrivere la lingua a portata di mano. Sembra un grosso compito!

Ho letto di un lemma del pompaggio ma sembra davvero complicato.


Ntpick: è indecidibile mostrare se una lingua è senza contesto.
reinierpost,

1
@reinierpost Non vedo come il tuo commento si collega alla domanda. Si tratta di provare le cose, non di decidere (algoritmicamente).
Raffaello

Indico solo che non è facile dimostrare che una lingua è senza contesto, in generale . Se è facile per la fragilità, ciò deve essere dovuto a determinate condizioni speciali che non valgono per le lingue in generale, come ad esempio avere un automa pushdown che descrive la lingua.
reinierpost,

@reinierpost Quella linea di ragionamento sembra presumere che indecidibile implica (uguale?) difficile da dimostrare. Mi chiedo se sia vero.
Raffaello

Risposte:


69

Per quanto ne so, il lemma del pompaggio è di gran lunga la tecnica più semplice e più utilizzata. Se lo trovi difficile, prova prima la versione normale , non è poi così male. Esistono altri mezzi per le lingue che sono tutt'altro che liberi dal contesto. Ad esempio, le lingue indecidibili non sono banalmente libere dal contesto.

Detto questo, sono anche interessato ad altre tecniche oltre al lemma di pompaggio, se ce ne sono.

EDIT: Ecco un esempio per il lemma del pompaggio: supponiamo che la lingua sia libera dal contesto ( è l'insieme dei numeri primi). Il lemma del pompaggio ha molti quantificatori , quindi lo renderò un po 'come un gioco:P / L={akkP}P/

  1. Il lemma del pompaggio ti dà unap
  2. Devi dare una parola della lingua di lunghezza almenopsp
  3. Il lemma di pompaggio lo riscrive in questo modo: con alcune condizioni ( e )| v x y | p | v y | 1s=uvxyz|vxy|p|vy|1
  4. Dai un numero interon0
  5. Se non è in , vinci, non è privo di contesto.L LuvnxynzLL

Per questo particolare linguaggio per qualsiasi (con e è un numero primo) farà il trucco. Quindi il lemma di pompaggio ti dà con . Non confutare la mancanza di contesto, devi trovare tale chenon è un numero primo.a k k p k u v x y z | v y | 1 n | u v n x y n z |sakkpkuvxyz|vy|1n|uvnxynz|

|uvnxynz|=|s|+(n1)|vy|=k+(n1)|vy|

E poi farà: non è primo in modo . Il lemma di pompaggio non può essere applicato, quindi non è privo di contesto.k + k | v y | = k ( 1 + | v y | ) u v n x y n z L Ln=k+1k+k|vy|=k(1+|vy|)uvnxynzLL

Un secondo esempio è la lingua . Dobbiamo (ovviamente) scegliere una stringa e dimostrare che non è possibile spezzarla in quelle cinque parti e che ogni stringa pompata derivata rimanga nella lingua.{www{a,b}}

La stringa è una scelta adatta per questa dimostrazione. Ora non ci resta che guardare dove e possono essere. Le parti chiave sono che o deve contenere qualcosa (forse entrambi) e che sia che (e ) sono contenuti in una sottostringa lunghezza , quindi non possono essere troppo distanti. v y v y v y x ps=apbpapbpvyvyvyxp

Questa stringa ha una serie di possibilità per dove e potrebbero essere, ma si scopre che molti dei casi sembrano effettivamente abbastanza simili.yvy

  1. v y b a b | v y | = k pvya o . Quindi entrambi sono contenuti in una delle sezioni di contintous s o s. Questo è il caso relativamente facile da discutere, dato che non importa in che cosa si trovano. Supponiamo che . vybab|vy|=kp
    • Se sono nella prima sezione di s, quindi quando pompiamo, la prima metà della nuova stringa è e la seconda è . Ovviamente questo non è nella forma .a p + k b p - k / 2 b k / 2 a p b p w waap+kbpk/2bk/2apbpww
    • L'argomento di una qualsiasi delle altre tre sezioni funziona praticamente allo stesso modo, è proprio dove e finiscono negli indici.k / 2kk/2
  2. vxy cavallo di due sezioni. In questo caso il pumping down è tuo amico. Ancora una volta ci sono diversi posti in cui ciò può accadere (3 per l'esattezza), ma ne farò solo uno illustrativo, e il resto dovrebbe essere facile da capire da lì.
    • Si supponga che cavallo tra la prima sezione e la prima sezione. Lasciate (non importa esattamente dove i s e s sono in e , ma sappiamo che sono in ordine). Quindi quando eseguiamo il pump down (ovvero il caso ), otteniamo la nuova stringa , ma poi se potrebbe essere diviso in , il punto medio deve essere da qualche parte nel secondo sezione, in modo che il primo tempo èa b v y = a k 1 b k 2 a b v y i = 0 s = a p - k 1 b p - k 2 a p b p s w w a a p - k 1 b p - k 2 a ( k 1 + k 2 )vxyabvy=ak1bk2abvyi=0s=apk1bpk2apbpswwa a p - ( k 1 + k 2 ) / 2 b p vyapk1bpk2a(k1+k2)/2e la seconda metà è . Chiaramente questi non sono la stessa stringa, quindi non può mettere e lì.ap(k1+k2)/2bpvy

I casi rimanenti dovrebbero essere abbastanza trasparenti da lì - sono le stesse idee, mettendo solo e negli altri 3 punti nel primo caso e 2 punti nel secondo caso. In tutti i casi, tuttavia, è possibile pomparlo in modo tale che l'ordinamento sia chiaramente incasinato quando si divide la stringa a metà.yvy


in effetti, il gioco di Kozen è la strada da percorrere.
Socrate il

45

Lemma di Ogden

Lemma (Ogden). Sia un linguaggio privo di contesto. Quindi c'è una costante tale che per ogni e qualsiasi modo di contrassegnare o più posizioni (simboli) di come "posizioni distinte", allora può essere scritto come , tale cheN z L N z z z = u v w x yLNzL Nzzz=uvwxy

  1. vx ha almeno una posizione distinta.
  2. Nvwx ha al massimo posizioni distinte.N
  3. Per tutti , .u v i w x i y Li0uviwxiyL

Esempio. Sia . Supponiamo che sia privo di contesto e che sia la costante data dal lemma di Ogden. Sia (Che appartiene a ), e supponiamo di contrassegnare come distinte tutte le posizioni del simbolo (cioè le prime posizioni di ) . Sia una decomposizione di soddisfi le condizioni del lemma di Ogden.L N z = a N b N + N ! c N + 2 N ! L a N z z = u v w x y zL={aibjck:ij,jk,ik}LNz=aNbN+N!cN+2N!LaNzz=uvwxyz

  • Se o contengono simboli diversi, allora , perché ci saranno simboli nell'ordine sbagliato.x u v 2 w x 2 y Lvxuv2wx2yL
  • Almeno uno di e devono contenere solo simboli , perché solo i s' sono stati distinti. Pertanto, se o , quindi . Sia. Quindi , il che significa che divide. Lasciate . Poi deve appartenere . Tuttavia, . Poiché ha esattamente i simboli , quindix a a x L ( b ) x L ( c ) v L ( A + ) p = | v |vxaaxL(b)xL(c)vL(A+)p=|v|p N ! q = N ! / p z = u v 2 q + 1 w x 2 q + 1 y L1pNpN!q=N!/pz=uv2q+1wx2q+1yL u w y N - p a z 2 N ! + N a v x c z 2 N ! + N c z L x L ( A + ) x L ( cv2q+1=a2pq+p=a2N!+puwyNpazha simboli . Ma sia che non hanno 's, quindi ha anche simboli , che significa , e questo contraddice il lemma di Ogden. Una contraddizione simile si verifica se o . Concludiamo che non è privo di contesto.2N!+Navxcz2N!+NczLxL(A+)LxL(c)L

Esercizio. Usando il Lemma di Ogden, mostra che non è privo di contesto.L={aibjckd:i=0 or j=k=}

Pompaggio di Lemma

Questo è un caso particolare del Lemma di Ogden in cui si distinguono tutte le posizioni.

Lemma. Sia un linguaggio privo di contesto. Quindi c'è una costante tale che per ogni , può essere scritto come , tale cheN z L z z = u v w x yLNzLzz=uvwxy

  1. |vx|>0 .
  2. |vwx|N .
  3. Per tutti , .u v i w x i y Li0uviwxiyL

Teorema di Parikh

Questo è ancora più tecnico del Lemma di Ogden.

Definizione. Let . Definiamo da dove è il numero di aspetti di in .Ψ Σ : Σ N n Ψ Σ ( w ) = ( m 1 , , m n ) , m i a i wΣ={a1,,an}ΨΣ:ΣNn

ΨΣ(w)=(m1,,mn),
miaiw

Definizione. Un sottoinsieme di viene chiamato lineare se può essere scritto: SNn

S={u0+1ikaiui: for some set of uiNn and aiN}

Definizione. Un sottoinsieme di è chiamato semi-lineare se è l'unione di una raccolta finita di insiemi lineari.SNn

Teorema (Parikh). Sia un linguaggio su . Se è privo di contesto, allora è semi-lineare.LΣL

ΨΣ[L]={ΨΣ(w):wL}

Esercizio. Usando il Teorema di Parikh, mostra che non è privo di contesto.L={0m1n:m>n or (m is prime and mn)}

Esercizio. Usando il Teorema di Parikh, mostra che qualsiasi linguaggio privo di contesto su un alfabeto unario è anche regolare.


1
Ho accettato la risposta di jmad perché la domanda menziona esplicitamente Pumping Lemma. Apprezzo molto la tua risposta, comunque; avere tutti i principali metodi raccolti qui è un'ottima cosa.
Raffaello

1
Va bene, ma nota che il lemma di pompaggio è un caso particolare del lemma di Ogden ;-)
Janoma

Ovviamente. Tuttavia, la maggior parte delle persone proverà prima PL; molti non conoscono nemmeno OL.
Raffaello

1
Un teorema di Ginsburg e Spanier, basato sul teorema di Parikh, fornisce una condizione necessaria e sufficiente per la mancanza di contesto nel caso limitato. math.stackexchange.com/a/122472
sdcvvc,

Puoi definire "posizioni distinte" in termini di altre operazioni? O almeno in modo informale? Trovo la definizione di OL copiata alla lettera in molti luoghi diversi, ma finora nessuno di loro ha voluto spiegare cosa significhi.
wvxvw,

34

Proprietà di chiusura

Una volta che hai una piccola raccolta di linguaggi senza contesto, puoi spesso usare le proprietà di chiusura di questo modo:CFL

Assumi . Quindi, chiudendo la proprietà X (insieme a Y), . Questo contraddice che sappiamo detenere, quindi .LCFLLCFLLCFLLCFL

Questo è spesso più breve (e spesso meno soggetto a errori) rispetto all'utilizzo di uno degli altri risultati che utilizzano meno conoscenze precedenti. È anche un concetto generale che può essere applicato a tutti i tipi di classe di oggetti.

Esempio 1: intersezione con lingue regolari

Notiamo il linguaggio regolare specificato da qualsiasi espressione regolare .L(e)e

Sia . ComeL={ww{a,b,c},|w|a=|w|b=|w|c}

LL(abc)={anbncnnN}CFL

e è chiuso all'intersezione con linguaggi regolari, .CFLLCFL

Esempio 2: omomorfismo (inverso)

Sia . Con l'omomorfismoL={(ab)2ncmd2nm(aba)nm,nN}

ϕ(x)={ax=aεx=bbx=cx=d

abbiamoϕ(L)={a2nb2na2nnN}.

Adesso con

ψ(x)={aax=ax=cbbx=bandL1={xnbnynx,y{a,c}nN},

otteniamo .L1=ψ1(ϕ(L)))

Infine, intersecando con la lingua normale otteniamo la lingua .L1L2=L(abc)L3={anbncnnN}

In totale, abbiamo .L3=L2ψ1(ϕ(L))

Ora supponiamo che fosse privo di contesto. Quindi, poiché è chiuso contro omomorfismo, omomorfismo inverso e intersezione con insiemi regolari, anche è contesto. Ma sappiamo (tramite Pumping Lemma, se necessario) che non è contesto, quindi questa è una contraddizione; abbiamo dimostrato che .LCFLL3L3LCFL


Interscambio Lemma

L'Interchange Lemma [1] propone una condizione necessaria per il contesto-freeness che è ancora più forte lemma di Ogden . Ad esempio, può essere usato per dimostrarlo

{xyyzx,y,z{a,b,c}+}CFL

che resiste a molti altri metodi. Questo è il lemma:

Lascia . Quindi c'è una costante tale che per ogni numero intero , qualsiasi insieme e qualsiasi numero intero con ci sono stringhe conLCFLcLn2QnLn=LΣnmnm2k|Qn|cLn2ziQn

  1. zi=wixiyi per ,i=1,,k
  2. |w1|=|w2|==|wk|,
  3. |y1|=|y2|==|yk|,
  4. m|x1|=|x2|==|xk|>m2 e
  5. wixjyiLn per tutti .(i,j)[1..k]2

Applicarlo significa trovare e tali che 1.-4. tenere premuto ma 5. viene violato. L'esempio di applicazione fornito nel documento originale è molto dettagliato ed è quindi lasciato fuori di qui.Q nn,mQn

Al momento, non ho un riferimento liberamente disponibile e la formulazione sopra è presa da una prestampa di [1] del 1981. Apprezzo l'aiuto nel rintracciare riferimenti migliori. Sembra che la stessa proprietà sia stata (ri) scoperta di recente [2].


Altre condizioni necessarie

Boonyavatana e Slutzki [3] osservano diverse condizioni simili a Pumping e Interchange Lemma.


  1. Un "Interchange Lemma" per linguaggi senza contesto di W. Ogden, RJ Ross e K. Winklmann (1985)
  2. Scambio di Lemmi con lingue regolari e senza contesto di T. Yamakami (2008)
  3. Lemmi di interscambio o pump (DI) per linguaggi senza contesto di R. Boonyavatana e G. Slutzki (1988)


19

Non esiste un metodo generale poiché le lingue senza contesto libero impostate non sono semi-decidibili (akare). Se esistesse un metodo generale, potremmo usarlo per semidecidere questo set.

La situazione è ancora peggiore, dato che dati due CFL non è possibile decidere se la loro intersezione sia anche un CFL.

Riferimento: Hopcroft e Ullman, "Introduzione alla teoria, le lingue e il calcolo degli automi", 1979.


2
Una domanda interessante (ma probabilmente più avanzata e aperta) sarebbe classificare la sottoclasse di non-CFL che può essere dimostrata non-CFL usando un metodo particolare.
Kaveh,

Non sto cercando un metodo calcolabile ma tecniche di prova di carta e penna. Il secondo non implica necessariamente il primo.
Raffaello

13

Una versione più forte delle condizioni di Ogden ( OC ) è la

Bader-Moura's condition (BMC)

Un linguaggio soddisfa BMC se esiste una costante tale che se ed etichettiamo in esso posizioni "distinte" ed "escluse", con , quindi possiamo scrivere tale che:LΣnzLd(z)e(z)d(z)>ne(z)+1z=uvwxy

  1. e ( v x ) = 0d(vx)1 ede(vx)=0
  2. d(vwx)ne(vwx)+1 e
  3. per ogni , è in .u v i w x i y Li0uviwxiyL

Diciamo che un linguaggio se soddisfa le condizioni di Bader-Moura.LLBMC(Σ)L

Abbiamo , quindi BMC è strettamente più forte di OC.CFL(Σ)BMC(Σ)OC(Σ)

Riferimento: Bader, C., Moura, A., Una generalizzazione del Lemma di Ogden. JACM 29, n. 2, (1982), 404–407


2
Perché non andare fino in fondo alla generalizzazione di Dömösi e Kudlek dx.doi.org/10.1007/3-540-48321-7_18 ...
András Salamon,

@ AndrásSalamon: non lo sapevo! :-) ... forse puoi pubblicarlo come una nuova risposta dicendo che OC, BMC, PC ne sono casi speciali (tutte posizioni distinte o non escluse).
Vor

siete invitati a pubblicarlo, non ho tempo adesso.
András Salamon,

Questa risposta trarrebbe profitto da un esempio.
Raffaello
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.