海盗分宝石

海盗分宝石问题


5个海盗抢到了100颗宝石,每一颗都一样的大小和价值连城。
他们决定这么分:
1.抽签决定自己的号码(1,2,3,4,5)
2.首先,由1号提出分配方案,然后大家5人进行表决,当且仅当超过半数的
人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼。
3.如果1号死后,再由2号提出分配方案,然后大家4人进行表决,当且仅当
超过半数的人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼。

4.以此类推


 条件:
每个海盗都是很聪明的人,都能很理智的判断得失,从而做出选择。
问题:
最后的分配结果如何?
海盗的判断原则:
1.保命

2.尽量多得宝石

3.尽量多杀人


这个问题之所以成为经典博弈问题,能够成为微软
的应聘测试题,也与其求解的巧妙思路有关。
分析这个问题时,需要用到递归的思想,即将复杂
的问题转化为同一问题的小规模模型。
这是很常用的解决问题思路,同时,也是写程序,
写算法时所不可或缺的思想。


从后面往前推,将问题规模缩小、简化。
如果1-3号海盗都已然由于自己的决策失误没有得到半
数以上人的投票,喂了鲨鱼。于是,现在就剩下4号、5号两个海盗。

5号海盗必然不会同意4号海盗的任何提议,这样4号的
任何提议都不会得到半数以上的通过率。只要4号死了,5号就可以独得所有金币。

由于所有的海盗都绝顶聪明,4号海盗必然不会让事态
发展到如此地步,所以他至少要保证3号的存活。

所以,将问题向回推,若1、2号海盗死掉,只剩下3号
提议时,他完全可以提出(100,0,0)的方案,由于4
号必须保证3号的存活,所以即使他不能得到一枚金币也会同意3号的提议。
这样3号的提议因得到两人的同意而通过。


将问题继续向回推,当只有1号死掉而2-5号海盗还在,
由2号提议时,他只要保证4号5号有一个金币的收益,
即(98,0,1,1)的方案,这样就可以使4号5号获得
的收益比2号死掉而由3号提议时获得的多,因此,4号5
号会同意2号的如此提议


于是,我们已经接近最初的问题了,即1号提议时的情
况。一号通过聪明的海盗头脑分析出,当自己死掉时,
2号的策略将会是怎样。
因此一号的提议只要让两个人的收益大于2号的提议时
的收益,即可得到通过。而当1号死后2号的提议为(98
,0,1,1)。
因此,1号可以选择让3号和4号,或者3号和5号拥有更
多的收益,而不顾及另外两个人的想法。
于是他可以提出(97,0,1,2,0)或者(97,0,1,
0,2)这样,他的方案便会得到自己以及另外两人的同
意而得到通过。


在解决这个问题的过程当中,我们采用了递归的
手段,找到一个复杂的问题最本源的性质,并且
在这个本源的基础上层层“加壳”,逐步分析,最
终解决问题。
这便是递归的主要思想,将一个复杂问题转化为
同一个问题的简单模型。然后再逐步推回到原本
的问题。这种解决问题的思路同时可以运用于解
决许多问题


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值