系统设计之海盗分宝石问题

从前,在海上有5个海盗,一次他们抢到100颗价值连城的钻石,但如何分配这些钻石成了问题,5个人都很贪婪,且又都极为聪明,于是他们想一出个办法。办法是这样,通过抓阄的方式确定一个从1到5的先后顺序,然后由第1个人提出一个分配方案,如果这个方案获得半数以上的支持,那么就按这个海盗的方案执行,倘只是达到半数或低于半数,那么这个海盗将被扔到海里。接着再由第2个人提出新的分配方案,同第1个人一样,不能达到半数以上,这个海盗也会被扔到海里喂鱼。如此下去,直到有一个人的方案能够最终获得半数以上的支持。 现在问题出来了,如果你是第1个强盗,你提出一个什么样的分配方案,在保住小命的前提下还能获得最多的钻石?

 

海盗钻石方案:首先5个海盗都能投票。

利用倒推法:

假设1,2,3号海盗被扔入海里,4号海盗不想被5号海盗扔入海里4号海盗方案就是:4号:5号为0:100。5号绝对同意。

假设1,2号海盗被扔入了海里,3号海盗要获得一票支持再加上自己的一票就能通过,3号海盗只需给4号海盗比他方案多一颗就会获得4号海盗同意,所以3号海盗方案:3号:4号:5号为99:1:0。

假设1号海盗被扔入进了海里,2号海盗加上自己一票只需再获得两票就行了,只需根据3号海盗方案多给4号和5号一颗钻石,2号海盗方案:2号:3号:4号:5号为97:0:2:1。

所以1号海盗方案只需多给3,4,5号海盗一颗钻石他们就会同意。

1号海盗方案:1号:2号:3号:4号:5号为94:0:1:3:2。

posted @ 2018-02-01 15:21  jxr041100  阅读(404)  评论(0编辑  收藏  举报