¿Existen permutaciones y gramática libre de contexto de tamaño polinómico (en ) que describe el lenguaje finito sobre el alfabeto ?
ACTUALIZACIÓN: Para una permutación es posible. es la inversión o modificación relativamente menor de la inversión.
¿Existen permutaciones y gramática libre de contexto de tamaño polinómico (en ) que describe el lenguaje finito sobre el alfabeto ?
ACTUALIZACIÓN: Para una permutación es posible. es la inversión o modificación relativamente menor de la inversión.
Respuestas:
Forma normal Chomsky
Un CFG está en CNF (forma normal de Chomsky) si las únicas producciones son de la forma y A → B C ; una gramática puede llevarse a CNF con solo una explosión cuadrática.A→a A→BC
Para una gramática en CNF, tenemos el bonito Lema de la subword: si G genera una palabra w , entonces para cada ℓ ≤ w , hay una subword x de w de longitud ℓ / 2 ≤ | x | < ℓ que se genera por algunos no terminal de G . Prueba: descienda el árbol de sintaxis (binario), siempre yendo al hijo que genera la subpalabra más larga. Si comenzó con una palabra secundaria de tamaño de al menos ℓ , no puede haber ido por debajo de ℓ / 2 .G G w ℓ≤w x w ℓ/2≤|x|<ℓ G ℓ ℓ/2
Solución
Sin pérdida de generalidad, podemos suponer que una gramática para (tal lenguaje con π 1 , π 2 ∈ S n específico ) está en forma normal de Chomsky. El lenguaje L n consiste en las palabras w ( x ) = x π 1 ( x ) π 2 ( x ) para todo x ∈ { 0 , 1 } n .Ln π1,π2∈Sn Ln w(x)=xπ1(x)π2(x) x∈{0,1}n
Usando el subtítulo Lema, para cada podemos encontrar una subcadena s ( x ) de longitud nw(x) s(x) generado por algún símboloA(x)y que ocurre en la posiciónp(x).
Suponga que y A ( x ) = A ( y ) . Desde | s ( x ) | < n , la subparte s ( x ) no puede intersectar tanto la parte x como la parte π 2 ( x ) de w ( x ) ; podemos suponer que es disjunto de la parte x . Así wp(x)=p(y) A(x)=A(y) |s(x)|<n s(x) x π2(x) w(x) x tiene la forma x α s ( x ) β . Esto implica que A ( x ) genera exactamente una cadena, es decir s ( x ) . Por lo tanto s ( x ) = s ( y ) .w(x) xαs(x)β A(x) s(x) s(x)=s(y)
Ahora cruza con π 1 ( y ) o π 2 ( y ) en al menos n / 4 lugares, y por lo tanto determina al menos n / 4 bits de y . Por lo tanto, como máximo 2 3 n / 4 cadenas y ∈ { 0 , 1 } n pueden tener p ( x ) = p ( y )s(y) π1(y) π2(y) n/4 n/4 y 23n/4 y∈{0,1}n p(x)=p(y) y . Como hay a lo sumo 3 n posibilidades para p ( y ) , obtenemos que hay al menos 2 n / 4A(x)=A(y) 3n p(y) diferentes no terminales en la gramática.
Comentario: La misma prueba funciona si , es decir, son permutaciones arbitrarias en el conjunto de todas las palabras de n bits. Dados n / 4 bits de π i ( y ) , hay exactamente 2 3 n / 4 preimágenes y .π1,π2∈S{0,1}n n n/4 πi(y) 23n/4 y
Más ejemplos
Usando el mismo método, se puede demostrar que el idioma en el que cada carácter aparece exactamente dos veces requiere CFG de tamaño exponencial en el tamaño del alfabeto. Podemos reemplazar "dos veces" con cualquier subconjunto de no sean cuatro triviales (ignorando 0 , ya sea que no contenga ninguno de N ≥ 1 o todo).N 0 N≥1
Agradecería una referencia para este método de prueba.
fuente