引子
在许多地方曾经流行这样一个小游戏:摆出N堆硬币,第i堆硬币有Ai个。两名玩家轮流行动,每次可以任选一堆,从中取走最后一件物品者获胜。两人都采用最优策略,问先手能否必胜。
问题归纳
这种游戏:NIM博弈
游戏中的状态:局面
整局游戏第一个行动的:先手
整局游戏第二个行动的:后手
某一局面下采取任何行动都会输:必败
若在某一局面下存在某种行动,使对手面临必败,则优先采取该行动:最优策略。同时,这样的局面被称为必胜
定理
NIM博弈先手必胜,当且仅当A1 xor A2 xor … xor An !=0
证明:
所有物品被取光显然是个必败局面(对手取走最后一件物品,已获胜),此时: A1 xor A2 xor … xor An =0
对于任意一个局面,如果 A1 xor A2 xor … xor An =x(x!=0),设x的二进制表示下最高位的1在第k位,那么至少存在一堆石子Ai,它的第k位是一。显然Ai xor x<Ai,我们就从Ai中取走若干石子,使其变为Ai xor x,就得到了一个各堆石子异或起来等于0的场面
对于任意一个局面,如果A1 xor A2 xor … xor An = 0,那么无论如何取石子,得到的局面下各堆石子异或起来都不可能=0.假设Ai被取成了A’i,并且A1 xor A2 xor … xor A’i xor… xor An = 0.由消去律得A’i=Ai,相当于没有取石子。
ps:不懂消去律的话可看这篇文章:https://blog.csdn.net/wukong412/article/details/37691431
公平组合游戏
若一个游戏满足:
1.有两名玩家交替行动
2.在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关
3.不能行动的玩家判负
NIM博弈属于公平组合游戏但围棋不属于公平组合游戏
有向图游戏
给定一个有向无环图,图中有唯一的一个节点,在起点上放有一枚棋子。两名玩家交替地把这枚棋子沿有向边进行移动,每次可以移动一步,无法移动者判负。这被称为有向图游戏。
公平组合游戏----->有向图游戏
方法为:把每个局面看成图中的一个节点,并且从每个局面向沿着合法行动能够到达的下一个局面连有向边
Mex运算
设S表示一个非负整数集合。定义mex(S)为求出不属于集合S的最小非负整数的运算即:mex(S)=min{x}x不属于S
SG函数
在有向图游戏中,对于每个节点x,设从x出发有k条有向边,分别到达节点y1,y2,…yk,定义SG(X)为x的后继节点y1,y2…yk的SG函数值构成的集合再执行mex操作的结果,即:SG(x)=mex({SG(y1),SG(y2)…SG(yk)})
有向图游戏的和
有向图游戏的和的SG函数值等于它包含的各个子游戏SG函数值的异或和
即:
SG(G)=SG(G1) xor SG(G2) xor … xor SG(Gm)