模板:博弈论常用SG函数

16 篇文章 1 订阅

博弈论常用SG函数

一个局面的 SG 为 mex(后继局面的 SG),mex 运算为集合中没出现的最小的自然数。几个 局面的和的 SG 为单个的 SG 异或,SG 不为 0 时先手必胜,SG 为 0 时后手必胜。

Nim Game

n 堆石子,每次可以从一堆里面取任意个石子。对于一堆石子,SG 函数就是石子数。整个 游戏的 SG 函数是每一堆石子的 SG 函数的异或和。 必胜:SG 不为 0,必败:SG 为 0。

Bash Game

每次最多取 m 个石子,其他同 Nim。一堆石子的 SG 函数为石子数 mod(m + 1)。 必胜:SG 不为 0,必败:SG 为 0。

Nim-k Game

每次最多可以同时从 k 堆石子进行操作,这 k 堆可以取不同数量的石子。 一堆石子的 SG 函数为石子数,对每一个二进制位单独算,求 SG 函数每一个二进制位 1 的个数 mod(k + 1),如果都为 0,则必败,否则必胜。

Anti-Nim Game

不能取石子的一方获胜。 必胜:SG 不为 0 且至少有一堆石子数大于 1,SG 为 0 且每一堆石子数都不超过 1 必败:其余为必败。

Anti-SG Game SG

游戏中最先不能行动的一方获胜。 必胜:SG 不为 0 且至少有一个游戏的 SG 大于 1,SG 为 0 且每一个游戏的 SG 都不超过 1 必败:其余为必败。

Staircase Nim

阶梯博弈,每次可以从一个阶梯上拿掉任意数量石子放到下一层阶梯,不能操作的为输。 SG 函数为奇数阶梯上的石子的异或和,如果移动偶数层的石子到奇数层,对手一定可以 继续移动这些石子到偶数层,使得其 SG 不变。 必胜:SG 不为 0,必败:SG 为 0。

Lasker’s Nim Game

n 堆石子,每次可以从一堆里面取任意个石子,或者选择某堆至少为 2 的石子,分成两堆 非空石子。 SG(0) = 0,SG(1) = 1,SG(2) = 2,SG(3) = 4。 对于 k ≥ 1,SG(4k) = 4k−1,SG(4k+1) = 4k+1,SG(4k+2) = 4k+2,SG(4k+3) = 4k+4。

Wythff Game

有两堆石子,每次可以从一堆或者两堆里拿走一样数目的石子,不能取的为输。 必败态为 (1,2)(3,5)(4,7)(6,10)…,差为 1、2、3、4… 每一对数的第一个数为前面没出现的最小的正整数。
递推公式:a[k]=⌊k(1+√5)/2⌋,b[k]=a[k]+k

翻硬币游戏

n 枚硬币排成一排,有的正面朝上,有的反面朝上。游戏者根据某些约束翻硬币(如:每 次只能翻一或两枚,或者每次只能翻连续的几枚),但他所翻动的硬币中,最右边的必须是从正 面翻到反面。谁不能翻谁输。 需要先开动脑筋把游戏转化为其他的取石子游戏之类的,然后用如下定理解决: 局面的 SG 值等于局面中每个正面朝上的棋子单一存在时的 SG 值的异或和。

每一次只能翻转一枚硬币

SG(0) = 0,SG(k) = 1(k > 0)。

每一次可以翻转一枚或两枚硬币

SG(n) = n。

Twins Game

每次必须翻动两个硬币,而且这两个硬币的距离要在可行集 S = 1,2,3 中,相当于 Bash Game。

每一次必须翻连续的 n 个硬币

SG(nk) = 1(k > 0),其他 SG 函数值为 0。

Ruler Game

每一次可以翻任意长度的连续一段硬币,SG(x) 为 x 中包含的 2 的最高次幂,即 SG(x) = ⌊log2 x⌋+ 1

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值