好玩的智力小游戏(海盗分金)



海盗的难题(Ian Stewart)

数学的逻辑有时会导致看来十分怪异的结论。

一般的规则是。假设逻辑

推理没有漏洞。 那么结论就必然站得住脚,即使它与你的直觉矛盾。

1998

年9月,加利福尼亚州帕洛阿 尔托的Stephen M. Omohundro寄给我一道难题,

它恰好就属于这一类。这难题已经流传 了至少十年,可是Omohundro对它作

了修改,使它的逻辑问题变得分外复杂了。

先来看看此难题原先的形状。

10名海盗抢得了窖藏的100块金子,并打算

瓜分这些战利 品。这是一些讲民主的海盗(当然是他们自己特有的民主),

他们的习惯是按以下的方式进行分配:最厉害的一名海盗提出分配方案,然

后全部的海盗(包含提出方案者本人)就此方案进行表决。假设50%或很多其它的

海盗赞同此方案,此方案就获得通过并据此分配战利品。否则提出方案的海

盗将被扔到海里,然后下提名最厉害的海盗又反复上述过程。

全部的海盗都乐于看到他们的一位同伙被扔进海里。只是,假设让他们

选择的话。他们还是宁可得一笔现金。

他们当然也不愿意自己被扔到海里。

全部的海盗都是有理性的,并且知道其它的海盗也是有理性的。此外。没有

两名海盗是同等厉害的——这些海盗依照全然由上到下的等级排好了座次,

而且每一个人都清楚自己和其它全部人的等级。这些金块不能再分,也不同意

几名海盗共同拥有金块。由于不论什么海盗都不相信他的同伙会遵守关于共享金块的

安排。这是一伙每人都仅仅为自己打算的海盗。

最凶的一名海盗应当提出什么样的分配方案才干使他获得最多的金子呢?

为方便起见。我们依照这些海盗的厉害程度来给他们编号。

最怯懦的海

盗为1号海盗,次怯懦的海盗为2号海盗,如此类推。

这样最厉害的海盗就应

当得到最大的编号,而方案的提出就将倒过来从上至下地进行。

分析全部这类策略游戏的奥妙就在于应当从结尾出发倒推回去。

游戏结

束时,你easy知道何种决策有利而何种决策不利。

确定了这一点后。你就可

以把它用到倒数第2次决策上,如此类推。假设从游戏的开头出发进行分析,

那是走不了多远的。

其原因在于,全部的战略决策都是要确定:“假设我这

样做,那么下一个人会如何做?” 因此在你下面海盗所做的决定对你来说是

重要的,而在你之前的海盗所做的决定并不重要,由于你反正对这些决定也

无能为力了。

记住了这一点。就能够知道我们的出发点应当是游戏进行到仅仅剩两名海

盗——即1号和2号——的时候。这时最厉害的海盗是2号,而他的最佳分配方

案是一目了然的:100块金子全归他一人全部,1号海盗什么也得不到。因为

他自己肯定为这个方法投赞成票,这样就占了总数的50%,因此方案获得通过。

如今加上3号海盗。

1号海盗知道,假设3号的方案被否决,那么最后将仅仅剩2

个海盗,而1号将肯定一无所获——此外,3号也明确1号了解这一形势。

因此,

仅仅要3号的分配方案,给1号一点甜头使他不至于空手而归,那么不论3号提出

什么样的分配方案,1号都将投赞成票。因此3号须要分出尽可能少的一点金子

来贿赂1号海盗,这样就有了以下的分配方案: 3号海盗分得99块金子。2号海

盗一无所获,1号海盗得1块金子。4号海盗的策略也差点儿相同。他须要有50%的支

持票。因此同3号一样也需再找一人做同党。他能够给同党的最低贿赂是1块金

子,而他能够用这块金子来收买2号海盗。

由于假设4号被否决而3号得以通过,

则2号将一文不名。因此。4号的分配方案应是:99块金子归自己,3号一块也

得不到,2号得1块金子,1号也是一块也得不到。5号海盗的策略稍有不同。他

须要收买另两名海盗。因此至少得用2块金子来贿赂,才干使自己的方案得到

採纳。他的分配方案应该是:98块金子归自己,1块金子给3号,1块金子给1号。

这一分析过程能够照着上述思路继续进行下去。每一个分配方案都是唯一确

定的,它能够使提出该方案的海盗获得尽可能多的金子。同一时候又保证该方案肯

定能通过。

照这一模式进行下去。10号海盗提出的方案将是96块金子归他全部,

其它编号为偶数的海盗各得1 块金子,而编号为奇数的海盗则什么也得不到。

