¿Es el lenguaje de pares de palabras de igual longitud cuya distancia de hamming es 2 o mayor libre de contexto?


26

¿El siguiente contexto de lenguaje es gratuito?

L={uxvyu,v,x,y{0,1}+,|u|=|v|,uv,|x|=|y|,xy}

Como señaló sdcvvc, una palabra en este lenguaje también se puede describir como la concatenación de dos palabras de la misma longitud cuya distancia de hamming es 2 o mayor.

Creo que no está libre de contexto, pero me cuesta probarlo. Traté de intersectar este idioma con un lenguaje normal (como por ejemplo), luego uso el lema de bombeo y \ u homomorfismos, pero siempre obtengo un lenguaje que es demasiado complicado para caracterizar y escribir abajo. 0101


¿Intentaste bombear la cadena ? 0u1x1u0x
Pål GD

Sí, pero no pude sacar esta cadena del idioma (no significa que no sea posible, solo que no pude hacerlo).
Robert777

1
@ PålGD, probablemente necesite una forma de "marcar" las piezas, como1u01x01u01x0
vonbrand

8
Este lenguaje se puede escribir como donde es la distancia de Hamming. Tenga en cuenta que si reemplazamos 2 por 1, no tiene contexto ( cs.stackexchange.com/questions/307 ) pero el truco utilizado allí no funcionará. Personalmente apuesto a que no es un contexto libre. {uv:|u|=|v|,d(u,v)2}d
sdcvvc

1
@sdcvvc: Tienes razón, una divide la en para que uno de los bits diferentes esté en y el otro en . Estoy corregido. uuxux
András Salamon

Respuestas:


7

Nota [2019-07-30] La prueba es incorrecta ... la pregunta es más complicada de lo que parece.

Después de un intento fallido aquí es otra idea.

Si intersectamos con el lenguaje regular obtenemos un lenguaje CF.LLreg=0101010

Quizás podamos tener más suerte si usamos (una cadena con exactamente 4 1s).Lreg=010101010

Deje , informalmente si se puede dividir en dos mitades, de modo que la mitad contenga exactamente o ambas mitades contengan dos s pero sus posiciones no coinciden.L1=LLregwL1{0,1,3,4} 1s1

Suponga que es CF y deje que sea ​​su gramática en forma normal de Chomsky, y deje queL1G

w=uv=0a10b10c10d10eL1

Tenemos(longitud par)|u|=|v|d(u,v)2

Si restringimos nuestra atención a las formas en que se pueden generar los cuatro 1s de , tenemos los tres casos que se muestran en la parte superior de la figura 1. La parte central de la figura 1 muestra el primer caso (pero los otros son similares) .w

ingrese la descripción de la imagen aquí
Figura 1 (la imagen completa se puede descargar aquí )

Si seleccionamos y vemos que los ceros entre los dos pares de 1s deben ser bombeables independientemente (nodos rojos en la figura): en particular, para suficientemente grande , obtenemos un nodo no terminal duplicado en un subárbol interno (nodo X en la figura 2) o una subsecuencia repetida en el camino hacia el primero o el segundo 1 (nodo Y en la figura 2). Tenga en cuenta que la Figura 2 está un poco simplificada: puede haber más nodos no terminales entre las dos s, y también entre las dos ( pero con que produce solo 0s a la derecha del primer 1).a=e,c=2ab,dabaXYsY...Zi...YZi

ingrese la descripción de la imagen aquí
Figura 2

Entonces podemos arreglar un arbitrario , luego elegir lo suficientemente grande para obtener un nodo bombeable independientemente en la secuencia de ceros entre el primer y el segundo . Para la secuencia de ceros entre el tercero y el cuarto 1, podemos elegir . Pero es independientemente bombeable, por lo que hay una subcadena bombeable , es decir, tal que y . La cadena que obtenemos es:a=e=k,c=2ab1d=b!+b0 b p b
0bpbyb=xyz,|y|=p,|x|0,|z|0xyiz=b!+b

w=0k10b!+b102k10b!+b10k

pero . Por tanto, no es CF y finalmente no es CF.wL1L1L

Si la prueba es correcta (???) se puede extender a todos los idiomasLk={uv:|u|=|v|,d(u,v)k},k2


Me temo que la recompensa expirará antes de que podamos verificar esta prueba, por lo que, a menos que surja información drástica en las próximas 4 horas, obtendrá los puntos por ser el mejor intento hasta ahora.
jmite

