无法编写的程序--图灵停机问题

某程序在给定数据下,是否会在有限时间内结束运行。(反证法)

假设可以写出判断程序 HaltChecker

我们编写一个名为HaltChecker判断程序,来判断上述问题。
Boolean HaltChecker(p,d) p 一个为需要判断的程序,d 为所需要的数据。
- 返回true 表示p会在有限时间内结束运行
- 返回false表示p不会在有限时间内结束运行

编写SelfLoop程序

SelfLoop (p){
halts = HaltChecker(p, p);
if(halts) {
while死循环
}
}
- 判断“ 对于程序p 将程序p本身作为数据输入时会不会结束运行 ”
- 如果判断结果是会结束运行,那么SelfLoop就会陷入无限循环
- 如果判断结果是不会结束,那么SelfLoop就会马上结束运行

推导出矛盾

判断SelfLoop(SelfLoop)的运行情况
(1) 假设SelfLoop(SelfLoop)会在有限时间内结束运行
假设SelfLoop(SelfLoop)会在有限时间内结束运行。即 HaltChecker(SelfLoop,SelfLoop)为false的情况,而HaltChecker(SelfLoop,SelfLoop)为false意思是 如果将SelfLoop传入SelfLoop,SelfLoop就不会结束运行 与假设矛盾。
(2)SelfLoop(SelfLoop)陷入无限循环
假设SelfLoop(SelfLoop)陷入无限循环。即 HaltChecker(SelfLoop,SelfLoop)为true的情况,而HaltChecker(SelfLoop,SelfLoop)为true意思是 如果将SelfLoop传入SelfLoop,SelfLoop会结束运行 与假设矛盾。
(1)(2)都矛盾 说明假设能写出HaltChecker就必然产生矛盾

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值