Une déclaration du théorème de Rice est donnée à la page 35 de "Complexité computationnelle: une approche moderne" (Arora-Barak):
Une fonction partielle de à est une fonction qui n'est pas nécessairement définie sur toutes ses entrées. On dit qu'un TM calcule une fonction partielle si pour chaque sur lequel est défini, et pour chaque sur lequel n'est pas défini entre dans une boucle infinie lorsqu'il est exécuté en entrée . SiS f S α M α S S f Sest un ensemble de fonctions partielles, nous définissons être la fonction booléenne sur l' entrée sorties 1 ssi calcule une fonction partielle dans . Le théorème de Rice dit que pour tout non trivial , la fonction n'est pas calculable.
Wikipedia indique que les langages des machines de turing à temps limité sont EXPTIME complets. Je m'attends à ce que cette langue ressemble à accepte en moins de étapes . Soit donc un DTM qui décide de ce langage borné en temps exponentiel. Il semble que ce DTM décide d'une propriété pour TOUTES les machines de turing, donc mon intuition me dit que le théorème de Rice empêche une telle décision. Mais évidemment, calcule une fonction totale. x n } M M
Qu'est-ce qui me manque dans la relation entre ce langage et le théorème de Rice?
Le théorème de Rice dit que vous ne pouvez rien dire sur le comportement ultime d'un programme lorsqu'il est exécuté à l'infini - peu importe la façon dont vous classifiez les programmes, il y aura deux programmes qui convergeront vers le même comportement ultime (fonction calculée ) bien que vous les ayez classés différemment.
Mais laisser les programmes s'exécuter à l'infini est essentiel. Pour savoir ce qu'ils font dans les premières étapes, vous pouvez simplement les simuler pour les n premières étapes, puis terminer de donner votre verdict sur la façon dont le programme s'est comporté. Une simulation similaire jusqu'à l'infini ne fonctionne pas, car si le programme simulé ne se termine jamais sur une entrée simulée, votre classificateur divergera également, au lieu de fournir une classification.n n
la source
Tout d'abord, les mots dans votre langue ne sont pas des encodages de machines, ils contiennent plus d'informations, vous ne pouvez donc pas appliquer directement le théorème de Rice. Cela dit, le théorème de Rice parle de l'impossibilité de raisonner sur la fonction calculée par une machine de Turing (à savoir, si elle se trouve dans un ensemble ). Ce n'est pas le cas ici, car comme Raphaël l'a mentionné, il existe deux machines M , M ' qui calculent la même fonction, mais l'une réside dans votre langage et l'autre pas (ici j'ignore le problème syntaxique et j'oublie le fait que x , nS M,M′ x,n font partie de l'entrée). Le fait est que la propriété que vous regardez ici est mécanique et non sémantique (les machines peuvent calculer la même fonction, mais d'une manière différente).
la source
Le théorème de Rice dit que, pour tout ensemble non trivial de langues, l'ensemble des machines de Turing qui reconnaissent une langue en L est indécidable. Wikipedia dit qu'une langue spécifique est décidable. Il n'y a donc pas de contradiction.L L
la source