[组合游戏与博弈论]【学习笔记】

I was standing all alone against the world outside

忘记在哪里看到,很适合用这句歌词来描述John Nash


参考资料:

1.<组合游戏略述 ——浅谈SG游戏的若干拓展及变形> 贾志豪

2.上面那篇论文里的参考文献...


 

公平组合游戏

 

定义

游戏有两个人参与,二者轮流做出决策。且这两个人的决策都对自己最有利。
当有一人无法做出决策时游戏结束,无法做出决策的人输。无论二者如何做出决策,游戏可以在有限步内结束。
游戏中的同一个状态不可能多次抵达。且游戏不会有平局出现。
任意一个游戏者在某一确定状态可以作出的决策集合只与当前的状态有关,而与游戏者无关。

 

有向无环图

游戏可以转化成有向无环图,一个状态是一个点,一个决策是一条边.

终止状态出度为0.

 

必胜态与必败态

如果用1代表必胜态,0代表必败态

当前状态必胜:后继状态存在0

当前状态必败:后继状态没有0

 


 

Nim游戏

桌子上有N堆石子ai,游戏者轮流取石子。
每次只能从一堆中取出任意数目的石子,但不能不取。
取走最后一个石子者胜。

 

先手必败:a1a2...an=0

数学归纳法证明:

1. 最终状态异或和为0。

2. 对于任意一个必胜态(异或和不为0),存在一个必败后继状态(异或和为0)。

A1A2...An=S,一定存在AiS的最高位为1,只要改变Ai使这一位为0,后面的位相应改变使总体异或和为0就行了

3. 对于任意一个必败态(异或和为0),不存在一个必败后继状态(异或和为0)。

 


 

SG函数

Sprague-Grundy

SG(u)=mex{SG(v):vu}

mex(minimal excludant)是定义在整数集合上的操作。它的自变量是任意整数集合,函数值是不属于该集合的最小自然数。

必败态的SG为0

数学归纳法证明:

1. 最终状态SG=0

2. 对于任意一个必胜态SG0,存在一个后继态SG=0

3. 对于任意一个必败态SG=0,不存在一个后继态SG=0

和Nim游戏类似,SG的变化类比成取石子

 

SG定理

游戏的和:

考虑任意多个同时进行的SG-组合游戏,这些SG-组合游戏的和是这样一个SG-组合游戏,在它进行的过程中,游戏者可以任意挑选其中的一个单一游戏进行决策,最终,没有办法进行决策的人输。

 

若局面X由若干个子游戏X1,X2...Xn构成,则SG(x)=SG(X1)SG(X2)...SG(Xn)

数学归纳法证明:

1. 最终局面成立

2.  X,所有后继局面可以取到SG(X1)SG(X2)...SG(Xn)1,取不到SG(X1)SG(X2)...SG(Xn)

同样看做Nim游戏

SS1

S(SS1)=S1

(SS1)最高位为k,存在A使得k位为1

那么A(SS1)<A,所以让A变成A(SS1)就行了呀

 

SG与Nim游戏转化:

每一个简单SG-组合游戏都可以完全等效成一堆数目为K的石子,其中K 为该简单游戏的SG 函数值。这样的等效是充要的。

在我们每次只能进行一步操作的情况下,对于任何的游戏的和,我们若将其中的任一单一SG-组合游戏换成数目为它的SG 值的一堆石子,

该单一SG-组合游戏的规则变成取石子游戏的规则(可以任意取,甚至取完),则游戏的和的胜负情况不变。

 


 

Anti-SG

Anti-SG游戏规定,决策集合为空的游戏者赢。

Anti-SG其他规则与SG游戏相同。

SJ定理

规定所有单一游戏SG=0时游戏结束

先手必胜:

1. SG0, SG>1

2. SG=0, SG>1

数学归纳法证明

1. 所有的终止局面为先手必胜局。

