确定实数的有限前缀语言

时间:2010-10-18 16:23:39

标签: turing-machines

为什么数字pi的有限前缀的语言可由TM决定,而对于任何实数来说,确定该给定数字的有限前缀的TM是错误的?

1 个答案:

答案 0 :(得分:0)

  

为什么数字pi的有限前缀的语言可由TM

决定

有一种有效的计算程序可以打印出pi数字的有限前缀。 sin(x)的Maclaurin系列是x - x ^ 3/3! + x ^ 5/5! - ...此外,我们知道sin(pi / 2)= 1,所以我们可以设置1 = x - x ^ 3/3! + x ^ 5/5! - ...,从某个地方开始(比如x = 1.5)并找到比其前身增加的x的最大值。然后,将其乘以2并保留前n个数字以获得长度为n的前缀。例如:

f(1.50) < f(1.51) < f(1.52) < f(1.53) < f(1.54) < f(1.55) < f(1.56) < f(1.57)
f(1.59) < f(1.58) < f(1.57)

这告诉我们x = 1.57是pi / 2的最接近的值,并且比我们真正需要的要大一点或稍小一些。我们可以通过检查Maclaurin系列得到cos(x):我们看到cos(1.57)收敛到正数,所以我们知道我们是n个数字小于pi / 2的最大数字。保持计算至少低于你需要的一个级别返回pi的数字,一切都会好起来。

  

虽然说任何实数的TM都决定了给定数字的有限前缀,这是错误的

这是一个实数:0到1之间的实数,当第n个图灵机(由所有TM的UTM编码的词典排序确定)时,其十进制表示为第n个数字设置为1空语。这是一个明确定义的实数 - 每个十进制数字都是0或1 - 然而如果我们有一个TM可以找到这个实数的任何有限前缀,我们可以回答这个问题“这TM是否接受空语言?”对于任何TM:

  • 以UTM编码对TM进行编码
  • 按字典顺序枚举所有字符串并计算我们找到的TM的有效UTM编码数
  • 当我们计算TM时我们想要答案
  • 时暂停计算
  • 要求一个长度等于我们刚刚得到的计数的前缀
  • 检查前缀的最后一位数字,以查看我们的TM是否接受空语言

这是一个矛盾,因为TM是否接受空语是不可判定的。因此,我们假设我们可以计算这个实数的有限前缀是不正确的。

对于涉及TM的任何不可判定的问题(莱斯定理和对角化论证保证TM的UTM编码的大多数语言都是),你得到一个无法计算的唯一实数。实际上,可计算的实数是可数的,就像图灵机一样,但与语言和实数不同,这是不可数的。