有趣的海盗问题(完整版)

具体链接如下:
https://mp.weixin.qq.com/s?__biz=MzA3MjY1MTQwNQ==&mid=2649825691&idx=1&sn=cf43b385447923b915b65b4a81fd150a&chksm=871e8679b0690f6fffbb96eb5afd4551e0731457cb67430ddea27c730846a163dbef867bd9e2&scene=21#wechat_redirect
五个海盗,七个海盗问题都完美解决了,而且图文并茂,通俗易懂,锻炼逻辑思维及编程思维都很有帮助,很有趣味!赞一个

海盗分金币问题(5):

有5个海盗,获得了100枚金币,于是他们要商量一个方法来分配金币。商议方式如下:

  1. 由5个海盗轮流提出分配方案。
  2. 如果超过半数海盗(包括提出者)同意该方案,则按照该方案分配。
  3. 如果同意该方案的人数(包括提出者)小于等于半数,则提出者要被扔到海里喂鱼,剩下的海盗继续商议分配。
  4. 海盗们都是绝对理性的,以自己尽可能多获得金币为目的。但是在收益相等的情况下,会倾向把提出者扔到海里。

问:第一个海盗应该提出怎样的分配方案,才能保证自己既不被扔到海里,又能使自己利益最大化?

答:
如何利用递归思想来简化问题呢?让我们来详细分析一下,后文把五个海盗简称为老一、老二、老三、老四、老五。

老一在提出分配方案的时候,不妨这样思考:
如果我被扔到海里了,剩下4个海盗,此时老二的最优分配方案是什么呢?
我只要在老二的分配方案上稍微增加一点,就能赢得更多的支持。

老二在提出分配方案的时候,也会这样思考:
如果我被扔到海里了,剩下3个海盗,此时老三的最优分配方案是什么呢?
我只要在老三的分配方案上稍微增加一点,就能赢得更多的支持。

老三在提出分配方案的时候,还是会这样思考:
如果我被扔到海里了,剩下2个海盗,此时老四的最优分配方案是什么呢?
我只要在老四的分配方案上稍微增加一点,就能赢得更多的支持。

整个递归过程,就像下图一样:

这个递归过程到什么时候截止呢?剩下两个人为止。

想想看,当剩下两个人的时候,是什么情形?
此时老四没有任何选择!无论他如何分配,哪怕把100枚金币都给老五,老五仍然可以反对,导致老四被扔到海里,金币全归老五所有。

由此,老三心想:老四没有最优决策,所以无论我提出什么要求,老四都一定会同意,而老五一定不同意。
由于只要超过半数同意就可以执行分配,所以老三的最优策略如下:
100,0,0

接下来,老二暗自寻思:如果没有我,老三能获得100枚金币,所以无论如何不会同意我。但我可以设法“笼络”老四和老五,形成 3 : 1 的局面。
在老三的“淫威”下,他们原本一个金币都得不到。我给他们一人一枚金币,好过由老三来分配,所以他们肯定会同意。
因此,老二的最优策略如下:
98,0,1,1

终于轮到老一了,老一心里琢磨:如果没有我,老二能获得98枚金币,我总不能分给他多于98枚,索性放弃他,只要剩下三人中笼络到两人,形成 3 : 2 的局面即可。
要笼络谁呢?以老二的策略,老三得不到金币,所以老三最好“伺候”。我给老三1枚,老三一定同意。
至于老四和老五,本来可以得到1枚,所以我必须比老二给的多,才能赢得支持。但我又没必要同时笼络他俩,要么给老四两枚金币,放弃老五,要么给老五两枚金币,放弃老四。
因此,老一的最优策略如下:
97,0,1,2,0
97,0,1,0,2

海盗数目变为7后

由于海盗数目增加到7人,原本的老大顺延成为老三,原本的老二顺延成为老四…大家注意这里不要混淆。
97,0,1,2,0
97,0,1,0,2
如何把两种分配结果进行聚合呢?

在剩余5个海盗的情况下,要么老六得到两枚金币,老七没有金币;要么老六没有金币,老七得到两枚金币。从概率学的角度来分析,这两种情况发生的几率各占50%,所以老六和老七的平均收益都是1枚金币。

这样一来,老二就变得容易分析了。老二想要形成 4:2 的局面,他该怎么分配呢?
如果没有自己,老三可以得到97枚,所以老三直接放弃掉。
剩余5个海盗时,老四得不到金币,所以给老四一枚就可以拉拢,很好伺候。
剩余5个海盗时,老五、老六、老七的平均收益都是1枚,但我们只要拉拢其中两人就行。所以其中一人没有金币,另外两人各自给两枚。这样就形成了一个排列组合:
2, 2, 0
2, 0, 2
0, 2, 2
因此,老二自己保留的金币数量是 100 - 2 - 2 - 1 = 95。完整的分配方案有3种,如下图所示:
95,0,1,2, 2, 0
95,0,1,2, 0, 2
95,0,1,0, 2, 2

接下来,为了分析老大的策略,我们仍然需要把上面三种情况聚合一下。
对于老五、老六、老七,他们各自有三分之二的几率得到两枚金币,有三分之一的几率得不到金币。所以他们的收益平均值是 2 * 2/3 = 1.33 枚金币。

