博弈论 笔记
daitouzero · · 算法·理论
天坑+1
巴什游戏
基础版本
一堆共
当
证明如下:
当石子个数是
k+1 的倍数时,无论先手怎么取,后手都能在先手取完后再取出一些石子使得两人取走的石子数是k+1 到最后只剩
k+1 个石子时,那显然后手会最后取走石子
变式 1
即P4018 Roy&October之取石子
题意:
共有
n 个石子,每次都只能取p^k 个(p 为质数,k 为自然数,且p^k\le 当前剩余石子数),取走最后一个石子赢先手必胜的条件是什么?
如果
证明如下:
-
当
n\in[1,5] ,先手显然可以一次取完 -
当
n\mid 6 时,因为一定不存在质数的幂次为6 的倍数,所以先手拿不了6 的倍数,后手只要不断使得剩余的石子\mid 6 ,就可以保证先手拿不到最后的
变式 2
取石子的数量不是
貌似并没有什么结论,但我们有一种类似于
我们定义
经过推理,有三条比较显然的性质
- 没有后继状态的状态是
P-position - 如果一个状态是
P-position ,那么他一定存在一个后继状态为N-position - 如果一个状态是
N-position ,那么他的后继状态一定全为P-position
我们考虑掏出一张表
假设
|rest|0|1|2|3|4|5|6|7|8|
------------------------
|N/P |P|N|P|N|P|N|P|N|P|
特殊规定当剩余石子为
发现没有?从小到大递推,对每个位置检查他可能的后继节点,当后继节点有
注意到这有循环节,Coding 可以 DP 也可以按周期算
尼姆游戏
基础版本
就是把巴什游戏扩展到多堆石头
有
若每堆石子的数量异或起来为
我们把这个异或和定义为
证明过于鬼畜,抄一下白书(我觉得这个证明有点扯淡但是我也不会证明)
定理:当
必定能够从
N-position 转换到P-position 。具体方法就是任选一堆石子,把其他的石子异或以来,如果值小于这一堆,就肯定能使得异或和为0 进入
P-position 后,轮到后手,后手不管怎么拿绝对会使得异或和不为0 ,因为异或和可以看成二进制每一位1 的奇偶性,所以必败游戏过程中若按上述步骤,就会在
N/P-position 之间交替转换,直到石子数为0 ,即终止于P-position
威佐夫游戏
是一种非常神奇的游戏
规则
有两堆石子,个数分别为
必胜条件
假设
证明?不会
图游戏与 Sparague-Grundy 函数
又是个大坑
图游戏
给定一个 DAG ,在一个起点上放一个棋子,两个玩家交替移动这个棋子,无法移动的那个输
像巴什游戏和尼姆游戏这样的
SG函数
我们定义一个节点的 SG 函数值为它的后继节点所有 SG 值里没有出现过的最小非负整数
就比如如果他 SG 子节点值有
数学家们发现,当 SG 值为
应用
图游戏和 SG 函数结合可以在博弈论方面发挥强大的作用
由多游戏组合而得的‘多堆游戏’
以 1666:取石子游戏 为例
多堆石子,一次取的个数有限定,可以看成是由多个刚开始巴什博弈中的变式组成的游戏
因为石子一堆与另一堆之间并无区别,所以每个子游戏的 SG 函数值可以共用
不妨直接求出只有一堆时,石子数从
那么总游戏的 SG 值就是所有子游戏(具体到每一堆)的 SG 值的异或和
若它为
再以 1665:【例 3】移棋子游戏 为例
多个棋子看似难搞,但本质还是多游戏组合而来,一样可以用上面的方法
暴力求出每一个节点的 SG 值,然后看所有起点的 SG 值的异或和即可
为