关于sg函数异或和转移的证明

学过博弈论的都知道,当多个博弈同时进行(比如尼姆博弈)时,我们通过将其各个博弈状态的 s g 值求个异或和以确定其输赢情况,其中我们发现:
1.当异或和为 0 的时候,我们怎么转移,异或和都不为 0
2.当异或和不为 0 的时候,我们一定至少一种转移方法可以使得异或和为 0

也是基于这两个结论,我们才能通过求异或和的方式确定输赢。

那么如何证明这两个结论呢?

证明1:
已知 n 个数异或和为 0
证明无论如何转移,异或和都不为 0

反证法
假设我们可以转移到异或和为 0 的状态
设我们所改变的其中一个状态的 s g 值为 k ,改变之后的状态的 s g 值为 k ,其余所有的状态的 s g 值异或和为 t
由于当前异或和为0可知
k ^ t = 0
由于状态改变之后 k 变成了 k ,我们可以转化为原来的异或和先异或一个 k 再异或一个 k ,且异或和仍然为0
k ^ t ^ k ^ k = 0
k ^ k = 0
k = k
显然不符合 s g 函数的性质
所以假设不成立
所以异或和为0的状态一定只能转移成异或和不为0的状态。

证明2:
已知当前异或和不为 0
证明一定有一种转移可以使异或和为 0

设当前异或和为 k
设k的二进制中第 a 1 , a 2 a n 位为1(其中 a 1 > a 2 > > a n
当前的所有博弈状态一定可以找到一个状态的 s g 值的第 a 1 位为 1
设这个状态为 J J s g 值为 R
R a 1 , a 2 a n 位取反,得到一个数 P
因为 R 的第 a 1 位为 1 P 的第 a 1 位为 0
所以 P < R
根据 s g 函数的性质, s g 值为 P 的状态 J 一定可以转移到 s g 值为 P 比他小的状态
而当异或和中的一项 R 变为 P 之后,异或和变为 0
所以异或和不为 0 的状态一定可以转移到异或和为 0 的状态

证毕
(因为不熟悉markdown语法,写得有点繁琐,以后有空改一下)

猜你喜欢

转载自blog.csdn.net/qq_36614777/article/details/80517344
今日推荐