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={uxvy∣u,v,x,y∈{0,1}∗{ϵ} , ∣u∣=∣v∣ , u≠v , ∣x∣=∣y∣ , x≠y }
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 ≺ vuvvvu≺v
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
- xz tiene al menos una posición marcada,
- pxyz tiene como máximo posiciones marcadas, yp
- hay 3 cadenas , , modo que
y zx^y^z^
- y ≺y z ≺zx^≺x , , ,y^≺yz^≺z
- 1 ≤ | y | ≤ q1≤∣x^z^∣≤q , , y1≤∣y^∣≤q
- Li≥0j≥0uxjx^iy^z^izjv está en para cada y para cada .Li≥0j≥0
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^ qxjzjj≥0j=1y^qxjzjj≥0j=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