¿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}∗,w≠s}

L#={w#s:|w|=|s|w,s∈{0,1}∗,w≠s}

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 L∈CFL . 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 s∈L . Desde |s|>p , según el lema de bombeo existe una representación s=uvxyz , de modo que |vy|>0 ,|vxy|≤p , yuvjxyjz∈L para cadaj≥0 .

Tenemos una contradicción por casos:

  • Si v o y contienen # : Entonces para i=0 , obtenemos que uxz no contiene # , entonces uxz∉L 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 uxz∉L .

  • 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 uxz∉L .

  • 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 1≤k≤p (de hecho, debe ser quek<p/2 ). Para cadaj≥0 , se sostiene que uvj+1xyj+1z=0m1p+j·k#0p+j·k1m , entonces si sucede quem=p+j·k , entonces sostiene queuvj+1xyj+1z∉Len contradicción. Para lograr esto, debemos tomarj=(m−p)/k, que es válido solo sim−pes divisible pork. Recuerde que elegimosm=p+p!, entoncesm−p=p!yp!es divisible por cualquier1≤k≤psegú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|,x≠y},L#={x#y∣x≠y}, andL=#={x#y∣|x|=|y|,x≠y}.

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 !

x≠y|x|=|y|

L=xy


L=∈CFL⟹L=#∈CFLf(L=#)=L=f#f−1(L=)=L#L=#


L={x#y∣|x|=|y|}L∩L#=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.