L'une des définitions d'un ensemble énumérable calculable (ce, équivalent à énumérable récursivement, équivalent à semi-décidable) est la suivante:
est ce ssi il y a un langage décidable (appelé vérificateur) st pour tous les ,
ssi il existe un st .
Ainsi, une façon de montrer qu'une langue n'est pas ce est de montrer qu'il n'y a pas de vérificateur décidable pour elle. Cette méthode est-elle utile pour montrer que les langues ne sont pas ce en pratique?
Réponses:
En pratique, nous ne prouvons généralement pas simplement qu'une langue est re ou non re. Si le langage est re, nous voulons savoir s'il est récursif. Si ce n'est pas le cas, nous voulons savoir quel type de degré Turing il possède, et pas seulement que le degré Turing ne l'est pas.
Par exemple, si est un problème avec alors n'est pas re, mais ce fait sur le saut de Turing est plus informatif que de simplement savoir que n'est pas reP P′≡T0′′′ P P
Ainsi, alors que, en principe, vous pouvez montrer qu'un langage n'est pas re en prouvant qu'il n'y a pas de vérificateur, en pratique, il est plus informatif de prouver que le langage n'est pas re en montrant qu'il calcule quelque chose qu'aucun re-set ne peut calculer; la nature de ce «quelque chose» donne généralement des informations utiles sur le problème étudié.
la source
Pour clarifier la terminologie que j'utilise: decidable = recursive = calculable, semidecidable = récursivement énumérable = calculable enumerable, co-semidécidable = co-récursivement énumérable = co-calculable énumérable.
En pratique, une méthode courante pour montrer qu'un langage n'est pas semi-décidable est de montrer qu'il n'est pas décidable et qu'il est co-semi-décidable. Vous utilisez ensuite le fait que toute langue à la fois semi-décidable et co-semi-décidable est également décidable pour conclure que votre langue n'est pas semi-décidable. (notez que cela ne fonctionne que dans un seul sens: un langage ne peut être ni semi-décidable ni co-semi-décidable, auquel cas vous avez besoin d'une autre méthode)
Par exemple: nous savons que décider si un est ambigu est indécidable, mais il est facile de co-semi-décider: vous donnez simplement une chaîne qui a deux analyses différentes. Cela implique qu'il n'est pas semi-décidable si un est ambigu.CFG CFG
Une autre méthode consiste à montrer que le langage est complet pour un niveau supérieur de la hiérarchie arithmétique .
Il est bien sûr possible de prouver directement qu'il n'y a pas de vérificateur, mais c'est souvent fastidieux, car cela répète généralement la preuve que le problème d'arrêt est indécidable. Notez cependant que l'argument ci-dessus prouve essentiellement implicitement qu'il ne peut y avoir de vérificateur, donc je suppose que vous pourriez dire que c'est une méthode pour prouver qu'il n'y a pas de vérificateur, mais alors vous pouvez considérer toute preuve de non-semi-décidabilité comme une preuve qu'il y a pas de verfier.
la source