这就攻克了10名海盗的分配难题。

======================================

Omohundro的贡献是他把这一问题扩大到有500名海盗的情形。即500名海

盗瓜分100块金子。显然,类似的规律依旧成立——至少是在一定范围内成立。

其实,前面所述的规律直到第200号海盗都成立。 200号海盗的方案将是:

从1到199号的全部奇数号的海盗都将一无所获。而从2到198号的全部偶数号

海盗将各得1块金子,剩下的1块金子归200号海盗自己全部。

乍看起来。这一论证方法到200号之后将不再适用了,由于201号拿不出更

多的金子来收买其它海盗。

可是即使分不到金子。201号至少还希望自己不会

被扔进海里,因此他能够这样分配:给1到199号的全部奇数号海盗每人1块金

子,自己一块也不要。202号海盗相同别无选择,仅仅能一块金子都不要了——

他必须把这100块金子所实用来收买100名海盗,并且这100名海盗还必须是那

些依照201号方案将一无所获的人。

因为这种海盗有101名。因此202号的方案将不再是唯一的——贿赂方案

有101种。203号海盗必须获得102张赞成票,但他显然没有足够的金子去收买

101名同伙。因此。不管提出什么样的分配方案。他都注定会被扔到海里去喂

鱼。只是。虽然203号命中注定死路一条,但并非说他在游戏进程中不起任

何作用。相反,204号如今知道,203号为了能保住性命,就必须避免由他自

己来提出分配方案这么一种局面。所以不管204号海盗提出什么样的方案。203

号都一定会投赞成票。这样204号海盗总算 男 拣到一条命:他能够得到他自

己的1票、203号的1票、以及另外100名收买的海盗的赞成票,刚好达到保命所

需的50%。获得金子的海盗,必属于依据202号方案肯定将一无所获的那101名

海盗之列。

205号海盗的命运又怎样呢?他可没有这样走运了。

他不能指望203号和

204号支持他的方案,由于假设他们投票反对205号方案,就能够幸灾乐祸地

看到205号被扔到海里去喂鱼,而他们自己的性命却仍然可以保全。这样,无

论205号海盗提出什么方案都必死无疑。

206号海盗也是如此——他肯定能够得到205号的支持,但这不足以救他

一命。类似地。207号海盗须要104张赞成票——除了他收买的100张赞成票以

及他自己的1张赞成票之外,他还需3张赞成票才干免于一死。

他能够获得205

号和206号的支持。但还差一张票却是不管怎样也弄不到了。因此207号海盗

的命运也是下海喂鱼。

208号又时来运转了。他须要104张赞成票,而205、206、207号都会支持

他。加上他自己一票及收买的100票,他得以过关保命。获得他贿赂的必属于

那些依据204号方案肯定将一无所获的人(候选人包含2到200号中全部偶数号

的海盗、以及201、203、204 号)。

如今能够看出一条新的、此后将一直有效的规律:那些方案能过关的海盗

(他们的分配方案全都是把金子用来收买100名同伙而自己一点都得不到)相

隔的距离越来越远。而在他们之间的海盗则不管提什么样的方案都会被扔进海

里——因此为了保命。他们必会投票支持比他们厉害的海盗提出的不论什么分配方

案。

得以避免葬身鱼腹的海盗包含201、202、204、208、216、232、264、

328、456号。即其号码等于200加2的某一方幂的海盗。

如今我们来看看哪些海盗是获得贿赂的幸运儿。分配贿赂的方法是不唯一

的,当中一种方法是让201号海盗把贿赂分给1到199号的全部奇数编号的海盗,

让202号分给2到200号的全部偶数编号的海盗,然后是让204号贿赂奇数编号的

海盗,208号贿赂偶数编号的海盗,如此类推,也就是轮流贿赂奇数编号和偶

数编号的海盗。

结论是:当500名海盗运用最优策略来瓜分金子时。头44名海盗必死无疑,

而456号海盗则给从1到199号中全部奇数编号的海盗每人分1块金子,问题就解

决了。因为这些海盗所实行的那种民主制度,他们的事情就搞成了最厉害的一

批海盗多半都是下海喂鱼,只是有时他们也会认为自己非常幸运——尽管分不到

抢来的金子,但总能够免于一死。

仅仅有最怯懦的200名海盗有可能分得一份脏

物,而他们之中又仅仅有一半的人能真正得到一块金子。的确是怯懦者继承財富。

转载自http://blog.csdn.net/gogdizzy/article/details/4283184

时间: 2024-10-13 19:29:15

好玩的智力小游戏(海盗分金)的相关文章

海盗分金的故事

