有趣的海盗分金币问题,不学点算法都不配当个海盗了

最近几天看到一个挺有趣的博弈相关的趣谈,今天来分享给大家,并且也会详细讲解最终问题的最优解,并且我还好通过这道题扯一扯递归。

问题描述

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

由 5 个海盗轮流提出分配方案,规则如下

1、如果超过半数海盗(包括提出者)同意该方案,则按照该方案分配。

2、如果同意该方案的人数(包括提出者)小于等于半数,则提出者要被扔到海里喂鱼,剩下的海盗继续商议分配。

3、海盗们都是绝对理性的,以自己尽可能多获得金币为目的。但是在收益相等的情况下,会倾向把提出者扔到海里。

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

解决问题

先做一些假设和提醒

为了方便后面描述,我们假设轮流提出方案的顺序为:海盗5,海盗4,海盗3,海盗2,海盗1;也就是说,最开始由海盗5 提出分配方案,海盗1排在最后

有趣的海盗分金币问题,不学点算法都不配当个海盗了

并且,大家一定要注意最后一个条件,每个海盗是绝对理性以及在收益相等的情况下,会倾向把提出者扔到海里

前方高能,开始扯淡,请你发挥出你的各种猜想

好了,现在如果你是海盗5,你会怎么分配才能使得获得的金币尽可能多,并且不会被扔进海里喂鱼呢?

说实话,第一眼看到这个问题,有点无从下手,脑子太特么乱了,因为完全不知道怎么证明我的分配方案能够让超过一半的海盗都必须支持我,要不平均分配?要不我少一点他们多一点?要不我多一点他们少一点(这样会不会马上就被扔下海里)?

你也可以自己先想几分钟哦,看看你能否自己想的出来?

事实上,要让别人同意我们的想法,我们必须得知彼知己,才能百战百胜。也就是说,海盗5要给出分配方案,必须基于海盗4的分配方案来;也就是说,海盗5得先假设自己被扔进海里的话,海盗4会如何分配呢?然后根据海盗4的分配方案,海盗5才能给出他的分配方案。

同理,海盗4的分配方法得基于海盗3,海盗3得基于海盗2,以此类推

听不懂?没关系,下面我举个例子你们马上就懂了

逐层击破

1、只有 2 个海盗的情况

现在,我们假设只有两个海盗:海盗1 和海盗2,这个时候你应该知道分配结果了吧?

很显然,无论海盗2提出什么方案,海盗1 都会直接拒绝,这样海盗1就可能获得全部的金币了,也就是说,当只有两个海盗时,海盗2 无论怎么讨好海盗1,最终的结果都是到海里喂鱼,所以分配结果如下

有趣的海盗分金币问题,不学点算法都不配当个海盗了

2、只有3个海盗的情况

这个时候突然跳出了个海盗3,也参与到这场分赃活动中,这个时候海盗3该如何分配?

其实也非常简单,海盗3刚才窥听了海盗1和海盗2的对话,知道如果自己被扔进海里的话,海盗2一定也会被扔进海里,所以海盗3知道,自己无论提出什么方法,海盗2都必须同意,所以海盗3可以提出如下的分配方案:

海盗3: 100 个金币

海盗2: 0 个金币
海盗1: 0 个金币。

也就是,只要海盗2支持海盗3,就可以形成 2:1的局面,海盗3就可以稳赢,不需要兼顾海盗1是否支持。所以最终的分配结果如下

有趣的海盗分金币问题,不学点算法都不配当个海盗了

有人可能会说,我们用不用给海盗2分配一点好处?例如分配给海盗2一个金币,条件3有个规则:在收益相等的情况下,海盗们会倾向把提出者扔到海,答是不需要的,虽然海盗2没有分配到金币,但是他并没有被扔进海里,这就是最大的好处了

看到这里,你是不是也知道如果是 4 个海盗或者 5 个海盗,你也会分配了?我相信你大概率知道怎么分配了,不过我还是要讲一下,因为后面随着人数的增加,也并没有你想的那么简单,并且后面还会和递归算法串讲一下。

3、只有4个海盗的情况

这个时候又突然蹦出个海盗4,并且海盗4是已经知道了海盗3的分配方案了,这个时候海盗4只需要获得其中两个人的支持即可。

如何获得其中两个人的支持?

这很容易,拿点钱给海盗1和海盗2就可以了,海盗4可以提出如下分配方案

海盗4:98个

海盗3:0个

海盗2:1个

海盗1:1个

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxxyz.html