100囚犯问题、100囚犯问题加强版与选择公理(下)

百囚徒问题(100 prisoners problem) 该问题由丹麦计算机科学家Peter Bro Miltersen于2003年首次提出。 问题描述 在监狱中有100名囚犯,被编号为1-100号。典狱长决定给囚犯们一次特赦的机会,条件是通过一项挑战。在一个房间中放着一个有100个抽屉的橱柜,里面随机放着与囚犯编号对应的1-100的号码牌。挑战开始后,每个囚犯依次进入该房间,打开不超过半数的抽屉,并从中找到与自己对应的号码则为成功,每名囚犯出去时该橱柜... 阅读详情

    无穷个囚犯面向数轴的正方向依次就座,第i个囚犯坐在数轴上坐标为i的地方,他可以看见所有坐标大于i的囚犯头顶上的帽子。看守给每个囚犯戴上黑色或白色的帽子,然后依次叫每个囚犯猜测自己头上的帽子颜色,猜对了的予以释放。另外一点和原来不同的是,囚犯们不能听到其他人的猜测。另外注意到,由于每个人前面都有无穷多个人,因此囚犯们无法通过数他前面的人数来判断出自己的位置,于是我们不得不加上一句:每个人都知道他后面有多少人(即他是第几个被问的)。同样地,事先所有囚犯可以商量出一个策略。你认为这下囚犯们还有什么好办法没?
    这下囚犯已经不能通过自己的猜测来通风报信了,似乎每个人都只能瞎猜,任何人都无法保证自己能猜对。你相信吗,居然有这样的策略,它可以保证除了有限个囚犯之外,其他囚犯全部释放!
    考虑所有可能的颜色序列(你可以简单地想像成01串)。我们说两个颜色序列“无穷远相等”,如果经过了有限多项之后,余下的无穷多项完全相同(即存在某个数x,使得两个串在各自的第x位后面完全重合)。这种关系显然满足自反性、对称性和传递性,是一种等价关系。因此,按照这种有限位后对应相等的关系,我们可以把所有可能的颜色序列划分为一个个等价类。它们的交集为空(两个等价类如果有交集,由传递性它们立即并成了一个更大的等价类),并集为全集(若某序列不属于任何等价类,则它自己就是一个新的等价类),是全集的一个划分。你能想象出一个等价类大致是什么样子的吗?假如把同一个等价类里的所有序列对齐并排放在一起,你从前往后走过去的时候会发现这些序列“越来越相像”。你走得越远,你会发现越来越多的序列开始变得互相重合;当你走到无穷远时,所有的序列都变成一个样了。
    囚犯们事先在每一个等价类中选一个代表元,然后把所有等价类的代表元背下来。到时候,每个人都能够看到他前面无穷多个人的帽子颜色,并且知道他自己在整个序列的位置,于是能立即判断出他们现在所处的颜色序列在哪个等价类里。接下来,他们只需要按照事先背好的代表元来猜就行了。由“无穷远相等”的定义,经过有限次猜测后最终这个代表元会和他们所处的序列重合,于是除了前面有限多个人以外,以后无穷多个人都可以保证猜对。

    你是否觉得这种“策略”很不合理,虽然从逻辑上看每一步推理都是无懈可击的?有人认为,这是选择公理带来的悖论。选择公理是说,给你一系列的集合(可能有无穷多个),那么我们总可以在每一个集合里取出一个元素来。这并不是显然正确的。你不可以依次考虑每个集合,从里面随便取出一个元素来,因为集合个数有可能无穷多个(甚至不可数),这样的操作将永无止境,不允许出现在数学推理过程中。我们需要定义一套系统,使得它对于给定的每一个集合都适用,这样我们就可以“一下子”处理完所有的集合。换句话说,对于一组数量任意多的集合,我们需要定义一个函数f,使得对其中任一集合S,f(S)为S里的一个元素。我们称函数f为选择函数。例如,给出自然数集的所有子集,选择函数f可以定义为“集合中的最小元素”;给出实数集的所有有限长的区间,则选择函数f可以定义为“区间的中点”。但对于某些情况,目前还没有办法用之前已有的公理系统定义出合适的选择函数。比如,目前仍然不清楚,对于实数集的所有非空子集是否存在一个选择函数。但选择函数的存在是很多数学推理的前提假设。因此,我们有必要承认选择公理,构成新的公理体系(即ZFC公理体系)。于是在今后的数学推理中,我们可以假设存在这样一个超级选择函数f,它就是专门用来干这破事的。承认选择公理有可能推出一些与生活经验背道而驰的结论,最著名的就是Banach-Tarski悖论:你可以把一个三维球体分成有限多块,然后拼接组合成两个和原来一样大的球体。上面所提到的100囚犯问题加强版则是选择公理带来的另一个悖论。

