Existe-t-il un algorithme / une procédure systématique pour tester si une langue est régulière?
En d'autres termes, étant donné un langage spécifié sous forme algébrique (pensez à quelque chose comme ), testez si la langue est régulière ou non. Imaginez que nous écrivons un service Web pour aider les élèves dans tous leurs devoirs; l'utilisateur spécifie la langue et le service Web répond par "régulier", "non régulier" ou "je ne sais pas". (Nous aimerions que le service Web réponde «Je ne sais pas» aussi rarement que possible.) Existe-t-il une bonne approche pour automatiser cela? Est-ce traitable? Est-ce décidable (c.-à-d. Est-il possible de garantir que nous n'aurons jamais besoin de répondre «je ne sais pas»)? Existe-t-il des algorithmes raisonnablement efficaces pour résoudre ce problème et être en mesure de fournir une réponse autre que "ne sais pas" pour de nombreuses / la plupart des langues susceptibles de survenir dans la pratique?
La méthode classique pour prouver qu'une langue n'est pas régulière est le lemme de pompage. Cependant, il semble que cela nécessite un aperçu manuel à un moment donné (par exemple, pour choisir le mot à pomper), donc je ne sais pas si cela peut être transformé en quelque chose d'algorithmique.
Une méthode classique pour prouver qu'un langage est régulier serait d'utiliser le théorème de Myhill – Nerode pour dériver un automate à états finis. Cela ressemble à une approche prometteuse, mais cela nécessite la capacité d'effectuer des opérations de base sur les langues sous forme algébrique. Il n'est pas clair pour moi s'il existe un moyen systématique d'effectuer symboliquement toutes les opérations qui peuvent être nécessaires, sur des langues sous forme algébrique.
Pour que cette question soit bien posée, nous devons décider comment l'utilisateur spécifiera la langue. Je suis ouvert aux suggestions, mais je pense à quelque chose comme ceci:
où est une expression-mot et S est un système d'inégalités linéaires sur les variables de longueur, avec les définitions suivantes:
Chacun de est une expression verbale. (Ceux-ci représentent des variables qui peuvent prendre n'importe quel mot en Σ ∗ .)
Chacun de est une expression verbale. (Ici, x r représente l'inverse de la chaîne x .)
Chacun de est une expression verbale. (Implicitement, Σ = { a , b , c , … } , donc a , b , c , … représentent un seul symbole dans l'alphabet sous-jacent.)
Chacun de est une expression de mot, si η est une variable de longueur.
La concaténation des expressions-mots est une expression-mot.
Chacun de est une variable de longueur. (Ceux-ci représentent des variables qui peuvent prendre n'importe quel nombre naturel.)
Chacun Est une variable de longueur. (Ceux-ci représentent la longueur d'un mot correspondant.)
Cela semble assez large pour gérer la plupart des cas que nous voyons dans les exercices de manuels. Bien sûr, vous pouvez remplacer toute autre méthode textuelle de spécification d'une langue sous forme algébrique, si vous avez une meilleure suggestion.
Réponses:
La réponse est non. Décider si une grammaire sans contexte donnée génère un langage normal est un problème indécidable.
Mettre à jour . J'ai donné cette réponse négative à la question générale
puisque les langages sans contexte sont des solutions d'équations algébriques dans les langages: voir Chapitre II, Théorèmes 1.4 et 1.5 dans le livre de J. Berstel Transductions and Context-Free Languages .
Cependant, la même question est décidable pour les langages déterministes sans contexte, un résultat non trivial dû à Stearns [1] et amélioré par Valiant [2]:
[1] RE Stearns, A Regularity Test for Pushdown Machines, Information and Control 11 323- 340 (1967). DOI: 10.1016 / S0019-9958 (67) 90591-8.
[2] LG Valiant. Régularité et problèmes connexes pour les automates déterministes à refoulement J. ACM 22 (1975), pp. 1–10.
Il y a un autre résultat positif, plus proche des spécifications données dans la deuxième partie de la question. Rappelons que les sous-ensembles semi-linéaires deNk sont exactement les ensembles définissables dans l'arithmétique de Presburger. Il y a aussi les sous-ensembles rationnels deNk . En particulier, un sous-ensemble deNk définie par des inéquations linéaires est rationnelle. Maintenant, étant donné un sous-ensemble rationnelR de Nk , il est possible de décider si la langue
S. Ginsburg and E. H. Spanier., Semigroups, Presburger formulas, and languages, Pacific J. Math. 16 (1966), 285-296.
S. Ginsburg and E. H. Spanier. Bounded regular sets, Proc. of the American Math. Soc. 17, 1043–1049 (1966).
This does not solve the second part of the question, which might be undecidable because of the word variables, but it gives a reasonable fragment to start with.
la source