两周时间,身体疲惫的要死. 近来,每晚一梦的习惯又开始了. 昨晚,睡了好久,做了很诡异的梦,把自己纠缠到醒之后,好想拿起手机问问是不是很多人都在看世界杯. 朦胧中细想,这还用问么?楼上还有声音,估计正在等待看巴西和德国大战. ---------------------------------分割线---------------------------------------- 海盗分金,是一个经济学问题.整个故事喜感到爆,原理是用最小代价获取最大利益.但,前提是每个人都必须是智商高到爆. 假如任

HDU 1538 A Puzzle for Pirates (海盗分金问题)

A Puzzle for Pirates Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 508    Accepted Submission(s): 167 Problem Description A bunch of pirates have gotten their hands on a hoard of gold pieces a

算法浅谈——递归算法与海盗分金问题

本文始发于个人公众号:TechFlow 最近看到一道很有意思的问题,分享给大家. 还是老规矩,在我们聊算法问题之前,先来看一个故事. 传说中,有5个海盗组成了一支无敌的海盗舰队,他们在最后一次的寻宝当中找寻到了100枚价值连城的金币.于是,很自然的,这群海盗面临分赃的问题.为了防止海盗内讧,残忍的海盗们制定了一个奇怪的规则: 他们决定按照功劳大小对五个人进行编号,由编号小的海盗先提出分配方案.如果方案能够得到大多数人的同意,那么就按照他提出的方案进行分配.如果不能通过,说明他已经失去了威望,海盗

海盗分金问题(博弈)

NBUOJ 2680:海盗分金 题意: 有N个海盗要分M金币,将N个海盗从1-N编号,由第一个人提出分配方案,一人一票(分配者也拥有一票),超过半数同意方案才被通过,否则他将被扔入大海喂鲨鱼,接下来由下一人分配,以此类推. 分析:从3个人的状态往后推,每次处理出当前分配方案下的被分到0,1 金币的海盗数量,当前被分到0,下次并然分到1,当前分到1的判断是否需要分配2才能满足通过条件,最后输出分配剩余的金币数即可. 代码: 1 #include "cstdio" 2 #include &

海盗分金的问题

海盗分金好像是个博弈论的老问题了. 本科的时候听GXL谈到过问题本身,没有去解.昨天,LX问到我这个问题.思考了一下解法,不知道对不对,写在这里. 流行的问题是这样: 五个海盗抢到了100枚金币,他们决定这么分: 1.抽签决定自己的号码 :5  4  3  2  1: 2.首先,由5号提出分配方案,然后5人共同进行表决,如果有半数或半数以上人同意时,就按照他的提案进行分配,否则5号将被扔入大海喂鲨鱼: 3.在5号死后,由4号提出分配方案,然后4人进行表决,如果有半数或半数以上人同意时,就按照他的

海盗分金问题SQL求解(贪心算法)

问题 经济学上有个"海盗分金"模型:是说5个海盗抢得100枚金币,他们按抽签的顺序依次提方案:首先由1号提出分配方案,然后5人表决,超过半数同意方案才被通过,否则他将被扔入大海喂鲨鱼,依此类推,假设海盗是足够聪明的先利己再伤人,最后方案是怎样的? 网上百度来的的代码 with a as (select 101 - rownum n from dual connect by rownum <102), max_one as (select max(n) max1 from a),

NYOJ 994 海盗分金 逆向递推

链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=994 题意: 有n个海盗劫得了窖藏的m块金子,并准备瓜分这些战利品.按照古老流传下来的分金法则,由最厉害的一名海盗提出一个分金方案,假如有不小于一半的海盗(包括自己)支持这个方案,则按这个方案分,否则把这个海盗扔进海里,重复由下一个厉害的海盗提出方案. 大家都知道,所有海盗都是贪婪的,虽然他们都乐于看到自己的同伴被扔进海里,但是他们还是希望在保命的前提下分的最多的金子,现在已经按海盗的厉害程

海盗分金

/* 5个海盗抢到了100颗宝石,每一颗都一样的大小和价值. 他们决定这么分: 1.抽签决定自己的号码(1,2,3,4,5) 2.首先,由1号提出分配方案,然后大家5人进行表决,当且仅当半数和超过半数的人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼. 3.如果1号死后,再由2号提出分配方案,然后大家4人进行表决,当且仅当半数和超过半数的人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼. 4.以次类推...... 条件: 每个海盗都是很聪明的人,都能很理智的判断得失,从而做出选择.

C语言实现,猜数字智力小游戏

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <time.h> int main() {  printf("   欢迎使用猜数字游戏! \n");  printf("\n");  printf("************************\n");  printf("\n"