Pourquoi les nombres calculables (au sens de Turing) sont-ils énumérables?


9

Pourquoi les nombres calculables (au sens de Turing) sont-ils énumérables? Cela doit être très évident, mais je ne le vois actuellement pas.


3
N'est-ce pas simplement parce que toutes les MT sont énumérables?
yo

Ça doit être ça.

2
Être énumérable signifie (par définition) qu'il existe une machine de Turing qui s'arrête avec une réponse oui pour chaque instance oui. Étant donné qu'être calculable signifie qu'il existe une machine de Turing qui s'arrête avec la bonne réponse pour chaque entrée, il est facile de voir qu'être calculable implique qu'elle est énumérable (il s'agit d'un sous-cas).
Jonas G. Drange

Je ne pense pas que ce soit le sens de "calculable" dans ce cas. C'est un problème de construction, pas un problème de décision.
lvella

Réponses:


5

Je suppose que votre définition d'un nombre calculable est la suivante: il y a une machine de Turing qui, à l'entrée , s'arrête avec le n ème bit du nombre.nn

Supposons qu'il y ait une énumération récursive des machines de Turing qui produisent des nombres calculables. Vous pouvez utiliser la diagonalisation pour trouver un nouveau nombre calculable qui ne fait pas partie de cette énumération récursive.

Il est tentant d'énumérer les nombres calculables en énumérant les machines Turing, mais toutes les machines Turing ne correspondent pas à un nombre calculable, et en général, décider si une machine Turing s'arrête pour toutes les entrées (sans parler de la sortie 0 ou 1) n'est pas calculable. Il est cependant possible d'énumérer tous les nombres calculables efficaces, par exemple ceux dont le temps d'exécution est polynomial, en utilisant des machines de Turing cadencées.


Donc, même si la cardinalité d'un ensemble (dans ce cas, l'ensemble des nombres calculables) n'est pas plus grande que la cardinalité d'un autre ensemble qui est listable (l'ensemble de toutes les MT), cela ne signifie pas que le premier ensemble peut être répertoriés.
André Souza Lemos

2

Si par énumérable, vous voulez dire qu'il y a une bijection avec les nombres naturels (c'est-à-dire dénombrables), alors non, les nombres calculables ne sont pas énumérables.

Définissons le problème plus précisément: une "machine de Turing à impression numérique (NPTM)" est une machine de Turing qui, pour chaque transition d'état, peut ne rien imprimer, ou peut imprimer n'importe quel chiffre décimal, le signe moins ou la période. Cela suffit pour imprimer des représentations décimales de nombres réels.

Permet de définir un nombre réel calculable comme tout nombre réel qui peut être imprimé avec une représentation arbitrairement longue, avec suffisamment de temps, par un NPTM à partir d'une bande vide. Disons également qu'un nombre est calculé par un NPTM donné si il s'arrête après avoir imprimé un nombre réel bien formé (auquel cas le nombre a une représentation décimale finie) ou imprimera, dans un laps de temps fini, un nombre bien formé avec un point décimal, et augmentera toujours la précision du nombre en imprimant plus de chiffres, avec toujours plus de temps.

Cette condition ultérieure était nécessaire parce que, si nous avons une machine qui, par exemple, imprime une séquence infinie d'un chiffre, disons 1111111111111111111..., on ne peut pas dire qu'elle calcule un nombre réel, car les nombres réels n'ont qu'une représentation infinie à droite côté de la période décimale. D'un autre côté, si la machine imprime 3.14puis arrête d'imprimer, mais ne s'arrête jamais, on ne peut pas dire qu'elle calcule un nombre réel simplement parce que la précision du nombre n'augmente pas, donc, cette machine particulière ne la construira pas plus loin.

Ce sont des exemples de NPTM qui calculent un certain nombre. Un NPTM qui:

  • imprime 1, puis s'arrête. Il calcule le numéro 1.
  • imprime 1.0, puis s'arrête. Il calcule également le numéro 1.
  • imprime 1.0000000et continue à imprimer des zéros pour toujours. Celui-ci calcule également le numéro 1.
  • imprime 3.14, puis s'arrête. Il calcule le nombre 3.14.
  • 3.14159ππ
  • imprime -42., puis s'arrête. Il calcule le nombre -42.

Et ce sont les exemples de NPTM qui ne ne calculent un nombre. Un NPTM qui:

  • imprime 123123123puis continue d'imprimer la séquence 123pour toujours. Ne calcule pas un nombre parce que cette séquence infinie ne représente aucun nombre réel.
  • imprime 1.0.0puis s'arrête. Ce n'est pas parce que cette séquence finie n'est pas bien formée.
  • impressions ....-..--- puis s'arrête. Ce n'est pas non plus parce que ce n'est pas un nombre réel bien formé.
  • n'imprime jamais rien, mais ne s'arrête jamais non plus. Il n'y a pas de nombre en construction.
  • n'imprime jamais rien et s'arrête immédiatement. Aucun numéro n'a été construit.
  • imprime 3.14, ne s'arrête pas, mais n'imprime jamais rien d'autre non plus. Ne calcule pas un nombre car sa précision n'augmente pas avec le temps.

Vous avez l'idée. Ensuite, nous avons deux classes de NPTM: celles qui calculent un certain nombre réel et celles qui ne le font pas.

Le problème de trouver une énumération pour les nombres calculables est que, même si les NPTM sont eux-mêmes dénombrables, nous ne pouvons pas avoir de procédure qui sépare un type de NPTM d'un autre.

SF:NS .

Pour «prouver» que les nombres calculables sont dénombrables, on pourrait être tenté de définir une telle fonction à partir du décompte du NPTM (et c'est ce que les gens faisaient souvent, lorsqu'ils croient que les nombres calculables sont dénombrables). Quelque chose comme ça:

ENPTM:N->NPTMEComputabe:NCalculable , il faut simplement énumérer tous les NPTM, mais ne compter que ceux qui calculent un certain nombre réel. Mais comment savons-nous qu'il calcule un certain nombre réel?

Et bien non. Imaginez une machine qui imprime immédiatement 1.0, puis arrête d'imprimer et essaie de résoudre une instance du problème de correspondance de courrier . S'il résout le problème, il s'arrête, alors la machine vient de calculer le numéro un. Mais ce problème est indécidable, il peut donc ne jamais s'arrêter et s'il ne s'arrête jamais, il ne calcule jamais un nombre réel. Mais nous ne pouvons pas savoir si cela s'arrêtera jamais, car le problème de l' arrêt est également indécidable! Donc, puisqu'il n'y a aucun moyen de savoir si cette machine particulière, et une infinité d'autres machines, calcule ou non un nombre réel, nous ne pouvons pas construire / définir notre fonction bijective de cette façon.

La manière naïve de définir la bijection échoue, et il n'est pas très difficile de prouver qu'il n'y a aucun moyen de le faire, que ce soit. Comme l'a suggéré Yuval Filmus, la diagonalisation peut être utilisée.


Vous vouliez probablement dire "les nombres calculables ne sont pas énumérables" au lieu de "les nombres calculables ne sont pas dénombrables".
IllidanS4 veut que Monica revienne
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.