Decidir si un lenguaje sensible al contexto unario es regular


18

Es un resultado bien conocido que la pregunta

¿Una gramática libre de contexto genera un lenguaje regular?

Es indecidible. Sin embargo, se vuelve decidible en un alfabeto unario, simplemente porque en este caso, las clases de lenguajes libres de contexto y regulares coinciden.

Mi pregunta es saber qué sucede con los lenguajes sensibles al contexto unarios .

¿Es decidible saber si una gramática sensible al contexto dada en un alfabeto unario genera un lenguaje regular?

Si la respuesta es positiva, una estimación de la complejidad sería bienvenida.

Respuestas:


9

Por desgracia, tu problema es indecidible. El enfoque con el que me topé (¡que podría ser excesivo, por lo que cualquiera que tenga un enfoque más conveniente debería dar un paso adelante!) Primero usa un argumento diagonal para demostrar que hay un CSL unario Xque no es regular (en contraste con el resultado positivo para CFL unarias), y luego se reduce del problema de detención para las máquinas de Turing, dado un TM M , construyendo un CSG G que simula M en una longitud de cinta más corta que la cadena de análisis w , reconociendo X si M detiene sin sobrepasar sus límites y no analizar de otra manera, para que G analice con éxito todo wXque son lo suficientemente largos si M detiene (de modo que L(G) difiere de X en solo un número finito de cadenas y, por lo tanto, no puede ser regular), de lo contrario, G reconoce el lenguaje vacío (que es claramente regular).

La clave de este enfoque es la observación de que los CSG no solo se ocupan de cuestiones gramaticales como la estructura de las frases; de hecho, las secuencias de derivación de CSG pueden llevar a cabo cálculos arbitrarios no deterministas limitados por el espacio (de hecho, hay PSPACECSL completos) antes de llegar a la tarea de alinearse con la cadena de análisis. Esto se observa más fácilmente a través de conversiones estándar entre CSG y gramáticas monotónicas (que continúa funcionando cuando se restringe a alfabetos unarios), y el uso de producciones monotónicas simples para simular transiciones de máquina de Turing en cadenas de derivación que representan etapas en un historial de cómputo. A lo largo de esta respuesta, voy a suponer que el lector puede intuir la mayoría de los detalles cuando se requiere un CSG para simular un cálculo dado. (Supongo que el autor de la pregunta se siente cómodo con todo esto, pero lo revisaré por completo. Sin embargo, no dude en solicitar una aclaración en los comentarios).


En primer lugar, necesitamos nuestro CSG unario no regular. ( EDITAR: entonces, esto fue excesivo: las CSL unarias no regulares se pueden exhibir fácilmente, por ejemplo, a través del lema de bombeo en cualquier idioma que exhiba la no regularidad más básica. Vea los comentarios para ver ejemplos. En retrospectiva, use un argumento diagonal fue como llevar una cabeza nuclear a una pelea con cuchillos. Examina esta construcción si tienes curiosidad, de lo contrario, salta a la reducción).

Deje ser una enumeración de DFA sobre el alfabeto { 1 } , de modo que el número de estados en D i aumente en i . Describimos un CSG G X en términos de su comportamiento al analizar la cadena 1 n{ 1 } :D1,D2,...{1}DiiGX1n{1}

  1. No determinista generar una cadena de no terminales "en blanco", que consideramos como la "cinta". Uno de los no terminales en blanco debe ser un no terminal separado "en blanco + cabeza de lectura-escritura + estado de inicio". Si la cadena de análisis no es 1 n, entonces esta derivación terminará fallando. Describimos el resto del proceso en términos del cálculo determinista simulado por la única derivación posible.n1n
  2. Imprima en la cinta una codificación de seguida del número i en binario, donde se elige i = n - c y c para que siempre tengamos suficiente espacio en nuestra cinta para hacer lo que necesitamos. (Esto es posible ya que el espacio requerido para codificar tanto D i como i crece logarítmicamente en i ).Diii=nccDiii
  3. Evaluar en la entrada 1 i . Esto no requiere una cinta representativa de D i : puede almacenar un solo estado, que cambia de acuerdo con las transiciones de D i a medida que disminuye i .Di1iDiDii
  4. Si rechaza 1 i , sobrescriba toda la cinta con no terminales que producen 1 . De lo contrario fallar.Di 1i1

