停机问题的理解
来源:互联网 发布:linux文件系统 编辑:程序博客网 时间:2024/04/29 23:42
关于停机问题维基百科给出的定义是:
停机问题(halting problem)是逻辑数学中可计算性理论的一个问题。通俗的说,停机问题就是判断任意一个程序是否会在有限的时间之内结束运行的问题。该问题等价于如下的判定问题:给定一个程序和输入, 程序在输入下是否能够最终停止。
这个问题的结论是一个可以解决停机问题的通用算法是不存在的。问题倒是很好理解,关键在于怎么证明它的结论——很简单,利用两个方法构成一个悖论。
证明如下:
设停机问题有解,即:存在过程H(P, I)可以给出程序P在输入I的情况下是否可停机。假设若P在输入I时可停机,H输出“停机”,反之输出“死循环”(就是一直在运行)。
再设有一个过程K(P)可以给出在某个输入P下K是否可以停机。
伪代码如下:
int H(procedure,Input); // 这里的H函数有两种返回值,死循环(1) 或 停机(0)int K(P){ if (H(P,P) == 1){//如果P死循环 return 0; //这里会停机 }else{//如果P停机 while(1){} // 这里会死循环 }}
现在假设H的输入为K,则H变为H(K,K),K的输入为它自己,即K(K)。
- 假设H(K,K)==1,即如果输入K时程序K一直运行,则返回0,表示K停机,产生矛盾。
- 假设H(K,k)!=1,即如果输入K时程序K停机,则执行死循环,表示K一直运行,产生矛盾。
0 0
- 停机问题的理解
- 停机问题
- 停机问题
- 停机问题
- 停机问题
- 停机问题
- 停机问题
- 停机问题
- 停机问题的定义和证明
- 图灵机停机问题的不可判定性
- 停机问题——感觉很有哲理的问题
- 停机问题、哥德尔定理
- 图灵停机问题
- 图灵停机问题
- 图灵停机问题
- Halting problem(停机问题)
- 史上最牛诗歌:一个停机问题不可判定的证明
- 解答百度上面一个停机问题的疑惑
- Pro Android学习笔记(八九):了解Handler(3):延迟执行小例子
- Bash字符串的操作
- IOS异常处理(转)
- iOS 千分符
- Ubuntu 13.10上用户如何获得root权限,用户如何获得永久root权限,如果配置root登录
- 停机问题的理解
- git权威指南读书笔记(一)
- Spring MVC的自动转换功能 HttpMessageConverter
- 如何有效地控制项目进度——重视细节
- Linux 高性能服务器编程——TCP协议详解
- tair 运行报too many files open
- 多线程中使用CheckForIllegalCrossThreadCalls = false访问窗口
- Java的技术分类
- java数据结构 五(栈)