一个有意思的博弈问题

原创 2007年09月18日 11:53:00
翻书看到一道挺有意思的博弈问题,据说是冯.诺伊曼提出来的。

    "三个人持枪决斗。A的枪法最差,成功率为1/3;B的成功率稍好,为2/3;C的枪法最准,每击必中。决斗规则如下:三个人轮流开枪,枪法最差的A有最高的开枪优先级,B次之,C最低。
   
    假设你是A,采取什么样的策略,才能使自己活命的概率最大?"

    这题不仔细考虑的话,凭直觉定会选择向C开枪,因为C的威胁最大!如果给C开枪的机会的话,自己就太危险了。

    然而且慢。假使C有开枪的机会,C会如何行动?
因为C知道自己一定能打死目标它一定会选择向A、B中未死的、对自己威胁最大的人下手,,这样会将自己开第二枪的机会概率提至最高。这意味着,只要B活着,C就不会考虑向A下手。

    因此,A应该选择让B活着,"天塌下来有高个子顶着";向B开枪是不明智的!

    所以,A选择向C开枪,岂不是很合理的选择?

    我们再从B的角度考虑一下。

    同样,试着从B的角度考虑问题。
假设B有机会开枪的话,如果C活着,B一定会选择向C开枪,因为B也知道C的想法——C一定会从A、B中优先选择B。所以 B如果向A开枪的话,死亡概率为1;而如果向C开枪的话,死亡概率为1/3。如果A之前居然选择了向C开枪并很走运的打死C的话,那么B只有选择将枪口对 准A了。
   
    所以,形势现在明了了,对于A来说,最佳选择是一方面要保证B活着为自己顶着C,另一方面是要C活着让B无暇考虑自己。

    所以A的最佳选择是,放空枪,让B、C均活着,这样B一定会向C射击,而无论B的射击结果如何,A有100%的机会开第二枪,对手或是B,或是C。

    令p(x)代表A选择向x射击的情况下有机会开第二枪的概率,x=B,C,NULL

    则
p(NULL)=1

    而无论A选择向B还是向C开枪,他有开第二枪的机会都小于100%,这个可以很简单的计算出来。

   
    p(B)=(1/3)*0 +(2/3)=2/3
    p(C)=(1/3)*(1/3)+2/3=7/9

   
    想清楚这个问题后,不妨试着将这个问题联系实际一下。在真实世界中,当然不会有这种骑士精神十足的"礼让弱者先动手"的规则,然而强者由于有自信保证自己的安全而不会盲目的攻击,而弱者由于缺乏安全感往往会选择“先下手为强”。所以,这个游戏规则和现实世界在结果上还是很相似的:总是弱者先动手的可能性大。

    那么,如果我是最强者C,想要干掉A、B,有什么好策略呢?我可以故意示弱,让A、B认为我是最弱者而且我理智的选择了“放空枪”,这样就可以诱使A、B对掐,而在对掐结果出来后,我再暴露自己的真实实力,一击必中的干掉A、B之中的胜者,从而以最小代价、最大概率的取得最终胜利。

    这个计策是不是很阴险?
   

一个有意思的博弈

题目描述有两个人玩游戏,轮流取物品。每个物品对不同的人都会存在不同的价值。对手使用的贪心原则,也就是说在每一步对手都会选择对他价格最大的物品。当存在多个物品价格相同的时候,对手会随机选择一个物品。这个...

数学家高斯的问题,一个有意思的小算法,根据高斯整数计算日期

数学家高斯的问题,一个有意思的小算法,根据整数计算日期
  • cmm0401
  • cmm0401
  • 2017年01月18日 09:51
  • 505

一个有意思的小程序,考验多线程问题能力

题目: 1. 某银行有至多三个窗口提供服务。 2. 该银行每天至多服务100人次; 3. 初始时,只有一个窗口开放,如果等待人数超过两人(包含正在办理业务的人),才开放下一个窗口。 模拟业务办理过程:...
  • xeseo
  • xeseo
  • 2013年07月25日 12:15
  • 585

一个挺有意思的小问题Html控件和Web控件

问题描述: 在一个Asp.net页面中添加一个TextBox控件,一个Html标签,一个Button控件,一个Label控件。代码如下: Code highlighting produce...
  • aley
  • aley
  • 2015年03月27日 09:24
  • 690

一个有意思的Ruby Webdriver超时问题的解决过程

因为写ruby的时候感觉混身上下都拽起来了,所以比较喜欢用ruby写代码。今天遇到了一个webdriver timeout的问题,问题本身还是因为我对webdriver不了解以及破文档导致的。首先我们...

遇到一个比较有意思的NIO问题!

关于NIO的ByteBuffer操作很多人都会,但有时候稍不注意就会犯错。比如:private void doWrite(SocketChannel sc, String response) thro...

java面试时遇到的一个有意思的小问题

面试小问题,不小心就是坑

很有意思的一个小问题

$test = Array(); foreach ($Attrs as $key => $attr_arr) { //将各种类型的输入项分类 ...
  • th_php
  • th_php
  • 2017年07月31日 14:25
  • 65

记录一个小有意思的改变路径的问题

在服务器上的目录有特殊字符,如下图所示: 可以看到上图中第二个为特殊字符组成的名称,在cd的时候会出现错误,如下所示: 可以看到如上所示,在使用各种转义字符的时候都无法进入此目录,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个有意思的博弈问题
举报原因:
原因补充:

(最多只允许输入30个字)