博弈游戏的各类经典模型(备忘)

SG函数的计算方法:函数

一个局面的SG为mex{后继局面的SG}游戏

mex运算为集合中没出现的最小的天然数二进制

几个局面的和的SG为单个的SG亦或方法

SG不为0时先手必胜,SG为0时后手必胜im

 

1.Nim Game集合

最为经典移动

n堆石子,每次能够从一堆里面取任意个石子cas

对于一堆石子,SG函数就是石子数数字

整个游戏的SG函数是每一堆石子的SG函数的亦或和

必胜:SG不为0

必败:SG为0

 

2.Bash Game

每次最多取m个石子,其余同Nim

一堆石子的SG函数为石子数mod(m+1)

整个游戏的SG函数是每一堆石子的SG函数的亦或和

必胜:SG不为0

必败:SG为0

 

3.Nimk Game

每次最多能够同时从k堆石子进行操做,这k堆能够取不一样数量的石子

一堆石子的SG函数为石子数

对每个二进制位单独算,求SG函数每个二进制位1的个数mod(k+1),若是都为0,则必败,不然必胜

证实:

对于必败态无论怎么走都只能走到必胜态

对于变化的SG的最高位,你至少变化为1,最多变化为k,因此这一位1的个数不可能mod(k+1)仍是为0

对于必胜态咱们确定能够找到一种方法走到必败态

咱们从高位往低位作,记s为这一位能够随意填值的数字个数(若是把某一位从1变成0,那么更低位就能随便取值了)

假设咱们如今作到第k位,记n为除了能随便取值的s位之外这一位1的个数mod(k+1)

若是n+s<=k,那么很简单,咱们取出n个第k位为1的让这些数字的第k位变成0,那s个数字这一位也变成0,而后s+=n

若是n+s>k,即n+s>=k+1,那么s>=k+1-n,咱们在s中间取k+1-n个变为1,其余变为0就能够知足条件了

 

4.Anti-Nim Game

不能取石子的一方获胜

必胜:SG不为0且至少有一堆石子数大于0,SG为0且每一堆石子数都为1

必败:其他为必败

 

5.Staircase Nim

阶梯博弈

每次能够从一个阶梯上拿掉任意数量石子放到下一层阶梯,不能操做的为输

SG函数为奇数阶梯上的石子的亦或和

若是移动偶数层的石子到奇数层,对手必定能够继续移动这些石子到偶数层,使得其SG不变

 

6.Wythoff Game

有两堆石子,每次能够从一堆或者两堆里拿走同样数目的石子,不能取的为输

必败态为(1,2)(3,5)(4,7)(6,10)...

差为1,2,3,4.....每一对数的第一个数为前面没出现的最小的正整数

 

7.Take & Break

每次能够把一堆石子分红两堆甚至多堆不为0的石子,不能操做的为输

暴力计算SG

 

8.树上删边游戏

给定根节点,每次能够删掉一条边,不与根节点相连的部分删除

叶子节点SG为0,其余节点的SG函数为子树SG+1的亦或和

证实:

将子树SG+1看作石子数(咱们能够定义没有节点的图的SG为-1),而后就变成了取石子游戏

 

9.无向图删边

规则同树上删边游戏

结论:把奇环缩成一个点加一条新边,把偶环缩成一个点,不影响SG,而后套用树上删边游戏

 

10.翻硬币游戏

n枚硬币排成一排,有的正面朝上,有的反面朝上。
游戏者根据某些约束翻硬币(如:每次只能翻一或两枚,或者每次只能翻连续的几枚),但他所翻动的硬币中,最右边的必须是从正面翻到反面。
谁不能翻谁输。

须要先开动脑筋把游戏转化为其余的取石子游戏之类的,而后用以下定理解决:
局面的 SG 值等于局面中每一个正面朝上的棋子单一存在时的 SG 值的异或和。

 

证实的基本套路:

必胜局面存在一个操做到达必败局面,必败局面不管怎么操做都会到必胜局面

相关文章
相关标签/搜索