参考资料:http://cornellmath.wordpress.com/2007/09/13/the-axiom-of-choice-is-wrong (墙就是强)

目前有100名囚犯让他们依次站成一排国王命令手下先干掉全部奇数位置处的人。剩下的人,又从新按位置1开始,再次干掉全部奇数位置处的人,依此类推,直到最后剩下一个人为止,剩下的这个人为幸存者。 阅读详情

相关推荐

prisoners-dilemma:囚徒困境游戏,用Java和Scala练习

囚徒困境 囚徒困境游戏,用Java和Scala练习。 游戏的目的是尽可能少地入狱,这取决于您对警察的回答和其他囚犯的回答。 更多关于囚徒困境本身的信息可以在找到。 实施囚徒 用户必须只实现一个类,它是Prisoner子类,并实现它们的抽象方法giveAnswer和notifyPoliceResponse 。 可以使用 Java 或 Scala。 giveAnswer方法将在每次迭代中告诉警察囚犯的答案(在游戏中可能并且应该不同)。 警方在得到两名囚犯的答复后,会将判刑通知每人。 这些句子可以是: FREE 。 这个囚犯说话了,但另一个没有。 他自由了。 MINOR 。 两人都没有说话,所以两人都被判轻刑(1年监禁)。 MEDIUM 。 两人都交谈过,所以这两个句子都是中等的(5年)。 MAJOR 。 这个囚犯没有说话,但另一个背叛了他。 最高刑期为 10 年。 例子 有两个示例

UyHiP趣题:100囚犯之黑白手套

<br />    上个月的 UyHiP 趣题非常妙,个人认为是近几个月里最漂亮的一道谜题了。<br />     典狱长要和 100 个囚犯玩这么一个游戏。典狱长给每个囚犯发两个手套,一个黑色的,一个白色的。之后,每个囚犯的额头上都会写上一个实数,所有这 100 个实数互不相同。每个囚犯都能看到其他 99 个囚犯前额上所写的数,但不能看到自己的数。接下来,每个囚犯必须独立地决定把哪个手套戴在哪只手上。等到所有囚犯都戴好了手套,典狱长会把他们按照前额上所写的数从小到大地排好,并要求他们手牵着手站成一横排。如

matrix67的专栏 836

手把手教你编写PCIe设备驱动:基于Linux内核的实战教程

本文详细介绍了基于Linux内核的PCIe设备驱动开发全流程,包括环境准备、设备探测、中断处理、DMA配置等核心内容。通过实战代码示例和Makefile编写指南,帮助开发者快速掌握PCIe驱动开发技术,实现高性能设备驱动开发与优化。

weixin_30687051的博客 193

百囚犯问题(100 prisoners problem)

如果每名囚犯都在这50个抽屉中发现了他的号码,那么所有的犯人都会被赦免;在第一个囚犯进入房间之前,囚犯们允许一起讨论开抽屉的“策略”,但一旦第一个囚犯进入房间,他们之间就被禁止交流。那么很显然,这个环的最大长度决定了囚犯能否获救,如果所有抽屉中的号码恰好构成了长度为100的环,那么显然囚犯会失败;如果有一条长度为49的环、一条长为20、一条为31的环,那么囚犯显然能获救;表示箱子里面装的号码)就是从囚犯自己号码对应的箱子找,总能找到一个箱子有自己的号码;的情况都是囚犯没救的情况,有救的情况为。

weixin_52185313的博客 3108

NXP S32K3xx 多次复位(reset)后MCU跑死、崩溃、出错分析

s32k3出现多次复位后死机的情况

HeFlyYoung的博客 9515

金蝶ERP元数据解析:字段属性与表结构映射实战

本文深入解析金蝶ERP元数据的核心价值与应用实践,详细介绍了字段属性与表结构映射的关键技术。通过缓存获取与工具类直连两种方案对比,结合实际案例展示元数据在数据库校验、动态表单生成等场景的应用,帮助开发者高效解决二次开发中的常见问题。

weixin_33738555的博客 433

采用二进制思想解决一个简单筛选问题

@采用二进制思想解决一个简单筛选问题 题目:100个死刑犯排队报数,其中报奇数的枪毙,余下的人继续排队报数,直到剩最后一人,是第几人? 解决思想:通过二进制对囚犯编码,第一人00000001,第二人00000010,第100人01100100;不难看出,该报数筛选原则就是从二进制低位开始筛选,有1的排除掉,直到剩余最后一个数,它的最高位是1,后位都是0,也就是01000000(2),即64(10)...

UltimateBW的博客 3832

