三种类型博弈(bash + nimm +wythoff)

来源:互联网 发布:spark save json 编辑:程序博客网 时间:2024/05/17 06:45
bash 博弈
假设A 和 B 玩 一个取石子的博弈,有总数为 N 的石子 ,一人能取  1~ M 个石子。
若 N % (M+1)  != 0 , 则先手胜;只要先手开始取石子,让剩下的石子 一直为(N+1)的整倍数,为先手的必胜局面;
N % (M+1)  == 0 , 则后手胜;同理的,只要开始先手打破平衡,先取石子,后手再取,让剩下的石子 一直为(N+1)的整数倍,则为后手的必胜局面;

Wythoff 博弈   // 这一段实在不知如何描述,所以摘抄了别人部分文字。

 有两堆火柴棍,每次可以从某一堆取至少1根火柴棍(无上限),或者从两堆取相同的火柴棍数。最后取完的是胜利者。
首先我们知道两堆火柴是没有差别的,也就是说第一堆有a,第二堆有b根和第一堆有b,第二堆有a根是一样的结果。

   我们用一个二维的状态(a,b)来记录当前剩下的火柴数,表示第一堆剩下a根火柴,第二堆剩下b根火柴。同样我们假设两个人的编号是AB,且A先取。

那么如果某个人遇到了这样的状态(0,0)那么也就是说这个人输了。这样的状态我们叫做奇异状态,也可以叫做失败态。


必败局势:(ak,bk)       ak =[k(1+√5)/2],bk= ak + k (k=0,1,2,…,n 方括号表示取整函数)
即为:(n, m)     n == (m - n)*(1 + sqrt(5) )/2 (n < m)




Nimm 博弈
指的是这样的一个博弈游戏,目前有任意堆石子,每堆石子个数也是任意的,双方轮流从中取出石子,规则如下:
1)每一步应取走至少一枚石子;每一步只能从某一堆中取走部分或全部石子;
2)如果谁取到最后一枚石子就胜。
也就是尼姆博弈(Nimm Game)。

例如  a,b,c
a^b^c  == 0  则 为 先手的 必败局面;
a^b^c != 0  则为 先手的必胜局面;
0 0
原创粉丝点击