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

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

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

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

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

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

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

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

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

你可能感兴趣的:(ACM—博弈论)