nim游戏和SG函数

1.无法进行任何移动的局面(terminal position)是P-position.(先手必败)

2.可以移动到P-position的是N-position.(先手必胜)

3.所有可行的移动都导致N-position的是P-position.(先手必败)


mex(minimal excludant)运算:

对一个集合进行运算,返回不属于这个集合的最小非负整数.例如:mex{0,1,2,4}=3;mex(2,3,5)=0;mex{}=0.


更为一般的游戏:

给定一个有向无环图和一个起始点顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移动者判负.这个游戏是所有Impartial Combinatorial Games的抽象模型.


在这个游戏的基础上定义sg函数:

sg(x)=mex{sg(y)|顶点y是x的后继}.

1.terminal position对应没有出边的顶点i,sg(i)=0,对应于P-position,先手必败.

2.如果一个顶点i的sg函数值sg(i)=0,则它的所有后继顶点j都满足sg(j)!=0,此时的顶点i对应P-position,先手必败.

3.如果一个顶点i的sg函数值sg(i)!=0,则它的全部后继顶点中,至少存在一个顶点j满足,sg(j)=0,此时的顶点i对应N-position,先手必胜.

按照这个方法,可以求出图中每个顶点的sg函数值,不仅可以得到解,还可以得出求解的状态转移过程.


但是这种方法还是很复杂的,时间复杂度很高.


游戏的扩展:

有向图中并不是只有一枚棋子,而是有n枚棋子,每次可以任意选择一颗进行移动,这时,如何求解?


sg函数与nim游戏的对应理解:

当g(x)=k时,表明对于任一个0<=i<k,都存在x的一个后继y满足g(y)=i.也就是说,当某枚棋子的sg值是k是,移动这枚棋子,可以将其sg值变成0,或者1,或者2.....或者k-1,但绝对不能保持k不变.

如果把这n枚棋子看成n堆石子,第i枚棋子的sg值看成第i堆石子的数量(1<=i<n),则这两个游戏在本质上就是等价的.在有向无环图上任选一个棋子(sg值为m)移动到下一个顶点(sg值为n)等价于在n堆石子中任选一堆石子(石子总数w为m)拿出m-n个石子(剩下的石子堆石子总数为n)(0<=n<m).

这里有几点值得注意:

基本的nim问题terminal position只有一个,就是所有的石子数量都为0,同时每一个石头堆(数量为n),可以拿掉任意数量个石子i(1<=i<n).

所以基本的nim问题对应的有向无环图也必须相应的满足以上两个条件!

比如当只有一堆石头(数量为3)的时候,这个nim问题对应的有向无环图为:


为什么会有异或运算强势介入:

基本nim游戏的唯一terminal position为所有石子堆的石子个数为0,此时n堆石子的二进制表示的异或运算和s为0.也就是P-position状态下s=0,先手必输.

当至少有一堆石子的数目不为0,即处于非terminal position时:

如果s=0,则无论如何行动,结果都会导致s!=0,因为t = sxkyk,Xk和Yk不相等.由P-position转为N-position.

如果s!=0,则一定可以采取适当的策略使得s=0,=sxk ⊕ (sxk)适当选取Xk,可以保证移动是合法的.由P-position转为N-position.

异或运算的出现,使得不用一步一步的进行计算(判断所有可能的情况),而是抓住了某种特征,一步到位的完成计算(精髓在此).


一个有向无环图变成多个:

刚才的问题是在一个有向无环图上移动n枚棋子,很容易将其变成在n个完全一样的有向无环图上移动一枚棋子.


定义有向图游戏的和:

设G1,G2,....Gn是n个有向图游戏,定义游戏G是所有游戏的和.

游戏G的移动规则是任意选择一个子游戏Gi并移动上面的棋子.根据Sprague-Grundy Theorem,可以得出:

sg(G)=sg(G1)^sg(G2).....^sg(Gn).也就是说,游戏的和的sg函数值是它的所有子游戏的sg函数值的异或.

更加重要的是,当各个子游戏不同的时候,上面的结论也成立.所以我们完全可以将所有的nim游戏分解成多个子游戏,然后分别求出sg值,最后异或求和,得出解.这样就十分的方便了.







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值