博弈论
SG函数
(mes)运算:取不属于该集合的最小的非负整数。
例如:(mex left { 0, 1, 3, 4, 5, 6,7,8,9 ight } = 2)
SG函数定义:(SG(x) = mex left { SG(y) | y为x的后记 ight })
1.出度为0的点(x),SG(x) = 0;
2.SG(x) = 0, x为必败点。
SG定理:(SG_{tot} = SG_1 xor SG_2 xor SG_3 xor ... xor SG_n)。
巴什博弈
只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。
(n \% (m + 1) != 0) 先手胜,反之后手胜。
改一下:如果谁取到最后一个谁输,((n - 1) \% (m + 1) == 0 ?) 后手胜:先手胜
威佐夫博弈
威佐夫博弈(Wythoff's game)是指的这样一个问题:有两堆各若干个物品,两个人轮流从任意一堆中取出至少一个或者同时从两堆中取出同样多的物品,规定每次至少取一个,至多不限,最后取光者胜利。
((y - x) * frac{sqrt5 + 1}{2} = x (y > x))时,先手败。
Fibonacci博弈
有一堆个数为n的石子,游戏双方轮流取石子,满足:
1.先手不能在第一次把所有的石子取完;
2.之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍)。
约定取走最后一个石子的人为赢家,求必败态。
当n为fibonacci数字时,先手必败。
Nim游戏
有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。
(a_1 xor a_2 xor ... xor a_n == 0 ?)后手胜:先手胜
阶梯Nim
存在n个从高到低排布的阶梯
我们只可以从到相邻的低阶梯移动棋子
最低阶梯的棋子就相当于拿走
(a_1 xor a_3 xor a_5 xor ... xor a_{left lfloor frac{n - 1}{2} ight floor * 2 + 1} == 0 ?)后手胜:先手胜
Anti_Nim
取走最后一个算输。
一些定义:
孤单堆:这一堆只有一个石子;
充裕堆:这一堆大于一个石子;
T态:异或和为0;
S态:异或和不为0;
S0态:S态充裕堆为0个;(必败)
S1态:S态充裕堆为1个;(必胜)
S2态:S态充裕堆大于1个;(必胜)
T0态:T态充裕堆为0个;(必胜)
T2态:T态充裕堆大于1个;(必败)(不可能有T1态)
定理:每堆只有一个且异或和为0必胜,至少存在一堆石子多余一个且异或和不为0必胜。