Es bien sabido que el complemento de tiene contexto. Pero, ¿qué pasa con el complemento de ?
fl.formal-languages
context-free
domotorp
fuente
fuente
Respuestas:
Todavía CFL, creo, con una adaptación de la prueba clásica. Aquí hay un boceto.
ConsidereL={xyz:|x|=|y|=|z|∧(x≠y∨y≠z)} , que es el complemento de {www} , con las palabras de longitud no 0 mod 3 eliminadas.
DejeL′={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′ .
Por lo tanto, enw , 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 .
Siyp≠zp , entonces que u sea el primero 32(|w|/3+p) caracteres dew , de modo queu2|u|/3 esyp ; v es el resto dew . Entonces:
|u|+|v|/3=2|w|/3+p
tanto,v|v|/3=zp .
fuente
Esta es la forma en que pienso en resolver este problema, con un PDA. En mi opinión, es intuitivamente más claro.
Una palabrax 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 enterot 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 registrart:=|x|−3d , donde d es la distancia entre estos dos símbolos.
Logramos esto de la siguiente manera: incrementet 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.
fuente
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:
Por ejemplo, parak=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
Aplique el cierre debajo de los desplazamientos cíclicos aL′ para obtener el conjunto de cadenas de longitud kn no de la forma wk :
Finalmente, agregue el conjunto regular de cadenas cuya longitud no es divisible pork para obtener exactamente el complemento de {wk} :
fuente