游戏的合并

(重发下这篇原发于 2013-10-13的网易博客)

 

YY了一下证明,好像终于裹清楚了。

 

首先我们把游戏描述为一个集合,集合内每个元素都是个游戏,即它的后继局面。

也就是说我们其实用了个非常奇葩的集合来描述游戏。

这个集合是形如{{{}{}}{}}这样的,从来不包含任何有实际意义的元素,只有集合的嵌套。

那么定义必胜:

集合A为必胜当且仅当它的所有元素都是必败的。

集合A为必败当且仅当它的所有元素中有必胜的。

显然这样子我们就把空集定义为必败了。

 

这样子信息量不够不方便计算。

我们创造性地定义一个函数SG:

SG(A) = 0时A必败,否则必胜。

 

经过一番艰难地思考,发现如果要搞出这样一个函数,只要知道元素中最小的没有出现过的SG值。因为有0一定大于0,无0一定等于0了。

SG(A) = mex({X | X ∈ A})

mex(T)表示没有出现在集合T里的最小的自然数。

 

如果SG函数没有什么很神的性质还不如用原来的必胜必败定义呢……

 

考虑一个经常会遇到的问题:两个游戏的和。有两个游戏A和B,两个人玩,每个人每轮可以操作其中一个,但不能不操作,两个游戏都变为空集时输。

定义运算符+

A + B = {X + B | X ∈ A} ∪ {A + Y | Y ∈ B}

这是个递归定义。

 

于是我们来考虑SG(A + B)

容易知道:

SG(A + B) = mex({SG(X + B) | X ∈ A} ∪ {SG(A + Y) | Y ∈ B})

 

现在到了这里,大胆猜想吧……

经过数学家的一番折腾,发现SG(A + B) = SG(A) ^ SG(B)

其中x ^ y指x和y的异或值。

 

当然是用萌哒哒数学归纳法。

假设集合A、B的所有元素都满足这个性质。

我们证明分两步:

1. SG(A) ^ SG(B) 不属于 {SG(X) | X ∈ A + B}

2. 对于任意0 <= x < SG(A) ^ SG(B), x ∈ {SG(X) | X ∈ A + B}

 

对于1,显而易见是不行的吧

因为归纳假设SG(X + B) = SG(X) ^ SG(B)

故SG(X + B) = SG(A) ^ SG(B)当且仅当SG(X) = SG(A),矛盾了。

同理SG(A + Y)也不行。

 

对于2,我们取一个0 <= x < SG(A) ^ SG(B),即证一定满足x ^ SG(B) < SG(A)或x ^ SG(A) < SG(B)

在二进制下,考虑x ^ SG(B)和SG(A),从最高位往最低位,最高的不同的位为i

那么:

如果x ^ SG(B)第i位 < SG(A)第i位,得证。

如果x ^ SG(B)第i位 > SG(A)第i位,则第i位一定有:

SG(A) = 0

x ^ SG(B) = 1

 

要注意的一点是最高的不同的位为i,说明i位以上x ^ SG(B)与SG(A)均相同,即i位以上x与SG(A) ^ SG(B)均相同

又0 <= x < SG(A) ^ SG(B)

所以第i位,x < SG(A) ^ SG(B)

则第i位一定还有:

x = 0

SG(A) ^ SG(B) = 1

 

综合刚才的结论,则第i位一定还有:

SG(A) = 0

SG(B) = 1

SG(A) ^ SG(B) = 1

x = 0

x ^ SG(B) = 1

x ^ SG(A) = 0

有没有什么感想……最主要的一点是x ^ SG(A) = 0啊!

故第i位上x ^ SG(A) < SG(B),而且i位以上x与SG(A) ^ SG(B)均相同,得到:

x ^ SG(A) < SG(B)

这就证明了如果x ^ SG(B) > SG(A),则x ^ SG(A) < SG(B)

 

这样就给出了SG(A + B)的表达式。

SG(A + B) = SG(A) ^ SG(B)

 

于是这样的题目也可捉了:

Alice和Bob玩游戏,他们有n堆石子,一棵树,一个有个结点染了红色的无向图,一个放了石子的阶梯。

每次可以从某个石子堆中拿走一些石子,或删掉某棵子树但不能为整棵树,或删掉一条边然后去掉不与红色结点相连的连通块,或把一些石子从阶梯上挪到下一层去。

当同时满足石子堆空了,树只剩根,无向图只剩红色结点,阶梯上石子都聚集在最下面时输。

问给定的局面是否必胜。

 

[这里有一张我无法恢复的图]

 

 

如果是不平等博弈,怎么合并呢?

于是我们不仅有先手后手,还有左手右手的区别。

那么我们需要把游戏看成一对集合:(X_L, X_R)

两个集合分别代表左手移动一步能到达的所有可能的游戏局面,右手移动一步能到达的所有可能的游戏局面。

然后发现有个玩意儿叫超现实数,有些特殊的游戏能对应到一个超现实数,然后就帅气了啊……游戏的合并直接能使用加法!

具体请见高德纳写的小说《研究之美》(你没有听错!是本小说!是不是很奇葩!)

 

我总觉得这种合并很神……

你可能感兴趣的:(游戏的合并)