@jmite: no te preocupes, hay muchas posibilidades de que sea un intento incorrecto como el anterior (que duró aproximadamente 30 minutos antes de descubrir un error trivial) :-) :-)
Vor

¿Por qué la distinción de caso? Las ramas en la gramática no tienen relación con las mitades de la palabra. Pero creo que no importa; Si la prueba funciona, esta distinción de caso no es necesaria. Mirar una gramática supuesta y usar la prueba del lema de Pumping en lugar del lema en sí es un buen truco (uno debería hacer esto con más frecuencia). Tengo una preocupación (real): si bombea una subcadena de , obtendrá ; ¡No veo cómo llegas a. No piense que eso debería dañar la prueba, pero mejor verifique. Además, es posible que desee enderezar alguna notación (y errores tipográficos). 0 b + p ( i - 1 ) b + b !0b0b+p(i1)b+b!
Raphael

1
@Raphael: gracias por los comentarios. Tal vez me equivoque, pero si eliges como longitud objetivoentonces, para cada longitud de bombeo , la cadena se puede descomponer en y se puede bombear a, de hecho, en su ejemplo p seguramente divide, entonces hay un para el cual, pero la longitud de la cadena original es , por lo que la longitud total bombeada es. Lo recuerdo de un par de ejercicios que usan el lema de Ogden ... ahora los revisaré dos veces. p 0 b 0 x y z , ( | x y z | = b , | y | = p b )b+b!p0b0xyz,(|xyz|=b,|y|=pb)b ! ( i - 1 ) p ( i - 1 ) = b ! b | x y ( i -xyiz=b+b!b!(i1)p(i1)=b!b|xy(i1)z|=b+b!
Vor

@Raphael: ... No encontré la prueba en ninguna parte, sino solo un artículo de Zach Tomaszewski que demuestra que el complemento de es CF (ver pregunta ), así que tal vez sea un nuevo resultado (aunque simple); y se puede derivar un teorema de estilo de bombeo-lema para idiomas con cadenas que contienen un número finito de un símbolo particular y subcadenas de longitud arbitraria entre ellas. Ldup={ww}
Vor

2

Después de 2 intentos fallidos, que fueron desmentidos por @Hendrik Jan (gracias), aquí hay otro, que no tiene más éxito. @Vor encontró un ejemplo de un lenguaje CF determinista donde se aplicaría la misma construcción, si es correcto. Esto permitió identificar un error en el anclaje de la cadena en la aplicación del lema. El lema en sí no parece tener la culpa. Esta es claramente una construcción demasiado simplista. Ver más detalles en los comentarios.y


El lenguaje no está libre de contexto.L={uxvyu,v,x,y{0,1}{ϵ} , u∣=∣v , uv , x∣=∣y , xy }

Es útil tener en cuenta la caracterización donde d es la distancia de Hamming, propuesta por @sdcvvc. Lo que hay que pensar son 2 posiciones seleccionadas en cada media cadena de manera que los símbolos correspondientes difieran.L={uv:|u|=|v|,d(u,v)2}

Luego considera una cadena tal que e es par. Está claramente en el lenguaje L, cortando y cualquier lugar entre los dos 1. Queremos bombear esa cadena en la primera parte entre los 1, para que se convierta en que se supone que no está en el idioma. i < j i + j u x 10 j 10 j10i10ji<ji+jux10j10j

Primero intentamos usar el lema de Ogden , que es como el lema de bombeo, pero se aplica a o más símbolos distinguidos que están marcados en la cadena, siendo la longitud de bombeo de los símbolos marcados (pero el lema puede bombear más porque también puede bombear símbolos sin marcar). El bombeo de longitud marcada depende solo del idioma. Este intento fallará, pero el fracaso será una pista.p pppp

Entonces podemos elegir y marcamos símbolos en la primera secuencia de 0's. Sabemos que ninguno de los dos 1 estará en la bomba, porque puede bombear una vez (exponente 0) en lugar de bombear. Y bombear los 1 nos sacaría del lenguaje.ii=pi

Sin embargo, podríamos estar bombeando en ambos lados del segundo 1 tan rápido o incluso más rápido en el lado derecho, para que el segundo 1 nunca llegue al centro de la cadena. Además, el lema de Ogden no fija un límite superior para el tamaño de lo que se bombea, por lo que no es posible organizar el bombeo para obtener el 1 más a la derecha exactamente en el medio de la cadena.

Usamos una versión modificada del lema, aquí llamada Lema de Nash, que puede manejar estas dificultades.

Primero necesitamos una definición (probablemente tenga otro nombre en la literatura, pero no sé cuál, la ayuda es bienvenida). Se dice que una cadena es un borrado de una cadena si se obtiene de borrando símbolos en . Notaremos .v v v u vuvvvuv

Lema de Nash: si es un lenguaje libre de contexto, entonces existen dos números y modo que para cualquier cadena de longitud al menos en , y cada forma de "marcar" o más de las posiciones en , se pueden escribir como con la cadena , , , , , de modo quep > 0 q > 0 w p LLp>0q>0wpLw w w = u x y z v u x y z vpwww=uxyzvuxyzv

  1. xz tiene al menos una posición marcada,
  2. pxyz tiene como máximo posiciones marcadas, yp
  3. hay 3 cadenas , , modo que y zx^y^z^
    1. yy zzx^x , , ,y^yz^z
    2. 1 | y | q1≤∣x^z^∣≤q , , y1≤∣y^∣≤q
    3. Li0j0uxjx^iy^z^izjv está en para cada y para cada .Li0j0

Prueba : Similar a la prueba del lema de Ogden, pero los subárboles correspondientes a las cadenas y se podan para que no contengan ninguna ruta con el doble de no terminales (excepto las raíces de estos dos subárboles). Esto necesariamente limita el tamaño de las cadenas generadas y por una constante . Las cadenas y , para , correspondientes a una versión no podada del árbol, se usan principalmente con para simplificar la contabilidad cuando se aplica el lema.x z x zyxzx^z^ qxjzjj0j=1y^qxjzjj0j=1

Modificamos el intento de la prueba anterior, marcando el más a la izquierda símbolos 0, pero son seguidos por símbolos 0 para asegurarse de que bombeamos en la parte izquierda de la cadena, entre los dos 1s. Eso hace un total de 0 entre los 1 (en realidad sería suficiente, ya que el 1 más a la derecha no puede estar en , lo que permitiría simplemente eliminarlo).2 q i = p + 2 q i = p + q zp2qi=p+2qi=p+qz^

Lo que queda es elegir para que podamos bombear exactamente el número correcto de 0 para que las dos secuencias sean iguales. Pero hasta ahora, la única restricción en es ser mayor que . Y también sabemos que el número de 0 que se bombea en cada bombeo está entre 1 y q. Así que sea ​​producto de los primeros enteros. Elegimos .j i h q j = i + hjjihqj=i+h

Por lo tanto, dado que el incremento de bombeo , sea lo que sea, está en , divide . Deje ser el cociente. Si bombeamos exactamente veces, obtenemos una cadena que no está en el idioma. Por lo tanto, L no está libre de contexto.[ 1 , q ] h k k 10 j 10 jd[1,q]hkk10j10j

.

Creo que nunca veré
una cadena encantadora como un árbol.
Porque si no tiene un análisis,
la cadena no es más que una farsa


Sin embargo, tenga en cuenta que el pase sobre la segunda mitad lee la pila a la inversa. Eso parece significar que las dos posiciones están en la misma posición en ambas mitades, pero a la inversa.
Hendrik Jan

tienes razón ... me hice la tonta ... ahora sé lo que me molestaba en la parte posterior de mi cabeza.
babou

Reconocí el argumento (porque no pude hacerlo funcionar cuando lo intenté yo mismo).
Hendrik Jan

¿Debo dejar esta respuesta incorrecta? Creo que de alguna manera ayuda, ya que hace que el problema sea sospechosamente similar a . El problema es que las reglas del sitio no tienen la intención de alentar resultados incorrectos para la discusión (es decir, no disfruto de los votos negativos más que nadie). aibjckaibjck
babou

@HendrikJan ¿Lo hice otra vez? (Por cierto, gracias por hacer una discusión)
babou

-1

por esta pregunta, creo que tiene contexto y está generado por la siguiente gramática LSAXBYBYAXA00A00A11A01A1B10B00B11B01B1X00X00X11X01X1Y10Y00Y11Y01Y1


44
Esto es incorrecto; no puede proteger que la longitud de AX sea la misma que BY. Por ejemplo, su gramática genera S -> AXBY -> A011 -> 0A1011 -> 001011 que no está en el idioma original. Además, sus símbolos A y X generan el mismo lenguaje, lo mismo para B e Y; Se pueden fusionar.
sdcvvc
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.