[逻辑学]意外绞刑悖论(Hangman paradox)(又称意外考试悖论)
绞刑
在审讯中一位囚徒被法官判处死刑。判决如下:“你下周将会被处决,但哪天处决对你来说是一个惊喜。”囚徒因此作出如下推理:“假如处决日是周日,那么在周六夜晚降临后,我将提前知道我周日会被处决,那样的话处决就不再是惊喜,所以周日我不会被处决。排除了周日之后,如果周五夜晚降临后我还没被处决,则我将提前知道我周六会被处决,所以我周六也不会被处决。以此类推。因此,处决是不会发生的。”
然而,这个囚徒的愉快心情保持到了星期二。他从美梦中醒来,被押往刑场——对他来说非常意外。
推广1
假设教师爱丽丝只说过考试会在下周,但没有说考试是惊喜。
午餐时她的学生瑞尼克路过教师办公室,听到老师对同事说,“下周我将给我们班上的同学考试,而考试日期对他们来说是一个惊喜”。老师并没有意识到瑞尼克在听她说话。根据关于考试日期的信息,瑞尼克能得出什么结论?
推广2
在推广一的情况下。事情变得更复杂了。因为午间休息之后,瑞尼克对老师说,“我听到你说下周考试的日期是一个惊喜”。老师确认了这一点。然而那天晚些时候,老师在停车处再次遇到了办公室的同事。老师告诉同事瑞尼克听到了他们之前的对话,并说到:“但是考试日期仍是惊喜!”很不幸,瑞尼克再次听到了这句话。现在关于考试日期的信息,瑞尼克能得出什么结论?
个人想法
个人感觉这个悖论与一般传统的悖论不同,有一些摸棱两可的文字游戏。
从推广一我们可以轻松得出结论,考试日期不会在周五(即最后一天,如果老师说的下周是工作日周一到周五的话)。
在推广一下的信息链如下:
- 老师对班上同学说:“下周将举行考试”。宣布了这个事实之后,班上所有同学知道下周要考试,老师也知道班上同学知道下周要考试。
- 老师对同事说:“考试日期是一个惊喜”。宣布了这个事实之后,瑞尼克可以推断出考试不在周五,而老师不知道瑞尼克知道这个事实。
- 由于没有新的宣告出现,也没有新的信息交流。双方掌握的事实到这里就结束了,瑞尼克只能知道考试不在周五。
在推广二的信息链中,新增信息如下:
- 瑞尼克对老师说:“我听到你说下周考试的日期是一个惊喜”。此时,老师知道了一个新的事实,即瑞尼克知道下周考试不是在周五。
- 老师对同事说:“但是考试日期仍是惊喜”。同推广一可知,瑞尼克可以通过此宣告推断出考试不在周四,而同样的老师不知道瑞尼克获得了这个新的信息。
- 由于没有新的宣告出现,也没有新的信息交流。双方掌握的事实到这里就结束了,瑞尼克只能知道考试不在周五和周四。
对比原版的题目,法官对囚徒直接作出宣布:“下周你将被处死,而处死日期对你来说是一个惊喜。”
从囚徒的视角中,他得出如下信息链:
- 法官宣布事实“囚徒下周会被处死”
- 法官宣布事实“处死日期是惊喜”
- 囚徒作出推断并获得新的事实“处死日期不会是下周最后一天即周日”
- 法官知道上述事实,即法官知道“囚徒知道处死日期不会是周日”
- 根据事实“处死日期是惊喜”
- 囚徒作出推断并获得新的事实“处死日期不会是周六”
- 法官知道上述事实,即法官知道“囚徒知道处死日期不会是周日和周六”
- ......
- 囚徒作出推断并获得新的事实“处死日期不会是下周的任何一天”
- 若该事实成立,则与最开始“囚徒下周会被处死”矛盾
在通常的理解中,上述蓝色的信息,法官是确实知道的,因为“处死日期是惊喜”是法官当面告诉囚徒的。所以囚徒当然会认为,所有的信息双方都是互相知道的。这样信息链才能成立。而关键就在于“处死日期”这四个字,当法官第一次宣布“处死日期时惊喜”时,此时的处死日期可能存在与周一到周日七天中的一天,但是在根据事实作出正确推断之后,处死日期只可能存在于周一到周六六天中的一天。第二行和第五行中的“处死日期”不是同一件事物,事物发生了改变,命题是否依然为真也就随即发生了改变。信息链就有可能不成立了。
有很多为了解决该悖论的论文,但并没有被完全认同的解决方案,以上只是个人看法。
[逻辑学]意外绞刑悖论(Hangman paradox)(又称意外考试悖论)的更多相关文章
- 意外断电数据库无法启动牵扯到异步IO的参数设置
一客户机房新装的UPS不太稳定,好几次意外断电,第3次意外断电之后问题终于来了, 数据库起不来了-- 数据库的硬件环境是一台IBM DS5020存储,2台IBM X3850 X5 软件环境是Linux ...
- Birthday Paradox
Birthday Paradox Sometimes some mathematical results are hard to believe. One of the common problems ...
- MySQL redo log 与 binlog 的区别
MySQL redo log 与 binlog 的区别 什么是redo log 什么是binlog redo log与binlog的区别 1. 什么是redo log? redo log又称重做日志文 ...
- Android Service提高
我们从以下几个方面来了解Service IntentService的使用 Service与Thread的区别 Service生命周期 前台服务 服务资源被系统以外回收处理办法 不被销毁的服务 Inte ...
- 越狱Season 1-Episode 8: The Old Head
Season 1, Episode 8: The Old Head -Michael: 17 days from now they strap my brother to an electric ch ...
- 【转载】TCP保活(TCP keepalive)
下图是我遇到tcp keepalive的例子: 以下为转载: TCP保活的缘起 双方建立交互的连接,但是并不是一直存在数据交互,有些连接会在数据交互完毕后,主动释放连接,而有些不会,那么在长时间无数据 ...
- 网络编程(学习整理)---2--(Udp)实现简单的控制台聊天室
1.UDP协议: 总结一下,今天学习的一点知识点! UDP也是一种通信协议,常被用来与TCP协议作比较!我们知道,在发送数据包的时候使用TCP协议比UDP协议安全,那么到底安全在哪里呢?怎么理解呢! ...
- apscheduler的使用
最近一个程序要用到后台定时任务,看了看python后台任务,一般2个选择,一个是apscheduler,一个celery.apscheduler比较直观简单一点,就选说说这个库吧.网上一搜索,晕死,好 ...
- ASP.NET Core 四种释放 IDisposable 对象的方法
本文翻译自<Four ways to dispose IDisposables in ASP.NET Core>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! IDispos ...
随机推荐
- [SCSS] SASS dynamic class properties
@mixin generateModifers($property) { #{$property}: $padding; &-large { #{$property}: $padding-la ...
- 将Eclipse,MyEclipse等编辑器的项目管理框颜色改为护眼豆沙绿的方法
转载链接:https://blog.csdn.net/caibaoH/article/details/77005977
- vue自定义弹框
vue 全局自定义简单弹框 https://www.jianshu.com/p/1307329aa09e https://www.cnblogs.com/crazycode2/p/7907905.ht ...
- /etc/sudoers
Defaults !visiblepw Defaults always_set_home Defaults match_group_by_gid Defaults always_query_group ...
- ELF格式说明
ELF file header (ELF文件头) /* The ELF file header. This appears at the start of every ELF file. */ #de ...
- $.extend和$.fn.extend详解
一.定义 $.extend()属于j全局的Query对象,用于将一个或多个对象合并到目标对象上: $.fn.extend()属于jQuery的原型对象,用于在jQuery原型上扩展实例属性和方法. 二 ...
- nginx location rewrite 禁止访问某个目录
Location 指令,是用来为匹配的 URI 进行配置 http://www.baidu.com/test/index.php?a=1&b=ture 这里面/test/index.php ...
- 微信小程序 wxParse插件显示视频
修改wxParse/html2json.js 文件 ,在 html2json(html, bindName) 方法里 var node = { node: 'element', tag: tag, } ...
- Java核心复习——线程池ThreadPoolExecutor源码分析
一.线程池的介绍 线程池一种性能优化的重要手段.优化点在于创建线程和销毁线程会带来资源和时间上的消耗,而且线程池可以对线程进行管理,则可以减少这种损耗. 使用线程池的好处如下: 降低资源的消耗 提高响 ...
- Java核心复习—— ThreadLocal源码分析
ThreadLocal,叫做线程本地存储,也可以叫做线程本地变量.ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量. 一.如何使用 class Acce ...