解法:MRDP定理:丢番图集合恰为递归可枚举集合(1970年)
通俗地说
设想要写一个万能检测程序,只看任意其他程序的代码,就能在不真的把它跑到永远的情况下,提前正确预测这个程序最终会停机还是会永远运行下去。阿兰·图灵在1936年用一个巧妙的自指技巧证明,不可能存在这样一个对所有程序都通用的万能检测程序。
然而,“在自己代码上会停机的程序”这个集合仍然是可枚举的:你总能通过真的运行这个程序并等它停下来,来确认“是的,它会停机”,但你永远无法在任何固定的时间内确定“不,它永远不会停机”。这是一个递归可枚举但不可判定集合的具体例子——而根据MRDP定理,它因此必定已经是丢番图的。
详细分析
阿兰·图灵在其1936年关于可计算数的奠基性论文中,定义了一个精确的计算数学模型(图灵机),并用一个对角线式的自指论证证明了停机问题是不可判定的:集合 (即以自身代码作为输入时会停机的程序代码 )不存在能对每个 都正确判定成员关系的算法。
然而 仍然是递归可枚举的:一个算法可以在输入 上逐步模拟程序 ,一旦模拟停机就输出 ;对于 ,它只是永远不会终止,因此它能确认成员关系,却永远无法确定地否定它。 是r.e.但不可判定集合的典型例子,基本上每一个经典的不可判定性结果都以某种方式归约到它。
根据上一步证明的MRDP定理,递归可枚举的 本身必定是丢番图的:存在一个多项式 ,使得 。这恰好为最后一步所需要的归约铺平了道路,以便把图灵的不可判定性结果转移到希尔伯特第十问题上。
- 可判定(递归)集合
- 存在一个算法,对每个输入都会停机,并根据成员关系正确输出“是”或“否”的集合;这严格强于仅仅是递归可枚举。
- 停机问题
- 给定程序在给定输入上是否会停机的问题;图灵在1936年证明,不存在单一算法能对所有程序和输入都正确回答这个问题。