能否判断一个程序是否是所有实现同样目标的最快程序
2014-02-01 09:44
239 查看
这是一个很好玩的问题,也很有价值。
只可惜,这是不可能的。因为实际上,这等价于一个图灵机停机问题。
假设这个程序能够断定一切程序,那么他也能够判定自己。如果是最快的,返回1,否则返回0。那么可以在程序后增加一个循环,如果判定自已的结果是1,则继续循环,如果是0,立刻跳出循环。这样,就会行成一个悖论。因此,这个程序是不存在的。
这也是哥德尔不完备定理的一个实例。
如果一个问题无法证明,是否可以证明它无法证明,如果还是不行,是否能够证明无法证明本身无法证明。这样就会形成一个逻辑上的无限循环。总存在这样的问题,是永远不能够证明是或是否的。
只可惜,这是不可能的。因为实际上,这等价于一个图灵机停机问题。
假设这个程序能够断定一切程序,那么他也能够判定自己。如果是最快的,返回1,否则返回0。那么可以在程序后增加一个循环,如果判定自已的结果是1,则继续循环,如果是0,立刻跳出循环。这样,就会行成一个悖论。因此,这个程序是不存在的。
这也是哥德尔不完备定理的一个实例。
如果一个问题无法证明,是否可以证明它无法证明,如果还是不行,是否能够证明无法证明本身无法证明。这样就会形成一个逻辑上的无限循环。总存在这样的问题,是永远不能够证明是或是否的。
相关文章推荐
- 一个简单的判断字符串所含字母是否有大写,并将所有字母改为大写的小程序
- java 编写程序实现从控制台接收一个 5 位以上的整数,使用数组来判断该数字 * 是否是回文数。(例如:789987,12344321是回文数)
- C#l练习(用方法来实现:①判断一个给定的整数是否为“质数”。②计算1-100之间的所有质数(素数)的和
- 编写一个程序,用于接收用户输入的数,然后显示从0到该数为止表示的所有字符,询问用户是否愿意再次继续同样的过程
- Delphi 中实现判断某个外部程序是否运行(如果运行则执行一个命令否则执行一个命令)
- zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。 输入 第一行只有一个正整数N(N<=
- Object-C 实现判断一个字符串是否是数字
- C#控制台基础 判断一个类是否实现了指定的接口 IsAssignableFrom
- GCC/LD编译链接潜规则 (第四弹) : ld 会把所有通过-l指定的动态库全部链接进最终的目标程序中, 无论是否真的用到(导致生产环境加载失败)
- 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bccced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中
- 【转】通过文件锁实现,程序开始运行时,先判断文件是否存在,若存在则表明该程序已经在运行了,如果不存在就用open函数创建该文件,程序退出时关闭文件并删除文件
- 判断一个类是否实现了某个接口
- 用递归实现判断一个字符串是否是回文的方法
- 判断正整数m是否为完全数(如果一个正整数m的所有小于m的因子(包括1)加起来正好等于m本身,那么这个数就称为完全数)
- JavaScript实现,判断一个点是否在多边形内
- 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
- 【Java】实现一个根据日期判断星座程序的编写
- Android 中判断一个程序是否为输入法程序
- 43.编写一个程序,判断用户输入的字符是否是数字,若是数字,则输出“a numerical character”
- List的All方法使用问题:我用List1的All方法来确保List1的所有每个数组元素中是否包含Arr1中的任意元素,这个部分很难实现。 因为,没有一个数组中是否包含另一个数组中的任意元素这个功能