现有100名海盗,这些海盗的战斗力分别是1、2、3、4、……、100。
战斗力高的当然能打赢战斗力低的,比如,100可以干掉99,也可以干掉50+49,也可以干掉1+2+3+4+5……只要合计战斗力比不上对方,再多的人也没用。
同等战斗力下,人数多的能打赢人数少的。比如,6打不过3+2+1,20打不过10+4+6。
同等战斗力同等人数下,战斗力最高的人在哪边,哪边就能赢。比如20+10可以干掉16+14。
现在他们要要瓜分100枚金币。从战斗力100的人先提出方案。
反对派的战力如果胜于支持派(提案者也属于支持派),提案者就要被扔下海里喂鲨鱼,然后让剩下来战斗力最高的人继续提案,直到支持派的实力足以战胜反对派,那么方案将获得通过。
还有两个重要假设(抄自Mercury Liao的帖子):
1. 所有海盗都是追求本身利益极大化的,也就是说对任何一位海盗来说,A议案和B议案比较,如果自己能从A议案获得的金币多于B议案,那肯定支持A议案而不支持B议案。并且,获得0枚金币也好过被丢进海里喂鲨鱼。
(如果某海盗P从A议案得到的金子与B议案一样多,而A议案是目前最强战斗力的海盗提出的议案,那海盗P会投反对票,因为海盗都乐于看到比自己凶狠强悍的同伴被丢下海。)
2. 所有海盗相互之间都知道彼此是"极其聪明"的(看来这个行业门槛很高哈哈),这意味着对任意两个海盗A和B,A知道轮到B时B会提怎样的分配案,而B也知道A知道轮到B时B会如何提案。
问:如果你是战斗力100的那个家伙,你会提出怎样的方案?
如果要写一个Prolog程序解决,该如何着手?
战斗力高的当然能打赢战斗力低的,比如,100可以干掉99,也可以干掉50+49,也可以干掉1+2+3+4+5……只要合计战斗力比不上对方,再多的人也没用。
同等战斗力下,人数多的能打赢人数少的。比如,6打不过3+2+1,20打不过10+4+6。
同等战斗力同等人数下,战斗力最高的人在哪边,哪边就能赢。比如20+10可以干掉16+14。
现在他们要要瓜分100枚金币。从战斗力100的人先提出方案。
反对派的战力如果胜于支持派(提案者也属于支持派),提案者就要被扔下海里喂鲨鱼,然后让剩下来战斗力最高的人继续提案,直到支持派的实力足以战胜反对派,那么方案将获得通过。
还有两个重要假设(抄自Mercury Liao的帖子):
1. 所有海盗都是追求本身利益极大化的,也就是说对任何一位海盗来说,A议案和B议案比较,如果自己能从A议案获得的金币多于B议案,那肯定支持A议案而不支持B议案。并且,获得0枚金币也好过被丢进海里喂鲨鱼。
(如果某海盗P从A议案得到的金子与B议案一样多,而A议案是目前最强战斗力的海盗提出的议案,那海盗P会投反对票,因为海盗都乐于看到比自己凶狠强悍的同伴被丢下海。)
2. 所有海盗相互之间都知道彼此是"极其聪明"的(看来这个行业门槛很高哈哈),这意味着对任意两个海盗A和B,A知道轮到B时B会提怎样的分配案,而B也知道A知道轮到B时B会如何提案。
问:如果你是战斗力100的那个家伙,你会提出怎样的方案?
如果要写一个Prolog程序解决,该如何着手?