各种博弈论详解 - StungYep - 博客园 (cnblogs.com)
P-position :当前的无法赢 后手必胜 (当前先手
依靠定义证明一下(3,3)是一个P是一个P是一个P-position。
首先(3,3)的子局面(也就是通过合法移动可以导致的局面)有(0,3)(1,3)(2,3)(显然交换石子堆的位置不影响其性质,所以把(x,y)和(y,x)看成同一种局面)了
(0,3)的子局面有(0,0)、(0,1)、(0,2),
其中(0,0)显然是P-position,所以(0,3)是N-position(只要找到一个是P-position的子局面就能说明是N-position)。(1,3)的后继中(1,1)是P-position(因为(1,1)的唯一子局面(0,1)是N-position),所以(1,3)也是N-position。同样可以证明(2,3)是N-position。所以(3,3)的所有子局面都是N-position,它就是P-position。
通过一点简单的数学归纳,可以严格的证明“有两堆石子时的局面是P-position当且仅当这两堆石子的数目相等”。
对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示异或(xor)运算。
1.无法进行任何移动的局面(也就是terminal position)是P-position;<先前赢
2.可以移动到P-position的局面是N-position;<当前赢得,下一轮就是现在赢
3.所有移动都导致N-position的局面是P-position。
如果 对于某个局面(a1,a2,...,an) 是 N_position, 则 a1^a2^...^an != 0, 一定 存在某个 合法的移动,将 ai 改变成ai' 后使得 a1^a2^...^ai'^...^an=0.
不妨设 a1^a2^...^an = k, 则 一定存在某个 ai 它的二进制表示在k的最高位上是1(否则k的最高位那个1是怎么得到的)。 这时令 ai' = ai^k < ai(满足取石头要求) 。
则 移动后的局面 是 (a1,a2, ....ai',...,an), 有a1^a2^...^ai'^...^an = a1^a2^...^ai^...^an^k = 0, 为 P_position。命题得证。