在进行考试复习时,我无法回答 Sipser 的“计算理论导论”一书中的以下问题。不幸的是,书中没有解决这个问题。
解释为什么以下不是合法的图灵机。
M = {
输入是关于变量 x1, ..., xn 的多项式 p
- 尝试所有可能的 x1, ..., xn 设置为整数值
- 在所有这些设置上评估 p
- 如果这些设置中的任何一个评估为 0,则接受;否则拒绝。}
这真让我抓狂!我怀疑这是因为整数集是无限的?这是否超出了字母表的允许大小?
在进行考试复习时,我无法回答 Sipser 的“计算理论导论”一书中的以下问题。不幸的是,书中没有解决这个问题。
解释为什么以下不是合法的图灵机。
M = {
输入是关于变量 x1, ..., xn 的多项式 p
这真让我抓狂!我怀疑这是因为整数集是无限的?这是否超出了字母表的允许大小?
尽管这是描述图灵机的一种非常非正式的方式,但我会说问题是以下之一:
otherwise reject
- 我同意 Welbog 的观点。由于您有一组可数无限的可能设置,机器永远无法知道它评估为 0 的设置是否仍然存在,并且如果找不到任何设置,它将永远循环 - 只有在遇到这样的设置时,机器可能会停止。最后一条语句是无用的,并且永远不会是真的,除非你当然将机器限制为一组有限的整数。
代码顺序:我会将这个伪代码读作“首先写下所有可能的设置,然后对每个设置评估 p”,这就是你的问题:同样,通过拥有无限的可能设置,即使第一部分也不会终止,因为从来没有最后一个设置可以写下来并继续下一步。在这种情况下,机器甚至永远不会说“没有 0 设置”,但它甚至永远无法开始评估以找到一个。这也可以通过限制整数集来解决。
无论如何,我认为问题不在于字母的大小。您不会使用无限字母表,因为您的整数可以用十进制/二进制/等形式编写,而那些仅使用(非常)有限的字母表。
我对图灵机有点生疏,但我相信你的推理是正确的,即整数集是无限的,因此你不能全部计算出来。我不确定如何从理论上证明这一点。
但是,了解图灵机的最简单方法是记住“任何真实计算机可以计算的东西,图灵机也可以计算。”。因此,如果您可以编写一个给定多项式的程序可以解决您的 3 个问题,那么您将能够找到一台图灵机也可以。
我认为问题出在最后一部分:otherwise reject.
根据可数集基础,可数集上的任何向量空间本身都是可数的。在您的情况下,您在 size 的整数上有一个向量空间n
,这是可数的。所以你的整数集是可数的,因此可以尝试它们的每一种组合。(也就是说不漏掉任何组合。)
此外,计算p
给定输入集的结果也是可能的。
当评估为 0 时进入接受状态p
也是可能的。
但是,由于输入向量的数量是无限的,因此您永远不能拒绝输入。因此,没有图灵机可以遵循问题中定义的所有规则。没有最后一条规则,这是可能的。