Es el complemento de {www | ...} sin contexto?


12

Es bien sabido que el complemento de tiene contexto. Pero, ¿qué pasa con el complemento de ?{ww∣w∈Σ∗}{www∣w∈Σ∗}


1
He descubierto que este es el Teorema 4 en P. Dömösi, S. Horváth, M. Ito, L. Kászonyi, M. Katsura: lenguajes formales que consisten en palabras primitivas. link.springer.com/chapter/10.1007/3-540-57163-9_15
— domotorp

Respuestas:


11

Todavía CFL, creo, con una adaptación de la prueba clásica. Aquí hay un boceto.

Considere L={xyz:|x|=|y|=|z|∧(x≠y∨y≠z)} , que es el complemento de {www} , con las palabras de longitud no 0 mod 3 eliminadas.

Deje L′={uv:|u|≡3|v|≡30∧u2|u|/3≠v|v|/3} . Claramente, L′ es CFL, ya que puede adivinar una posición p y considerar que u termina p/2 después de eso. Mostramos que L=L′ .

  • L⊆L′ : Letw=xyz∈L . Suponga que hay unap tal quexp≠yp . Luego escribau para los3p/2 primeros caracteres dew , yv para el resto. Naturalmente,u2|u|/3=xp . Ahora que esv|v|/3 ? Primero:

|v|/3=(|w|−3p/2)/3=|w|/3−p/2.

Por lo tanto, en w , esta es la posición:

|u|+|v|/3=3p/2+|w|/3−p/2=|w|/3+p,
o, en otras palabras, posicionar p en y . Esto muestra que u2|u|/3=xp≠yp=v|v|/3 .

Si yp≠zp , entonces que u sea el primero 32(|w|/3+p)caracteres dew, de modo queu2|u|/3esyp; ves el resto dew. Entonces:

|u|+|v|/3=2|w|/3+p
tanto,v|v|/3=zp.

  • L′⊆L : Revertimos el proceso anterior. Seaw=uv∈L′ . Escribep=2|u|/3 . Entonces:
    p+|w|/3=2|u|/3+|uv|/3=|u|+|v|/3.
    Asíwp=u2|u|/3≠v|v|/3=wp+|w|/3 , yw∈L (ya que siw tiene la formaxxx , debe contener quewp=wp+|w|/3 para todop ).

2
¡Guau, increíble! No pretendo haber seguido todos los detalles de su argumento, como si no entendiera lo que quiere decir con la última línea ('Para el último bit'), o por qué no separa el caso cuando , pero su solución funciona eventualmente. Resumiría el truco principal como 3 a + 3 b = 2 a + ( b - a ) + 2 a + 2 b . El truco similar también funciona para el complemento de cualquier L r = { w r|w|/3<p/23a+3b=2a+(b−a)+2a+2b . Me pregunto si L ′ = { x y z : | x | = | y | = | z | ∧ ( x ≠ y ) } no tiene contexto o no. Lr={wr}L′={xyz:|x|=|y|=|z|∧(x≠y)}
— domotorp

1
@domotorp: ¡Salud! Muy bien, "lo último" era innecesario, ¡gracias! En cuanto a "el caso cuando ", no estoy seguro de dónde quiere decir eso. ¿Me he perdido algo? En cuanto a tu L ' , me preguntaba lo mismo haciendo esta "prueba". Aún no estoy seguro :)|w|/3<p/2L′
— Michaël Cadilhac

2
Oh, mi mal, siempre se sostiene! p/2≤|w|/3
— domotorp

Probablemente no sea un problema, pero puede ser extraño, por lo que debe manejar los casos | u | = 3 p / 2 ( ? ) Cuando p es impar. p|u|=3p/2(?)p
— Marzio De Biasi

@MarzioDeBiasi: Sí, precisamente por eso es un boceto :-)
— Michaël Cadilhac

10

Esta es la forma en que pienso en resolver este problema, con un PDA. En mi opinión, es intuitivamente más claro.

Una palabra x no tiene la forma www iff tampoco (i) |x|≢0 (mod 3), que es fácil de verificar, o (ii) hay algún símbolo de entrada a que difiere del símbolo b correspondiente que ocurre |w|posiciones más tarde.

Usamos el truco habitual de usar la pila para mantener un entero t al tener un nuevo símbolo Z "de la parte inferior de la pila" , almacenando el valor absoluto |t|como el número de contadores en la pila, y sgn ( t ) por el estado del PDA. Por lo tanto, podemos aumentar o disminuir t haciendo la operación apropiada.

El objetivo es usar el no determinismo para adivinar las posiciones de los dos símbolos que está comparando, y usar la pila para registrar t:=|x|−3d , donde d es la distancia entre estos dos símbolos.

Logramos esto de la siguiente manera: incremente t para cada símbolo visto hasta que se elija el primer símbolo adivinado a , y registre a en el estado. Para cada símbolo de entrada posterior, hasta que decida que ha visto b , disminuya t en 2 ( 1 para la longitud de entrada y −3 para la distancia). Adivina la posición del segundo símbolo b y registra si a≠b . Continúe incrementando t para los siguientes símbolos de entrada. Acepte si t=0 (detectable por Z en la parte superior) ya≠b .

Lo bueno de esto es que debe quedar completamente claro cómo extender esto a poderes arbitrarios.


2
De hecho, muy ordenado!
— domotorp

1
Ah, mucho mejor :-)
— Michaël Cadilhac

4

Solo una perspectiva diferente ("orientada a la gramática") para demostrar que el complemento de {wk} es CF para cualquier k fija que use propiedades de cierre.

Primero tenga en cuenta que en el complemento de {wk} siempre hay i tal que wi≠wi+1 . Nos centramos en w1≠w2 y comenzamos con una gramática CF simple que genera:

L={a00...0⏟w1b00...0⏟w2...000...0⏟wk∣|wi|=n}={a0n−1b0n(k−1)−1}

Por ejemplo, para k=3 , tenemos L={ab0,a0b000,a00b00000,...} ,GL={S→ab0|aX00,X→0X00|0b0}

Luego aplique cierre bajo homomorfismo inverso y unión :

Primer homomorfismo: φ(1)→a,φ(0)→b,φ(1)→0,φ(0)→0

Segundo homomorfismo: φ′(0)→a,φ′(1)→b,φ′(1)→0,φ′(0)→0

L′=φ−1(L)∪φ′−1(L) todavía está libre de contexto

Aplique el cierre debajo de los desplazamientos cíclicos a L′ para obtener el conjunto de cadenas de longitud kn no de la forma wk :

L″=Shift(L′)={u∣u≠wk∧|u|=kn} .

Finalmente, agregue el conjunto regular de cadenas cuya longitud no es divisible por k para obtener exactamente el complemento de {wk} :

L″∪{{0,1}n∣nmodk≠0}={u∣u≠wk}

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.