Language agnostic 对于内存有限的计算机来说,停止真的是不可判定的吗?

Language agnostic 对于内存有限的计算机来说,停止真的是不可判定的吗?,language-agnostic,halting-problem,Language Agnostic,Halting Problem,图灵证明了在图灵机器上停止问题是不可判定的。然而,真正的计算机实际上并不是图灵完全的:如果它们有无限量的内存,它们会是图灵完全的 考虑到计算机内存有限,因此还没有完全实现,停止问题是否变得可以判定?我的直觉告诉我,是的,但是解决这个受限暂停问题的程序的时间和空间复杂性可能与目标计算机的内存大小成指数关系。对于具有有限磁带的图灵机,暂停问题可以通过具有无限磁带的图灵机来解决。无限图灵机所要做的就是枚举有限图灵机的每一个可能状态(虽然可能状态的数量非常多,但数量有限),并标记图灵机在运行程序的过程中

图灵证明了在图灵机器上停止问题是不可判定的。然而,真正的计算机实际上并不是图灵完全的:如果它们有无限量的内存,它们会是图灵完全的


考虑到计算机内存有限,因此还没有完全实现,停止问题是否变得可以判定?我的直觉告诉我,是的,但是解决这个受限暂停问题的程序的时间和空间复杂性可能与目标计算机的内存大小成指数关系。

对于具有有限磁带的图灵机,暂停问题可以通过具有无限磁带的图灵机来解决。无限图灵机所要做的就是枚举有限图灵机的每一个可能状态(虽然可能状态的数量非常多,但数量有限),并标记图灵机在运行程序的过程中访问了哪些状态。最终,将发生两件事中的一件:

  • 有限图灵机将停止
  • 有限图灵机将重新访问一个状态。如果它重新访问一个状态,那么您就知道存在一个无限循环,因为机器是确定性的,因此下一个状态完全由前一个状态决定。如果存在
    n
    状态,则机器保证在
    n+1
    步骤中重新访问其中一个状态

  • 谢谢你的回答!作为后续行动,这是否意味着我们在某些问题上过于轻易地放弃了“停止问题”的旗帜?例如,检测未初始化的变量。我不完全确定,但可能不确定。消耗1GB内存的程序有2^(10^9)个状态。宇宙中没有足够的原子可以用我为这样一个程序描述的方法来解决停顿问题(假设每一位内存占用一个原子)。然而,我在可计算性理论和相关学科方面的经验有限。如果只考虑当前范围内的变量(如函数),这个数字可能会减少。然而,它可能仍然是一个需要探索的巨大状态空间。我认为您不需要无限磁带。看见您只需要足够的内存来模拟机器,并在内存中保留一个额外的完整状态。