¿El siguiente contexto de lenguaje es gratuito?
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.
Respuestas:
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.L Lreg=0∗10∗10∗10∗
Quizás podamos tener más suerte si usamos (una cadena con exactamente 4 1s).L′reg=0∗10∗10∗10∗10∗
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=L∩L′reg w∈L1 {0,1,3,4} 1s 1
Suponga que es CF y deje que sea su gramática en forma normal de Chomsky, y deje queL1 G
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
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=2a b,d≫a b≫a X Ys Y→...→Zi→...Y Zi
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=2a b 1 d=b!+b 0 b p ≤ b
0b p≤b y b=xyz,|y|=p,|x|≥0,|z|≥0 xyiz=b!+b
pero . Por tanto, no es CF y finalmente no es CF.w′∉L1 L1 L
Si la prueba es correcta (???) se puede extender a todos los idiomasLk={uv:|u|=|v|,d(u,v)≥k},k≥2
fuente
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 j10i10j i<j i+j u x 10j10j
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 pp p p
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=p i
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 ≺ vu v v v u≺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 LL p>0 q>0 w p L w w w = u x y z v u x y z vp w w w=uxyzv u x y z v
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 zy xz x^z^ qxjzjj≥0j=1y^ q xj zj j≥0 j=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 zp 2q i=p+2q i=p+q z^
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 + hj j i h q j=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] h k k 10j10j
.
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
fuente
por esta pregunta, creo que tiene contexto y está generado por la siguiente gramáticaL SABXY→AXBY∣BYAX→0∣0A0∣0A1∣1A0∣1A1→1∣0B0∣0B1∣1B0∣1B1→0∣0X0∣0X1∣1X0∣1X1→1∣0Y0∣0Y1∣1Y0∣1Y1
fuente