您的位置:首页 > 其它

博弈初识

2015-06-11 12:15 295 查看
常见的3种博弈游戏:

nim game(异或理论):

m堆n个物品,两人轮流取,每次取某堆中不少于1个,最后取完者胜。

这个游戏的变量是堆数k,以及各堆的硬笔数n1,n2,n3---nk。要解决的问题是游戏人A获胜还是游戏人B获胜。假设A先取,B后。现在来研究策略:

特殊情况:当只剩一堆子,必是A获胜。

当剩下两堆子,如果n1!=n2,A从大堆中取子使得最后两堆子的个数相等。B取子后必然打破这种平衡态,再一次让n1!=n2,A重复刚刚的步骤,B也重复。最后可以推测出A取完一堆的子,两堆变成0,又达到平衡态,A获胜。

一般情况:有k堆子,各堆的个数是n1,n2,n3----nk。把所有的个数统统展开成2进制数:

n1=am---a2a1a0

n2=bm---b2b1b0

…… (例如:57=111001)

nk=wm---w2w1w0

设s0=a0+b0+……+w0; s1=a1+b1+……+w1 …… sm=am+bm+……+wm。

我们称si是偶数时为平衡态,是奇数时为非平衡态。于是当所有的对应位数和si是偶数时为平衡态,要是有一个si是奇数则为非平衡态。

对于一般情况:假设取子游戏是非平衡的,非平衡位是j位,A取子使得j位变回平衡态(要是有多个非平衡位就变多个对应位为平衡位)。B处在平衡态,他取子后必然会变成非平衡态,A重复刚刚的步骤,B也重复。最后可以推测出A取完一堆的子,两堆变成0,又达到平衡态,A获胜。

因此的到结论:游戏人A能够在非平衡态的nim取子游戏中获胜,而游戏人B能在平衡的nim取子游戏中获胜。

模拟一般情况:







计算模拟:

所有堆的子数的二进制异或是0(平衡态),A(先手)输。(用异或快速判断各位数字和奇偶性,0为偶,非0为奇)

所有堆的子数的二进制异或不是0,B(后手)输。

bash game(同余理论):

一堆n个物品,两人轮流取,每次取1至m个,最后取完者胜。



Wythoff Game(黄金分割):

两堆(ak,bk)(ak<=bk)个物品,两人轮流取,每次从一堆中取k个或者从2堆中同时取k个,最后面对(0,0)局面的输。





奇异局的判断:黄金比例是φ=1.618033 ,Ak=[k*φ],Bk=Ak+k=[k*φ*φ]

判断策略是 k = bk-ak ,如ak=k*φ时,当前局势为奇异局(必输局)。

如果堆中数量随机,先手一方优势很大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: