¿Cómo puede ws con | w | = | s | y w be s estará libre de contexto mientras que w # s no lo está?


9

¿Por qué (si es así) el separador # está haciendo una diferencia entre los dos idiomas?

Digamos:

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

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

Aquí hay una prueba y una gramática que representa L como CFL

Y debajo estoy agregando una prueba para L#CFL :

¿El signo # realmente hace la diferencia? Si es así, ¿por qué es eso? y si no, ¿cuál de las pruebas está mal y dónde?

La prueba de que L#CFL :

Supongamos a modo de contradicción que LCFL . Sea p>0 la constante de bombeo para L garantizada por el lema de bombeo para lenguajes sin contexto. Consideramos la palabra s=0m1p#0p1m donde m=p!+p tan sL . Desde |s|>p , según el lema de bombeo existe una representación s=uvxyz , de modo que |vy|>0 ,|vxy|p , yuvjxyjzL para cadaj0 .

Tenemos una contradicción por casos:

  • Si v o y contienen # : Entonces para i=0 , obtenemos que uxz no contiene # , entonces uxzL en contradicción.
  • Si tanto v como y se dejan en # : Entonces para i=0 , obtenemos que uxz tiene la forma w#x , donde |w|<|x|, Por lo uxzL .

  • Si tanto v como y son correctos para # : similar al último caso.

  • Si v se deja en # , y tiene razón, y |v|<|y|: Entonces para i=0 , obtenemos que uxz tiene la forma w#x , donde |w|>|x|, Por lo uxzL .

  • Si v se deja en # , y tiene razón, y |v|>|y|: Similar al último caso.

  • Si v se deja en # , y tiene razón, y |v|=|y|: Este es el caso más interesante. Desde |vxy|p , v debe estar contenido en la parte 1p de s , e y en la parte 0p . Entonces sostiene que v=1k y y=0k para el mismo 1kp (de hecho, debe ser quek<p/2 ). Para cadaj0 , se sostiene que uvj+1xyj+1z=0m1p+j·k#0p+j·k1m , entonces si sucede quem=p+j·k , entonces sostiene queuvj+1xyj+1zLen contradicción. Para lograr esto, debemos tomarj=(mp)/k, que es válido solo simpes divisible pork. Recuerde que elegimosm=p+p!, entoncesmp=p!yp!es divisible por cualquier1kpsegún se desee.

Respuestas:


7

Su prueba es correcta y me equivoqué. Me tomó un tiempo determinar dónde estaba mi confusión, pero con la ayuda de Yuval creo que lo entendí.

Consideremos los tres idiomas.

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

Como hemos visto aquí , tiene contexto. El truco es, en la gramática, generar símbolos "a la derecha" pero contarlos "a la izquierda" más tarde (o al revés), asegurándose de que aparezcan símbolos que no coinciden en las posiciones coincidentes. La condición de longitud es trivial, ya que se reduce a una longitud uniforme. Puede construir un NPDA con una idea similar, utilizando la pila para que coincida con la posición.L=

también está libre de contexto. La prueba es aún más simple: los símbolos que no coinciden aparecen a la misma distancia desde el principio resp. El separador. Longitudes desiguales se pueden verificar por separado; el no determinismo "elige" entre las dos opciones.L#

L=#

  1. L=
  2. En lugar de "aceptar si las longitudes son desiguales o no coinciden", tenemos que "aceptar si las longitudes son iguales y no coinciden". El no determinismo no puede ayudarnos con el y !

xy|x|=|y|

L=xy


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


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.