[逻辑学]意外绞刑悖论(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 ...
随机推荐
- markdown 显示图片的三种方式
插入网络图片 插入本地图片 base64 图片(data:image/png;base64,iVBORw0KG........) ps:base64编码的图片可以通过站长工具编码 https://to ...
- HttpURLConnection getInputStream 400异常的解决
判断getResponseCode,当返回不是HttpURLConnection.HTTP_OK, HttpURLConnection.HTTP_CREATED, HttpURLConnection. ...
- 25 | MySQL是怎么保证高可用的?
在上一篇文章中,我和你介绍了binlog的基本内容,在一个主备关系中,每个备库接收主库的binlog并执行. 正常情况下,只要主库执行更新生成的所有binlog,都可以传到备库并被正确地执行,备库就能 ...
- selenium+chromeDriver配合使用(运行js脚本)
在python中调用selenium,访问百度,并运行js脚本爬取内容 python入口程序 from selenium import webdriver import time with open( ...
- Bacteria (Gym - 101911C)
2018-2019 ACM-ICPC, NEERC, Southern Subregional Contest, Qualification Stage Bacteria Gym - 101911C ...
- nginx的跨域设置
官方文档 中说,只有当响应状态码为以下几种类型中之一时,add_header 才会生效.如果需要 add_header 在所有情况下都生效,可以在后面加上 always 参数即可解决. Adds th ...
- 【原】Python基础-循环语句
x = 1while x <= 10: print(x) x += 1 password = ""while password != "3213554": ...
- synchronized是什么,用法及原理
文章转Hollis博客 大家可以关注下,很多技术类型的文章 在再有人问你Java内存模型是什么,就把这篇文章发给他.中我们曾经介绍过,Java语言为了解决并发编程中存在的原子性.可见性和有序性问题,提 ...
- javaWeb项目部署到阿里云服务器
1.云服务器中配置了jdk+eclipse+tomcat 2.将项目导出War到安装的Tomcat的webapps文件夹中: 右击项目->Export->WarFile->Desti ...
- selinux 开启和关闭
对于新手来说,linux的selinux困扰了一大批学员,开启后,导致文件权限修改不了等问题,下面就是关闭设置setlinux的方法 查看SELinux状态: 1./usr/sbin/sestatus ...