首页 > 代码库 > 海盗分金的问题

海盗分金的问题

海盗分金好像是个博弈论的老问题了。

本科的时候听GXL谈到过问题本身,没有去解。昨天,LX问到我这个问题。思考了一下解法,不知道对不对,写在这里。

 

流行的问题是这样:

五个海盗抢到了100枚金币,他们决定这么分:

1.抽签决定自己的号码 :5  4  3  2  1;

2.首先,由5号提出分配方案,然后5人共同进行表决,如果有半数或半数以上人同意时,就按照他的提案进行分配,否则5号将被扔入大海喂鲨鱼;

3.在5号死后,由4号提出分配方案,然后4人进行表决,如果有半数或半数以上人同意时,就按照他的提案进行分配,否则4号将被扔入大海喂鲨鱼;

4.以次类推。

海盗们基于三个因素来做决定:

1. 要能存活下来;

2. 自己得到的利益最大化;

3. 在所有其他条件相同的情况下,优先选择把别人扔出船外。

问题:第一个提出分配方案的海盗怎样分配才能够使自己免于下海且获得最多金币?

 

昨天我们谈到这个问题的时候,说是要半数以上的人同意才算。只有半数是会被扔到大海里面去的。

那先按原问题,来说说“半数及半数以上同意”的情况下的方案:

5个人的情况下,5号如果要提出方案,则要考虑1号到4号心里是怎么想的。1号到4号心里肯定是这么想的:是你现在的方案给我我赚得多,还是你死掉之后剩下4个人分配我赚得多?

所以按照这个想法想下去,我们应该先分析两个人(只有1号和2号)的情况下,2号应该怎么分配。

2号肯定会把100个金币给自己,0个金币给1号。

  2号       1号

  100个   0个

那么当有3号、2号和1号的时候,只要3号给1号1个金币(或以上),则1号就会赞成3号。如果3号不给1号金币,则1号宁愿3号的方案被推翻,将3号扔出船外。

  3号  2号  1号

  99个  0个  1个

当有4号、3号、2号和1号的时候,四号要也只要争取1个同盟,就能按自己的方案分配金币:

  4号  3号  2号  1号

  99个  0个  1个  0个

当5个海盗的时候,5号要争取2个同盟:

  5号  4号  3号  2号  1号

  98个  0个  1个  0个  1个

回答完毕。

如果要争取半数以上的海盗同意的情况:

只有2号和1号时,2号要争取1号也同意,否则僵持不下(因为需要半数以上,这里要两个人都同意),则:

  2号  1号

  50个  50个

当只有3号、2号、1号的时候,3号要争取1个同盟,则:

  3号  2号  1号

  49个 51个 0个

或者49个 0个 51个

当有4号、3号、2号、1号的时候,4号要争取两个同盟,则因为在只有三个人的时候,2号分得金币的期望是51*50% = 25.5个,1号分得金币的期望也是25.5个,所以如果给2号或1号多于25.5个,就行:

  4号  3号  2号  1号

  48个  0个  26个 26个

当有5个海盗的时候,5号要争取两个同盟:

  5号  4号  3号  2号  1号

  72个  0个  1个  27个  0个

或者72个  0个  1个  0个  27个

回答完毕。

 

 无论我的解法对不对吧,这种思路是源于动态规划的思想,每个子问题的解都是大问题的一部分,是自底向上的方法。

 

海盗分金的问题