
“这个世界上没有绝对正确的事,这句话绝对正确”最近看到的一句很值得辩思的一句话,还有很多有意思的悖论。
- 时空穿梭悖论
穿越过去:如果你乘坐时空机回到过去在你祖父祖母相遇之前杀手你祖父会发生什么事?假如你穿越的过去,亲手杀了你的爷爷,那么就不回有你爹的出生,自然也就不会有你的出生,那么没有你,又何来前面说的穿越杀手你爷爷的事情。
预见未来:某人到达未来,得知将发生不幸结果A。他在现实做出了避免导致结果的行动,发生结果B。那么结果A在未来根本没有发生,他就不可能得知结果A。(即A与B不可能相遇的悖论)
- 匹诺曹的说谎悖论
看过《十万个冷笑话》的都应该知道,匹诺曹只要一说谎鼻子就会变长。现在问题来了,如果匹诺曹说:“我的鼻子马上就会变长。” 结果会怎样?
- 理发师悖论
- 你猜悖论
例如,如果有一天你的女朋友霸道的拿了你的钱包,你问她要,她说:“你猜我给不给你,猜对了就给你”,如果你猜:“你不会给我”,你猜她会给你还是不给你?给你说明你猜错了,那么就不应该给你;不给你说明你猜对了,那么他就应该给你,给你说明又不对了。
- 柏拉图-苏格拉底悖论
柏拉图说:“苏格拉底的下句话是错误的”。
苏格拉底说:“柏拉图说得对。”
不论你假定哪个句子是真的,另一个句子都会与之矛盾。两个句子都不是自我诠释,但作为一个整体,同样构成了说谎者悖论。
最后在来一个猿猿们才能看的懂的。
- 停机问题
现在我们来证明这个问题。我们先来假设我们某一天真做出了这么一个牛逼的万能算法(就叫做god _algo吧),你这样给他一段程序,在给它一段输入,它就能告诉你这个输入会不会停机,我们来写一下这个算法吧:
bool God_algo(char * program, char input){
if(<program> halts on <input>){
return true;
}
return false;
}
我们假设 if 的判断语句里面是人类天才思考的结晶,它能够像上帝一样洞察一切程序的宿命。现在我们从 God_algo 出发导出一个新的算法:
bool Satan_algo( char* program){
if( God_algo(program,program)){
while(1); // loop forever
return false; // can never get here;
} else {
return true;
}
}
邪恶的事件发生了。当我们把这个算法运用到它自身时,会发生什么呢?
Satan_algo(Satan_algo);
我们来分析下这行程序的简单调用:
显然, Satan_algo(Satan_algo) 要么能够运行结束返回(停机),要么不能返回(loop forever)。
如果他能够结束,那么 Satan_algo 算法里面那个 if 判断就会成立(应为 God_algo(Satan_algo,Satan_algo) 会返回 true),从而程序进入了那个无穷循环的 if 分支,于是 Satan_algo(Satan_algo) 调用久拥有不会返回(停机)了。
而如果 Satan_algo(Satan_algo) 不能结束(停机)呢,则 if 判断不会成立,从而进入另一个分支并成功返回 true ,即 Satan_algo(Satan_algo) 又能结束(停机)了。
由此得出悖论:
Satan_algo(Satan_algo) 能停机 =》它不能停机
Satan_algo(Satan_algo) 不能停机 =》它能停机
所以命题不成立。祖师爷,收下我的膝盖吧!