Pourquoi décider de la régularité d'un langage sans contexte est-il indécidable?

8

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?

Jiya
la source
3
Comment proposez-vous pour savoir si la relation Myhill-Nerode a un nombre fini de classes d'équivalence? Selon vous, quelle propriété des langages sans contexte vous permet de faire cela?
David Richerby
2
Veuillez vérifier la définition de la calculabilité: vous devez fournir une machine de Turing (ou, plus généralement, un algorithme) qui résout le problème (toujours). Myhill-Nerode n'est pas en soi un algorithme, seulement une caractérisation. La propriété fournie est-elle décidable? Avez-vous essayé de transformer le théorème en un tel algorithme?
Raphael
2
@Jiya Qu'entendez-vous par "décider de la régularité"? Au début, cela semble évident, mais c'est en fait plus subtil. Une procédure de décision (algorithme) doit prendre une entrée finie, alors comment donner une langue infinie en entrée? Vous souhaitez peut-être utiliser des expressions telles que . OK, mais quelles expressions allez-vous autoriser? ? ? {anbnn0}{anbmthe mth Turing machine halts on input m}{anbknk is one of David Richerby's favourite numbers}
David Richerby
1
@Jiya Absolument, oui. Mais vous devez choisir l'ensemble d'expressions que vous souhaitez accepter et écrire une spécification formelle de ces expressions. Ensuite, votre machine Turing devrait analyser les expressions et décider si elles correspondent ou non à des langues normales.
David Richerby
1
@Jiya Si les seules langues que vous considérez sont celles de la forme où , et sont des constantes, alors le langage résultant est régulier si, et seulement si, deux ou trois de , et sont nuls. Ainsi, pour les langues définies de cette façon, le problème de déterminer si la langue résultante est régulière est décidable. Mais, si vous autorisez des relations plus complexes entre les nombres de s, s et s, il peut être indécidable qu'une langue soit régulière. C'est pourquoi il est crucial de savoir comment les langues sont spécifiées.{akxbxcmx|x0}kmkmabc
David Richerby

Réponses:

9

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».


  1. En particulier, cela signifie que certains langages doivent être indécidables, car il y a plus de langages que d'algorithmes.
David Richerby
la source
1
Nous pouvons contourner le problème de l'encodage d'entrée en nous limitant à tous les langages récursivement énumérables, décidables ou même sans contexte. Ensuite, nous avons des encodages d'entrée "naturels" (grammaires, machines de Turing, ...) mais ne pouvons toujours pas décider de la régularité. Donc, clairement, il y a des choses plus subtiles en cours.
Raphael
Merci Raphael. J'ai édité pour qu'il soit plus clair que la section "doom" se référait à ne pas pouvoir accepter toutes les langues comme entrées.
David Richerby