WRF和WPS安装和编译时遇到的问题

检查是否自己netcdf和Fortran编译器一致。解决办法:修改configure.wps里的路径。如果没问题且wrf已成功编译,考虑重新。path修改为jasper在的路径。

m0_54898744的博客 1837

[益智]:犯人猜颜色

题目描述 一百个犯人站成一纵列,每人头上随机带上黑色或白色的帽子,各人不知道自己帽子的颜色,但是能看见自己前面所有人帽子的颜色. 然后从最后一个犯人开始,每人只能用同一种声调和音量说一个字:”黑”或”白”, 如果说中了自己帽子的颜色,就存活,说错了就拉出去斩了, 说的答案所有犯人都能听见, 是否说对,其他犯人不知道, 在这之前,所有犯人可以聚在一起商量策略, 问如果犯人都足够聪明而且反应足够快,100个人最大存活率是多少? 题目解答 经典推理题: 最后一个人如果看到奇数顶黑帽子报“黑”否则报“白”,他可能

AngelDg的博客 962

RC滤波电路实战解析:无源与有源设计的性能对比与应用选择

本文深入解析了RC滤波电路的核心原理,重点对比了无源滤波电路与有源滤波电路的性能差异。文章通过实测波形与仿真数据,详细阐述了两者在带载能力、频率响应精度、噪声特性等方面的优劣,并提供了清晰的应用选择指南,帮助工程师根据信号属性、负载条件和性能要求做出最优设计决策。

weixin_29268637的博客 430

最大似然估计、梯度下降、EM算法、坐标上升

主要讲解的是机器学习中参数学习算法之间的区别,以及应用的场景。 最大似然估计: 其中目标函数是对数似然函数。为了求目标函数取最大值时的theta。有两个关机键步骤,第一个是对目标函数进行求导,第二个是另导数等于0,求解后直接得到最优theta。两个步骤缺一不可。 梯度下降: 对目标函数进行求导,利用导函数提供的梯度信息,使参数往梯度下降最快的方向移动一小步,来更新参数。为什

tzl2093的博客 5141

100囚犯问题、100囚犯问题加强版与选择公理(上)

    今后决定把较长的文章分段发布,不然大家读着太累。况且篇幅短一些的话,RSS输出也好看些:)    在讲问题的加强版之前,让我们先来回忆一下经典的100囚犯问题(不是灯泡)。    100个囚犯从前往后坐成一列。坐在最后面的那个囚犯能够看到其余99个囚犯,坐在最前面的那个囚犯啥也看不见。看守给每个囚犯戴上一顶黑色的或者白色的帽子。然后,看守会从后往前依次叫这些囚犯猜测自己头顶上

matrix67的专栏 1514

Python爬虫实战:逆向工程与异步处理攻克Pinterest无限滚动瀑布流

我们将从零开始,逐步分析其数据接口,构建一个功能完整的爬虫,并深入探讨反爬虫策略的应对、性能优化以及数据存储等高级主题。: 在实际爬取中,你需要先访问一次Pinterest主页,获取初始的Cookie和CSRF Token,然后再发起API请求。: Python爬虫,Pinterest,无限滚动,瀑布流,异步IO,httpx,逆向工程,API接口,动态内容,反爬虫。你会很快发现一些关键的请求模式。:页面初始加载有限内容,随着用户滚动,新的图片块通过AJAX动态加载,实现“永无止境”的浏览。

2201_76125261的博客 551

囚犯活命问题

问题描述:5个囚犯,分别按照1-5号在装有100颗绿豆的麻袋抓绿豆,规定每人至少抓一颗,而抓得最多和最少的人将被处死,而且,他们之间不能交流,但在抓的时候,可以摸出剩下的豆子数。问他们中谁的存活几率最大?提示: 1,他们都是很聪明的人 2,他们的原则是先求保命,再去多杀人 3,100颗不必都分完 4,若有重复的情况,则也算最大或最小,一并处死 解答: 100个豆子5...

weixin_34038293的博客 319

筹码峰五句口诀,看懂主力的秘密动作!(附实战图示)

筹码图的价值在于,它不像K线那样容易造假。主力可以骗线,但骗不了筹码分布。主力在不在;是吸筹还是出货;接下来是变盘还是震荡。这五句口诀可以说是“筹码阅读的入门圣经”:单峰坚挺变盘在即,双峰对垒高抛低吸;上峰不移主力在跑,多峰林立行情不止;下峰不移不离不弃,筹码识庄稳中取利!📌市场从来不是靠猜,而是靠看清。筹码,就是主力最真实的痕迹。如果你想学会提前布局、跟庄不被甩,学会看筹码峰——这一步必须打牢!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1164

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

