Quiero saber si el siguiente problema es decidible:
Instancia: un NFA A con n estados
Pregunta: ¿Existe algún número primo p tal que A acepte alguna cadena de longitud p.
Creo que este problema es indecidible, pero no puedo probarlo. El decisor puede tener fácilmente un algoritmo para determinar si un número particular es primo, pero no veo cómo podría analizar el NFA con suficiente detalle para saber exactamente qué longitudes puede producir. Podría comenzar a probar cadenas con el NFA, pero para un lenguaje infinito, puede que nunca se detenga (y, por lo tanto, no sea un factor decisivo).
El NFA se puede cambiar fácilmente a un DFA o expresión regular si la solución lo necesita, por supuesto.
Esta pregunta es algo que he estado reflexionando como una pregunta de preparación hecha por mí mismo para una final que tengo en 2 semanas.
Respuestas:
Las longitudes de las cadenas aceptadas por un DFA forman un conjunto semilineal (como en el teorema de Parikh para lenguajes libres de contexto), la descripción de esos no es demasiado difícil de encontrar (esencialmente empalma todos los ciclos posibles del autómata), y por El teorema de Dirichlet cualquier progresión aritmética de la forma con mcd ( a , b ) = 1 contiene una infinidad de números primos.a+bk gcd(a,b)=1
Al unir lo anterior se obtiene un algoritmo para verificar si su lenguaje regular (o incluso sin contexto) contiene cadenas de longitud principal. Definitivamente no es una pregunta simple, en mi humilde opinión ...
fuente