Tomamos . Claramente X L ( D i ) para cualquier i , ya que 1 i + cX 1 i + cL ( D i ) .X=L(GX)XL(Di)i1i+cX1i+cL(Di)


El siguiente paso es diseñar una reducción del problema de detención al problema del autor de la pregunta. (Si omitió la sección anterior, deje que sea ​​una CSL unaria arbitraria no regular generada por CSG G X ).XGX

Sea una TM arbitraria. Convertimos M en un CSG G que se comporta de la siguiente manera en la cadena de análisis 1 n :MMG1n

  1. Genere espacios no terminales en blanco, el más a la izquierda es el espacio en blanco separado + cabezal de lectura-escritura no terminal, y también genere un no límite "límite" en cada lado. Nuevamente, si generamos un número incorrecto de no terminales, entonces fallamos.n2
  2. Simule en el espacio entre los límites no terminales. Si M alguna vez cambia a uno de los estados límite, terminamos la simulación y asumimos que M nunca se detiene.MMM
  3. Si se detiene, se comportan como G X . Si tuviéramos que terminar la simulación, entonces fallar.MGX

Tenga en cuenta que si logra ejecutarse para siempre dentro de los límites, entonces G nunca puede generar una cadena de análisis y fallará. Si M se detiene, entonces hay una cierta cantidad de espacio n que es suficiente para contener el cálculo completo de M , por lo tanto, G analiza 1 m siempre que m n + 2 y 1 mX , y por lo tanto X es la unión de L ( G ) y un lenguaje finito, de donde L ( G )MGMnMG1mmn+21mXXL(G)L(G)No es regular. Por otro lado, si nunca se detiene, entonces L ( G ) = es claramente regular.ML(G)=

Un algoritmo para decidir si es regular o no determinaría si M se detiene o no en una cinta en blanco, lo cual es indecidible. Se sigue que el problema del autor de la pregunta es indecidible.L(G)M


2
{ a pp  es primo }{an2n0}{app is prime}

Je, sobrecargado de hecho, probablemente se me debería haber ocurrido que una discusión diagonal sería una exageración. Supongo que editaré una nota en la respuesta. Espero que la segunda parte haya sido útil, sin embargo.
gdmclellan

@ J.-E.Pin: No lo pensé demasiado, ¿es fácil construir una gramática sensible al contexto unaria para ? {app is prime}
Marzio De Biasi

@ marzio-de-biasi Tengo que confesar que no me
revisé,

@MarzioDeBiasi Muy fácil. Al determinar si un lenguaje es sensible al contexto, el proceso habitual es algo así como 1. adivina de manera no determinista la cadena de análisis; 2. llevar a cabo un cálculo limitado por el espacio para determinar si la cadena de análisis satisface algún predicado; y 3. generar la cadena si se determina que dicho predicado está satisfecho. El espacio puede ser un poco problemático (el espacio limitado viene dado por la longitud de la cadena de análisis, porque no puede contraer una cadena derivada usando producciones sensibles al contexto), pero en el caso unario tiene espacio exponencial para trabajar .
gdmclellan

6

Esta es esencialmente la misma respuesta que la anterior, pero como se busca una respuesta "más conveniente", estoy mencionando esto: (Además, esta es mi primera publicación aquí, ¡así que perdóname si publico una trivialidad!)

NaLaL={ananN and mn:amL}LL

Actualización: Por supuesto, el mismo argumento muestra que la indecidibilidad ya es válida para el espacio logarítmico determinista.


"el vacío es indecidible para lenguajes sensibles al contexto unarios": ¿es un hecho bien conocido? ¿Tendrías una referencia?
J.-E.

1
LΣh:Σ{a}ah(L)LTa2nTn
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.