Come può ws con | w | = | s | e saremo senza contesto mentre w # s non lo è?


9

Perché (in tal caso) il separatore # sta facendo la differenza tra le due lingue?

Diciamo:

L={ws:|w|=|s|w,s{0,1},ws}

L#={w#s:|w|=|s|w,s{0,1},ws}

Ecco una prova e una grammatica che rappresentano L come CFL

E sotto sto aggiungendo una prova per L#CFL :

Il segno # fa davvero la differenza? se è così, perché? e se no, quale delle prove è sbagliata e dove?

Prova che L#CFL :

Si supponga a titolo di contraddizione che LCFL . Sia p>0 la costante di pompaggio per L garantita dal lemma di pompaggio per linguaggi senza contesto. Consideriamo la parola s=0m1p#0p1m dove m=p!+p così sL . Dal |s|>p , secondo il lemma del pompaggio esiste una rappresentazione s=uvxyz , tale che |vy|>0 ,|vxy|p , euvjxyjzL per ognij0 .

Otteniamo una contraddizione dai casi:

  • Se v o y contiene # : Quindi per i=0 , otteniamo che uxz non contiene # , quindi uxzL in contraddizione.
  • Se sia v che y sono lasciati a # : Quindi per i=0 , otteniamo che uxz è della forma w#x , dove |w|<|x|, Così uxzL .

  • Se sia v che y hanno ragione su # : simile all'ultimo caso.

  • Se v è lasciato su # , y ragione su di esso e |v|<|y|: Quindi per i=0 , otteniamo che uxz è nel formato w#x , dove |w|>|x|, Così uxzL .

  • Se v è lasciato su # , y ragione su di esso e |v|>|y|: Simile all'ultimo caso.

  • Se v è lasciato su # , y ragione su di esso e |v|=|y|: Questo è il caso più interessante. Dal |vxy|p , v deve essere contenuto nella parte 1p di s e y nella parte 0p . Quindi sostiene che v=1k e y=0k per lo stesso 1kp (in effetti, deve essere quellok<p/2 ). Per ognij0 , sostiene che uvj+1xyj+1z=0m1p+j·k#0p+j·k1m , quindi se succede chem=p+j·k , quindi sostiene cheuvj+1xyj+1zLin contraddizione. Per raggiungere questo obiettivo, dobbiamo prenderej=(mp)/k, che è valido solo sempè divisibile perk. Ricordiamo che abbiamo sceltom=p+p!, quindimp=p!ep!è divisibile per1kpcome desiderato.

Risposte:


7

La tua prova è corretta e io ho sbagliato. Mi ci è voluto un po 'per capire dove fosse la mia confusione, ma con l'aiuto di Yuval penso di averlo capito.

Consideriamo le tre lingue

L=={xy|x|=|y|,xy},L#={x#yxy}, andL=#={x#y|x|=|y|,xy}.

Come abbiamo visto qui , è privo di contesto. Il trucco è, nella grammatica, generare simboli "a destra" ma contarli "a sinistra" in un secondo momento (o viceversa), assicurandosi che i simboli non corrispondenti appaiano nelle posizioni corrispondenti. La condizione della lunghezza è banale poiché si riduce alla lunghezza uniforme. Puoi costruire un NPDA con un'idea simile, usando lo stack per abbinare la posizione.L=

è anche privo di contesto. La dimostrazione è ancora più semplice: i simboli di disadattamento appaiono alla stessa distanza rispetto all'inizio. il separatore. Le lunghezze diverse possono essere verificate separatamente; il non determinismo "sceglie" tra le due opzioni.L#

L=#

  1. L=
  2. Invece di "accettare se le lunghezze sono ineguali o non corrispondenti" dobbiamo "accettare se le lunghezze sono uguali e non corrispondenti". Il non determinismo non può aiutarci con e !

xy|x|=|y|

L=xy


L=CFLL=#CFLf(L=#)=L=f#f1(L=)=L#L=#


L={x#y|x|=|y|}LL#=L=#

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.