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.
computability
turing-machines
enumeration
Michiel Borkent
la source
la source
Réponses:
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.n n
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.
la source
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 imprime3.14
puis 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:
1
, puis s'arrête. Il calcule le numéro 1.1.0
, puis s'arrête. Il calcule également le numéro 1.1.0000000
et continue à imprimer des zéros pour toujours. Celui-ci calcule également le numéro 1.3.14
, puis s'arrête. Il calcule le nombre 3.14.3.14159
-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:
123123123
puis continue d'imprimer la séquence123
pour toujours. Ne calcule pas un nombre parce que cette séquence infinie ne représente aucun nombre réel.1.0.0
puis s'arrête. Ce n'est pas parce que cette séquence finie n'est pas bien formée.....-..---
puis s'arrête. Ce n'est pas non plus parce que ce n'est pas un nombre réel bien formé.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.
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:
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.
la source