为什么可计算的数字(按图灵的意义)是可枚举的?它必须非常明显,但是我目前还没有看到它。
为什么可计算的数字(按图灵的意义)是可枚举的?它必须非常明显,但是我目前还没有看到它。
Answers:
我假设您对可计算数字的定义是这样的:有一台图灵机,在输入,该数字的第位停止。ñ
假设对产生可计算数字的图灵机进行递归枚举。您可以使用对角化来得出新的可计算数字,该数字不是此递归枚举的一部分。
试图通过枚举图灵机来枚举可计算的数字,但是并不是每个图灵机都对应一个可计算的数,并且通常决定图灵机是否暂停所有输入(更不用说输出0或1)了。但是,可以通过使用时钟图灵机来枚举所有有效的可计算数字,例如运行时间是多项式的那些。
如果用可枚举的方式表示存在自然数(即可数)的双射,则不,可计算的数不可枚举。
让我们更精确地定义问题:“数字打印图灵机(NPTM)”是一种图灵机,对于每个状态转换,它可能不打印任何内容,或者可以打印任何十进制数字,减号或句点。这足以打印实数的十进制表示形式。
让我们将可计算的实数定义为可以用足够长的时间通过NPTM从空磁带开始以任意长表示形式打印的任何实数。还要说一个数字是由给定的NPTM计算的,如果它在打印格式正确的实数后暂停(在这种情况下,该数字具有有限的十进制表示),或者在有限的时间内将打印格式正确的数字带有小数点,并且在给定更多时间的情况下,通过打印更多数字来提高数字的精度。
以后需要这种条件是因为,例如,如果有一台机器打印出某个数字的无限序列,例如1111111111111111111
...,则不能说它在计算任何实数,因为实数在右边仅具有无限表示形式小数点后半部分。另一方面,如果机器先打印3.14
然后停止打印,但是从不停止,则不能仅仅因为数字的精度没有增加就说正在计算任何实数,因此,该特定机器将不会构造它进一步。
这些是确实计算一些数字的NPTM的示例。NPTM:
1
,然后暂停。它计算数字1。1.0
,然后暂停。它还计算数字1。1.0000000
,并永远打印零。这个也计算数字1。3.14
,然后暂停。它计算数字3.14。3.14159
,并永远打印数字。这个计算。π-42.
,然后停止。它计算数字-42。这些是NPTM的示例,不计算任何数字。NPTM:
123123123
,然后继续123
永远打印序列。不计算数字,因为此无限序列不表示任何实数。1.0.0
,然后暂停。不是因为此有限序列格式不正确。....-..---
,然后暂停。不是因为这也不是一个格式正确的实数。3.14
,不停止,但也不打印任何其他内容。不计算数字是因为其精度不会随时间增加。你有主意。然后,我们有两类NPTM:那些计算某些实数的NPTM和那些不计算某些实数的NPTM。
寻找可计算数字的枚举的问题在于,即使NPTM本身是可数的,我们也无法将一种NPTM与另一种进行区分的过程。
为了“证明”可计算数字是可数的,可能会想从NPTM的计数中定义这样的功能(这是人们在相信可计算数字可数时经常做的事情)。像这样:
好吧,我们没有。考虑一台立即打印1.0
然后停止打印并继续尝试解决Post对应问题实例的机器。如果解决了问题,它会暂停,然后机器仅计算出第一位。但是这个问题是无法确定的,因此它可能永远不会停止,并且如果它永远不会停止,它就永远不会计算出实数。但是我们不知道它是否会停止,因为停止问题也是无法确定的!因此,由于无法知道此特定机器以及无限多其他机器是否计算或不计算某些实数,因此无法以这种方式构建/定义双射函数。
定义双射的幼稚方法失败了,并且很难证明没有办法做到这一点。正如Yuval Filmus建议的那样,可以使用对角线化。