2. 游戏中的任何一个先手必败局一定只能够转移到先手必胜局

3. 游戏中的任何一个先手必胜局一定能够转移到至少一个先手必败局

想一想道理很简单,不写了

怎么记住呢?想想Nim游戏,全是1,必须偶数个SG=0才行

 

Multi-SG

Multi-SG游戏规定,在符合拓扑原则的前提下,一个单一游戏的后继可以为多个单一游戏

Multi-SG其他规则与SG游戏相同。

仍然可以使用SG函数,后继为多个单一游戏的,这个后继的SG值为多个单一游戏SG的异或和

对于Anti-Nim,同样有个规律:

mod4=3sg(x)=x+1mod4=0sg(x)=x1,其他不变

 

Every-SG

Every-SG 游戏规定,对于还没有结束的单一游戏,游戏者必须对该游戏进行一步决策

Every-SG 游戏的其他规则与普通SG 游戏相同

贪心:先手必胜的尽量长,先手必败的尽量短

对于SG值为0的点, 我们需要知道最快几步能将游戏带入终止状态

对于SG值不为0的点,我们需要知道最慢几步游戏会被带入终止状态

我们用step函数来表示这个值。

step(u)=

{0,umax{step(v)}+1, sg(u)0vusg(v)=0 min{step(v)}+1,sg(u)=0vu

定理:对于Every-SG游戏先手必胜当且仅当单一游戏中最大的step为奇数。

证明

1. 对于所有的单一游戏,

先手必胜状态的step值为奇数,先手必败状态的step值为偶数

2. 设最大的stepstepmax

那么胜手可以保证该单一游戏最少会在stepmax步结束,所有他必败游戏最多在stepmax步结束。

因为必胜的游戏败者每次最多使他的step1,必败的游戏也是每次都可以step1,所以可以保证

 



翻硬币游戏:

N 枚硬币排成一排,有的正面朝上,有的反面朝上。我们从左开始对硬币按1 到N 编号。

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

谁不能翻谁输。

 

每一个硬币可以看成独立的子游戏,所以:

局面的SG 值为局面中每个正面朝上的棋子单一存在时的SG值的异或和。

 

一个经典的问题是每次翻动向左连续的几枚,有一个规律:

SG(x)=lowbit(x)

其他变形还有好多,扔链接就跑

 

阶梯Nim

N个阶梯,限制每次从上一个阶梯移到下一个阶梯

阶梯Nim只考虑奇数位置进行Nim游戏,因为偶数位置是对称的,我们有平衡的操作

 

树上删边游戏

给出一个N个点的有根树。

游戏者轮流从树中删去边,删去一条边后,不与根节点相连的部分将被移走。

无边可删者输。

叶子节点的SG值为0,中间节点的SG值为它的所有孩子的SG值加1后的异或和。

数学归纳法证明

1. 一个和两个节点显然成立

2.  k个节点根为B的子树G成立,证明G成立

先证明根有一个孩子成立

看论文吧太多了

根有多个孩子:孩子和连向父亲的边组成的图可以等效成Nim中一堆石子

 

扩展:一些节点多出去一个环?好像是Multi-SG唉!

奇环的后继状态:两条奇偶性相同的链,异或和一定没有1

所以奇环的SG=1,可以等效成一条长为1的链

偶环的后继状态:两条奇偶性不同的链,异或和一定没有0

所有偶环SG=0,等效成一个点(也就是不考虑啦)

 

无向图的删边游戏

一个无相联通图,有一个点作为图的根。

游戏者轮流从图中删去边,删去一条边后,不与根节点相连的部分将被移走。

无边可删者输。

定理:

我们可以对无向图做如下改动:

将图中的任意一个偶环缩成一个新点,任意一个奇环缩成一个新点加一个新边;

所有连到原先环上的边全部改为与新点相连。

这样的改动不会影响图的SG值。

 

posted @   Candy?  阅读(10144)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示