本文主要是介绍经典推理题——海盗分金子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
数学的逻辑有时会导致看来十分怪异的结论。一般的规则是,如果逻辑推理没有漏洞,那么结论就必定站得住脚,即使它与你的直觉矛盾。这是一道已经流传了至少十年难题
10名海盗抢得了窖藏的100块金子,并打算瓜分 这些战利品。这是一些讲民主的海盗(当然是他们自己特有的民主),他们 的习惯是按下面的方式进行分配:最厉害的一名海盗提出分配方案,然后所 有的海盗(包括提出方案者本人)就此方案进行表决。如果50%或更的海盗 赞同此方案,此方案就获得通过并据此分配战利品。否则提出方案的海盗将 被扔到海里,然后下提名最厉害的海盗又重复上述过程。
所有的海盗都乐于看到他们的一位同伙被扔进海里,不过,如果让他们选择 的话,他们还是宁可得一笔现金。他们当然也不愿意自己被扔到海里。所有 的海盗都是有理性的,而且知道其他的海盗也是有理性的。此外,没有两名 海盗是同等厉害的——这些海盗按照完全由上到下的等级排好了座次,并且 每个人都清楚自己和其他所有人的等级。这些金块不能再分,也不允许几名 海盗共有金块,因为任何海盗 都不相信他的同伙会遵守关于共享金块的安排。 这是一伙每人都只为自己打算的海盗。
最凶的一名海盗应当提出什么样的分配方案才能使他获得最多的金子呢?
为方便起见,我们按照这些海盗的怯懦程度来给他们编号。最怯懦的海盗为 1号海盗,次怯懦的海盗为2号海盗,如此类推。这样最厉害的海盗就应当得 到最大的编号,而方案的提出就将倒过来从上至下地进行。
分析所有这类策略游戏的奥妙就在于应当从结尾出发倒推回去。游戏结束时, 你容易知道何种决策有利而何种决策不利。确定了这一点后,你就可以把它 用到倒数第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名海盗的分配难题。
这篇关于经典推理题——海盗分金子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!