码迷,mamicode.com
首页 > 其他好文 > 详细

博弈论

时间:2016-01-15 14:37:23      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

1.nim游戏

  nim游戏的一般描述是这样的,有n堆石子,AB两个人每轮分别可以从某一堆石子中选择任意多个拿走,若到某一轮某个人不能拿石子了,那么判这个人输。如果这两个人都足够聪明的话,那么A先选择的话谁能够获胜。

  我们称非必胜态的状态为必败态。  

  结论是全部异或操作之后结果为零时为必败状态,其余状态为必胜态。

  证明

  (1)当n等于2的时候

  两堆石子个数相同的时候为必败态,因为后手可以模仿先手而将两堆石子的数量调成相同,如先手将某一堆拿走m个石子,那么后手可以在另一堆拿走m个已达到两堆石子相同,那么先手必定会面领两堆石子都为0的状态。

  (2)以n>2的时候

  证明如下三点的时候能够证明某一状态是否为必胜态。

  (1)某状态的下一个状态的所有情况都为必胜态的时候,此状态为必败态。

  (2)某状态下有必败态的时候,则此点为必胜态

  (3)终点状态可确定

  将所有堆的石子数做异或运算,令结果为0时为a状态,其他状态为b状态。

  所有堆石子数均为零时为必败态,也为a状态,我们只要证明a状态的下一个状态必为b状态,b状态的下一个状态可以为a状态。那么b状态即为必胜态。

  证明① b状态一定能转化成a状态

      设b状态时所有堆数异或结果为x,设x的二进制最高位位为w,找出x的最高位所在的石子堆(设此石子堆的石子数位y),将此石子堆的数量变成y^x,此时相当与拿掉了y并且加入了一个y^x的石子堆,异或结果为x^y^(y^x)为0,也可以很显然的知道y一定是大于y^x的。

  证明② 异或结果是零的下一步不可能是异或结果为零。

    每个堆里面含有不同的一些二进制位,相同的二进制位必定存在于不同的两个堆里面。

 

博弈论

标签:

原文地址:http://www.cnblogs.com/icodefive/p/5109457.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!