Je veux savoir si le problème suivant est décidable:
Instance: un NFA A avec n états
Question: Existe-t-il un nombre premier p tel que A accepte une chaîne de longueur p.
Ma conviction est que ce problème est indécidable, mais je ne peux pas le prouver. Le décideur peut facilement avoir un algorithme pour déterminer si un nombre particulier est premier, mais je ne vois pas comment il pourrait analyser le NFA avec suffisamment de détails pour savoir exactement quelles longueurs il peut produire. Il pourrait commencer à tester des chaînes avec le NFA, mais pour un langage infini, il pourrait ne jamais s'arrêter (et donc ne pas être un décideur).
Le NFA peut facilement être changé en DFA ou en expression régulière si la solution en a besoin, bien sûr.
Cette question est quelque chose que j'ai réfléchi en tant que question préparée par moi-même pour une finale que j'arrive dans 2 semaines.
la source
Réponses:
Les longueurs des chaînes acceptées par un DFA forment un ensemble semi-linéaire (comme dans le théorème de Parikh pour les langues sans contexte), la description de celles-ci n'est pas trop difficile à trouver (essentiellement épisser tous les cycles possibles de l'automate), et par Le théorème de Dirichlet toute progression arithmétique de la forme avec gcd ( a , b ) = 1 contient une infinité de nombres premiers.a + b k pgcd ( a , b ) = 1
Le fait de rassembler ce qui précède donne un algorithme pour vérifier si votre langage standard (ou même sans contexte) contient des chaînes de longueur principale. Absolument pas une question simple, IMVHO ...
la source