挖循环窥探者 — Geoffrey K. Pullum


挖循环窥探者 — Geoffrey K. Pullum


证明停止问题是不可判定的

杰弗里·K·基奇
(爱丁堡大学哲学、心理学和语言科学学院

没有通用的错误检查程序可以做到。
现在,我不会只是断言这一点,我会向你证明这一点。
我会证明,虽然你可能会工作到倒下,
你无法判断计算是否会停止。
想象一下我们有一个名为
对于指定的输入,您可以看到
是否指定源代码及其所有错误,
定义最终停止的例程。
您在程序中输入合适的数据,
开始工作,过了一会儿
(在有限的计算时间内)正确推断
是否发生无限循环行为。
如果不会出现循环,那么 打印出“好”。
这意味着该输入的工作将停止,正如它应该的那样。
但如果它检测到不可停止的循环,
然后 报告“糟糕!” ——这意味着你已经陷入困境了。
嗯,事实是这样的 不可能是,
因为如果你写了它并把它交给我,
我可以用它来设置逻辑绑定
那会粉碎你的理智并扰乱你的思想。
这是我将使用的技巧——而且很简单。
我将定义一个过程,我将调用它 ,
将会使用 对停止成功的预测
挑起可怕的逻辑混乱。
对于指定的程序,比如说 A一件用品,
该程序的第一步称为 我设计
是为了找出 什么是正确的说法
的循环行为 A 运行 A
如果 的答案是“不好!”, 会突然停止。
然而在其他方面, 将会回到顶部,
然后重新开始,无限循环,
直到宇宙死亡并变得冰冻和黑色。
这个程序叫做 不会留在货架上;
我会要求它预测其运行情况 本身
当它读取自己的源代码时,它会做什么?
什么是循环行为 运行
如果 警告无限循环, 会退出;
然而 应该说的是实话吧!
而如果 那就退出吧 应该说“好”。
这使得 开始循环! ( 否认会。)
不管怎样 可能会表演, 将舀它:
用途 的输出 看起来很愚蠢。
任何 说,它无法预测 :
错的时候就是对的,真的时候就是假的!
我创造了一个悖论,尽可能简洁——
并简单地使用你的假设
当你提出 你踏入了网罗;
你的假设已经把你带进了我的巢穴。
那么这个论点可能会走向何方呢?
我不必告诉你; 我相信你一定知道。
我们已经证明不可能有
一个像神话一样的过程
你永远找不到通用的机械手段
用于预测计算机器的行为;
这是无法完成的事情。 所以我们用户
必须找到我们自己的bug。 我们的电脑是失败者!


这个诗意证明的早期版本发表于 数学杂志 (73, 不。 4, 319-320)于 2000 年 10 月。但是,尽管评审过程花费了近一年的时间,但还是出现了一个未被注意到的错误。 我感谢 Philip Wadler(爱丁堡大学信息学)和 Larry Moss(印第安纳大学数学)帮助开发了这个修正版本。

感谢 Anuj Dawar 的善意,我非常荣幸和高兴地在 2012 年 6 月在剑桥大学举行的纪念艾伦·图灵的会议上大声朗读了这篇文章。(请注意,用英国南部标准英语大声朗读它效果最好:第三节前两行的韵律要求使用非rhotic方言。)然而,该会议的一位与会者,巴黎综合理工学院的达米亚诺·马扎(Damiano Mazza),很久以后指出我的修订版本还有另一个小错误:它提到了证明是 减少,当它确实不是时(这是通过假设某些东西来证明矛盾结果的证明)。 所以我在 2022 年 4 月 7 日修改了一行。(我试图安慰自己这段粗心的历史,但没有成功,因为我认为图灵 1936 年的原始论文也有一些错误;他在 1937 年发表了一个简短的更正。)经我许可,更正后的版本已在大卫·利本-诺厄尔(David Liben-Nowell)编写的精美教科书中重印,
连接离散数学和计算机科学
(剑桥大学出版社,2022 年),第 14 页。 196.

我感谢已故的苏斯博士的风格,感谢艾伦图灵的内容开创性工作,感谢马丁戴维斯对其进行了易于理解的简化演示,并感谢菲利普瓦德勒、拉里莫斯和达米亚诺马扎的帮助。

版权所有 © 2008、2012、2022,作者:Geoffrey K. Pullum。 特此允许在任何媒体上复制或分发本作品,用于与计算机科学、数学或逻辑教学相关的非商业、教育目的,前提是我已获悉并包含上述版权归属。

Leave a Reply

Your email address will not be published. Required fields are marked *

近期新闻​

编辑精选​