这样一来,老大也变得容易分析了。老大想要形成 4:3 的局面,他该怎么分配呢?
如果没有自己,老二可以得到95枚,所以老二直接放弃掉。
剩余6个海盗时,老三得不到金币,所以给老三一枚就可以拉拢,很好伺候。
剩余6个海盗时,老四的收益是1枚,老五、老六、老七的平均收益是1.33枚,但无论1枚还是1.33枚,给他们两枚金币都是可以拉拢的。我们只要拉拢其中两人就行,所以其中两人没有金币,另外两人各自给两枚。这样又形成了一个排列组合:
2, 2, 0, 0
2, 0, 2, 0
2, 0, 0, 2
0, 2, 2, 0
0, 2, 0, 2
0, 0, 2, 2
因此,老一自己保留的金币数量是 100 - 2 - 2 - 1 = 95。完整的分配方案有6种,比较复杂,这里就不用图片表示了,直接列出表格:
95,0,1,2, 2, 0, 0
95,0,1,2, 0, 2, 0
95,0,1,2, 0, 0, 2
95,0,1,0, 2, 2, 0
95,0,1,0, 2, 0, 2
95,0,1,0, 0, 2, 2

—————END—————

有趣的海盗问题(完整版)相关推荐

  1. PyTorch核心贡献者开源书:《使用PyTorch进行深度学习》完整版现已发布!

    来源|新智元 [导读]<使用PyTorch进行深度学习>一书的完整版现已发布!教你如何使用PyTorch创建神经网络和深度学习系统,内含图解与代码,操作易上手. 由Luca Antiga. ...

  2. 实验Matlab数值运算,MATLAB数值实验一(数据的插值运算及其应用完整版

    <MATLAB数值实验一(数据的插值运算及其应用完整版>由会员分享,可在线阅读,更多相关<MATLAB数值实验一(数据的插值运算及其应用完整版(6页珍藏版)>请在人人文库网上搜 ...

  3. AI工程师职业规划和学习路线完整版

    AI工程师职业规划和学习路线完整版 如何成为一名机器学习算法工程师 成为一名合格的开发工程师不是一件简单的事情,需要掌握从开发到调试到优化等一系列能 力,这些能力中的每一项掌握起来都需要足够的努力和经 ...

  4. (转载)7 .24张小龙内部讲座《通过微信谈产品》完整版

     7 .24张小龙内部讲座<通过微信谈产品>完整版 benimaru zhang 2012-08-01 22:26 18条评论  编者按:7月24日微信之父张小龙在腾讯内部的一次讲座, ...

  5. DOS 61条圣经完整版

    1.DOS特点 在DOS环境下,开机后,我们面对的不是桌面和图标,而是这样的电脑屏幕:这个C:\>叫做提示符,这个闪动的横线叫做光标.这样就表示电脑已经准备好,在等待我们给它下命令了.我们现在所 ...

  6. android 电话表情,歪,小人打电话表情包完整版下载

    歪,小人打电话表情包完整版,大家是不是都有了小人打电话这款可爱的表情包,小编今天给大家带来了这款表情包的大眼升级版,更可爱了,绝对好用的撒娇神器,快来下载使用吧 歪,小人打电话表情包介绍 打电话小人表 ...

  7. 野火洋桃STM32开发版学习指导完整版

    该文章是我历时一个月整理总结而成,专门针对想要通过野火&洋桃STM32开发板入门stm32的读者.由于csdn编辑限制,该学习指导只包含文字信息.如需查看含图片的完整版可进入我的博客下载页.完 ...

  8. 2020计算机自考本科英语二,2020年自考本科英语二模拟练习题(完整版)

    2020年自考本科英语二模拟练习题(完整版): 由于试卷较长,为了方便各位考生刷题,小编将整套模拟练习题拆分发布,需要的考生可按顺序点击阅读. 2020年自考本科英语二备考技巧: 一.必备的英语词汇. ...

  9. 2017App Store 最新完整版审核指南

    近日,苹果更新了最新的App Store审核指南,新版指南本身核心内容并没有任何变化,但其规划得更有条理,且包含更多背景以便理解.在后续页面中,您会发现这些准则已被清晰地划分为五个部分:安全.性能.业 ...

最新文章

  1. [已解决]window下Can't connect to MySQL server on 'localhost' (10061)与无法启动MYSQL服务”1067 进程意外终止”...
  2. 32M内存 跑linux内核,32位Linux单进程4G内存限制
  3. 2015华为校招机试题
  4. github推送错误:已经有此代码,不允许覆盖的解决方法
  5. The mook jong 计数DP
  6. 探测与响应是各企业机构在2017年的首要安全事务
  7. mysql存储过程输出多个参数值_MySQL 存储过程返回多个值
  8. Struts2学习笔记(八) 拦截器(Interceptor)(上)
  9. 异常处理2:异常处理方式、问区别的面试题汇总
  10. 在Mac上修改jupyter默认地址
  11. 科创板发行上市审核44个问题解答汇编(总11期)
  12. 形式验证 formality的设置及fm_shell使用
  13. 扎心!“近8成人工作10年月薪没过万”,你呢?互联网人一笑而过
  14. 互联网海量视频数据的存储
  15. 博弈论学习(二)——完全信息静态博弈
  16. 小米路由器的服务器无响应怎么回事,小米路由器常见问题与解决方法(高级功能) | 192路由网...
  17. K8S部署ingress-nginx
  18. 手机工作室网络如何组建?
  19. Netflix Movies and TV Shows(Netflix影视剧数据集)
  20. 【RocketMQ】消息的刷盘机制

热门文章

  1. 我的世界刷猪人塔java版_我的世界速攻猪人塔详解 史上最牛的经验塔
  2. 有了这些网站,让你有看不完的好电影!
  3. 一套Java架构开发的电商系统要多少钱
  4. 那么,储能电池的BMS与动力电池的BMS有什么区别呢?
  5. 视频播放器(二)——播放列表
  6. Python基础视频教程
  7. 深度学习如何参加阿里的天池比赛和进入天池实验室
  8. linux pv修改大小,Linux下扩容系统容量和删除unknown PV
  9. java 头像 微信群_Android仿微信群聊头像
  10. 女友老爸开了中介公司让我抽空搞开发个租房App,像贝壳一样就行.....