博弈问题的边边角角

来源:互联网 发布:淘宝卖洗衣液什么规则 编辑:程序博客网 时间:2024/05/16 00:41

(可能顺序很乱,但为了保持原状,我不做修改了..这就是我体验博弈时的顺序)

 

分析局面,而不是谁胜谁负!!!

 

Terminal局面:无法做出move的局面

 

Previous局面:无论做出哪种move,都会造成N局面的局面

P-->当前的前人会获胜,所以当前败

 

Next局面:至少有一个move可以造成P局面

N-->当前胜

 

T局面是P还是N要根据规则判断(无法移动则输:T=P;无法移动则赢,或者说最后取子则输:T=N)

 

N必胜的方法:每次移动到P即可,就可以保证必胜

 

普通规则下:

g(x)=mex{g(y)|y属于x的后继},x=T,g(x)=0(递归的边界情况)

x为T时,g(x)=0

g(x)=0  ==> P

g(x)!=0 ==> N

 

g(x)的物理意义:g(x)==0,表示x的后继局面中没有P局面,那么当前局面是P局面,表示无法必胜;当g(x)>0时,表示至少有一个后继局面为P局面,证明当前局面为N,必胜

 

证明步骤:1.证明T局面满足;2.证明对P局面而言,确实没有能造成N局面的移动;3.证明N局面至少有有一种移动造成P局面

 

注意,证明过程中一般涉及到量的减少,可能要用到异或的性质,分析量的变化

 

异或性质:

a^a=0(a本身是a的逆)

a^0=a(0是单位元)

 

NIM和定理:

如果一个游戏由多个平行游戏组成,我们可以分别计算其g(x),而G(x1,x2,..,xn)=g(x1)^g(x2)^...^g(xn).这样就避免了在计算G(x1,x2,..,xn)的时候需要把所有的情况都遍历一遍G(x1,x2,..,xn)=g(x1)*x2*..*xn * x1*g(x2)*..xn..

这样就把一系列乘法阶的复杂度,降低为加法阶

 

NIM的sg

g(x)=a1^a2^..^an

 

Subtraction的sg

g(x)=x(%m+1)(m是最大的数)

 

原创粉丝点击