从5囚犯抓绿豆问题看AI逻辑推理局限与博弈论应用

博弈论是研究多个理性决策主体在策略互动中如何做出决策的数学理论,其核心在于分析参与者的策略选择及其相互影响。逆向归纳法作为动态博弈的经典求解方法,通过从最后一步倒推,帮助确定各阶段的最优策略。这一理论在经济学、计算机科学和人工智能领域具有重要价值,尤其在多智能体系统、资源分配和协议设计中应用广泛。本文以经典的“5囚犯抓绿豆”问题为例,探讨了当前大语言模型在处理这类需要深度策略推理和共同知识假设的复杂逻辑谜题时面临的挑战,并分析了如何通过人机协同,将AI作为模拟验证工具来辅助策略设计与分析。

weixin_33851604的博客 414

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

犯人猜颜色

犯人猜颜色 一百个犯人站成一纵列,每人头上随机带上黑色或白色的帽子,各人不知道自己帽子的颜色,但是能看见自己前面所有人帽子的颜色. 然后从最后一个犯人开始,每人只能用同一种声调和音量说一个字:”黑”或”白”, 如果说中了自己帽子的颜色,就存活,说错了就拉出去斩了, 说的答案所有犯人都能听见, 是否说对,其他犯人不知道, 在这之前,所有犯人可以聚在一起商量策略, 问如果犯人都足够聪明而且反应足够快,...

Eric的博客 1458

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

百囚问题解析

百囚问题简要解析

bdn_nbd的博客 1617

The Locker Puzzle(百囚徒问题)

The Locker Puzzle(百囚徒问题)

xumingyang0的博客 624

百囚犯问题的拓展思考

独立事件与非独立事件,百囚犯问题的拓展思考,一个问题不只是有标准答案,其他的答案能产生意料之外的惊喜

小恺的工作生活拾遗 1950

100个囚犯的脱狱问题

话说有一国王找到100个囚犯,每个人都剃了光头。国王对他们说:一会儿有人会在你们头上写上1-100之间的随机数。你们只要有一个人能说对大家头上所有数字的和,就都放了。否则统统赠送给芙蓉姐姐做宠物。给你们一炷香的时间好好商量一下对策。这帮子囚犯都是学过基本算数的,加减乘除都没问题。一炷香之后,国王的巫师屏蔽了他们之间的交流(不要问我怎么做到的) - 结果每个囚犯都能看到别人头上写的啥,但没办法知道自己的数字。囚犯们采用什么策略才能保证一定会被释放呢?解答:设100个囚犯头上数字的和为sum;第N个囚犯头上数字

Itech 1724

趣味算法:国王和100个囚犯

前几天在网上看到了一个有趣的问题,就是 国王和100个囚犯 的问题。第一次看到这个问题时,当时也懵了,这是什么鬼?你确定你题出的木有问题?当时就是这感觉… 但仔细思索后还是想到了解决方法,让我们一起来看看这个有趣的问题吧。 题目如下: 国王招来100个囚犯,对他们说:你们犯的是死罪,但我给你们一次求生的机会。15分钟以后,你们将被关进一个有100间隔离牢房的监狱里,每人一间牢房,都与外界隔绝,...

淡定_蜗牛的博客 3356

记一道很蛋疼的笔试题

有100个囚犯马上就要被枪决了,国王给了他们最后一次机会:他让这100个囚犯站成一条直线,每个人可以看见排在自己前面所有的人,但看不见排在自己后面的人。 他在每个人的头上任意的随机的放了一顶帽子,帽子只有红色和黑色的两种。要求从最后一个人开始(就是可以看见前面99个人的那一个),依次的,每个人说出自己头上的帽子是什么颜色,说对了放生,说错了枪决 (显然,如果每个人都瞎猜自己头上的帽子的颜色,那么每个

无花禅师的专栏 5206

腾讯笔试题--国王招来100个囚犯

国王招来100个囚犯,对他们说:你们犯的是死罪,但我给你们一次求生的机会。15分钟以后,你们将被关进一个有100间隔离牢房的监狱里,每人一间牢房,都与外界隔绝,什么也听不见看不到,连时间都没法计算,无法获得外界的任何信息。 这所监狱有一个院子,每天只少随机(注意是完全随机)打开一间牢房的门,让一个囚犯到院子里来放风。院子里有一盏灯,放风的囚犯可以控制它的开关,将它打开或是关闭。除囚犯之...

weixin_30657999的博客 371
上一篇: 100囚犯问题、100囚犯问题加强版与选择公理(上)
下一篇: 祝所有网友情人节快乐!
matrix67
博客等级 码龄19年 1232粉丝 896原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值