Comme je l'ai étudié, décider de la régularité des langages sans contexte est indécidable.
Cependant, nous pouvons tester la régularité en utilisant le théorème de Myhill – Nerode qui fournit une condition nécessaire et suffisante. Le problème devrait donc être décidable.
Où est mon erreur?
Réponses:
Myhill – Nerode fournit en effet une caractérisation des langues régulières mais cela ne suffit pas pour montrer que le problème est décidable. "Décidable" signifie qu'il existe un algorithme (plus formellement, une machine de Turing) qui se termine pour chaque entrée et, bien sûr, donne toujours la bonne réponse. Donc, dans ce cas, vous devrez fournir un algorithme qui, étant donné un langage en entrée, détermine si la relation Myhill – Nerode a un nombre fini de classes d'équivalence. Il s'avère que cela ne peut pas être fait pour les langues sans contexte; détails dans votre manuel de langues officielles préféré.
Si vous voulez décider si un langage général est régulier, une autre subtilité est que vous devez faire attention à ce qui est l'entrée de votre algorithme. L'entrée doit être une chaîne finie - sinon, même la simple lecture de l'entrée serait un algorithme sans terminaison. Dans le cas des langues sans contexte, vous pouvez utiliser une grammaire comme représentation finie d'une langue infinie. Pour des langues plus générales, il vous faudrait ... enfin, quelque chose de plus général. En fin de compte, cependant, si vous voulez traiter toutes les langues, vous êtes condamné. Sur n'importe quel alphabet fini, il existe un nombre incalculable de langues mais uniquement un nombre infini de chaînes finies. Cela signifie que vous ne pouvez pas décrire toutes les langues en utilisant des chaînes finies. 1Par conséquent, essayer d'écrire un algorithme pour déterminer si les langues arbitraires données en entrée sont régulières échoue avant de commencer. Ce n'est pas seulement que vous ne pouvez pas écrire l'algorithme: vous ne pouvez même pas écrire l'entrée!
Notez que cela ne signifie pas que vous, un être humain, ne pouvez pas utiliser Myhill – Nerode pour déterminer si les langues sont régulières. Cela signifie simplement que vous ne pouvez pas écrire un ensemble d'instructions précises pour me dire comment procéder. À un moment donné, un tel ensemble d'instructions devrait dire quelque chose comme: «Et puis jouer avec pour voir ce qui fonctionne» ou «À partir de là, vous devez le découvrir par vous-même».
la source