博弈问题的边边角角

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

 

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

 

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是最大的数)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值