【博弈论】ACM博弈论知识总结

博弈论的入门令我十分痛苦,网上(包括竞赛教材)往往都只说怎么做,却不说为什么。综合各个资料,我详细总结了一下博弈论的知识,希望能对后来人也有所帮助吧

一.引入

1.游戏

ACM博弈论中考察的游戏大都以如下形式进行:

①两人轮流操作,每次可以在合法的操作集合中选取一种操作进行,游戏的局面/状态会随着操作而发生改变

②这个合法的操作集合会随着局面的改变而发生改变:

比如在取石子的游戏中,规定可以取{1、3、5}个石子,在场上有6个石子时合法操作集合为{1、3、5},但是如果现在只剩下2个石子,那合法操作集合就变为了{1}

③合法操作集合对于双方来说是公平的,也就是任一局面的操作集合只与局面有关,和轮到哪名选手是无关的

反例:日常的牌类游戏,因为双方手上的牌是不一样的,因此操作集合不同;又比如象棋,红棋只能由红方移动,黑棋只能由黑方移动

④规定当一方玩家操作集合为空时(即无法操作时),这名选手输掉游戏(反Nim游戏为特例)

也可以将这个游戏抽象为一个有向无环图(DAG),将局面抽象为点,将合法操作视为边,局面的变化抽象为了点的移动。当一方玩家走到出度为0的点即输掉游戏

2.性质

上述游戏有一个重要的性质,在双方都采取最优策略的情况下,游戏的输赢只由所处局面决定。也就是任意一个局面都包含有先手必胜/必败的策略

必胜态:在该局面下,先手有必胜的策略

必败态:在该局面下,对手有必胜的策略,即先手必输

后继局面:一个局面的后继局面为其可以通过合法操作到达的局面

性质:

①没有后继局面的局面为必败态

②一个局面的后继局面中只要含有必败态,则该局面为必胜态。反过来也是一样的,必胜态的后继局面至少含有一个必败态。

③一个局面的后继局面中若没有必败态,则该局面为必败态。反过来说,必败态的后继局面全部都是必胜态。

这是博弈论的核心

其实很好理解,如果后继状态含有必败态,我们可以将局面转化为必败态让对手面对必败态,则我方必胜。如果后继状态都是必胜态,无论我们如何操作,对面都是必胜的。

根据这个性质,我们可以用递归算出一个局面的必胜/必败性(先算出所有后继局面的必胜/必败性即可得到当前局面的性质)

3.ICG

ICG全称Impartial Combinatorial Games,即公平组合游戏。

所谓公平,正如前文所讲每一个局面的操作集合对双方来说是公平的(讽刺的是公平游戏含有必胜/必败策略,并不“公平”)

组合的意思也就是一些分游戏的组合。

比如大名鼎鼎的Nim游戏:

若干堆石子,每堆石子的数量都是有限的,双方轮流选择一堆石子,并取走至少1个石子,取走最后一个石子的玩家获胜(对方无法操作)。

可以将Nim视作一个ICG游戏,它的分游戏是这样的:

一堆石子,双方轮流操作,可以从中取走若干个石子,取走最后一个石子的玩家获胜。

这是一个非常简单的游戏,也满足之前所讲的游戏的定义。它的先手必胜策略非常简单,只要第一次取走所有石子就获胜了

我们可以将之视为Nim游戏的分游戏,是因为Nim游戏的每一步相当于选择一个分游戏进行操作,且一个分游戏局面的改变不会影响到其它分游戏。

将Nim游戏拆分为分游戏的意义在于,我们可以通过分游戏的SG值异或的结果得到Nim游戏的结果,这就是SG定理( Sprague-Grundy)在Nim游戏中的应用。

关于这部分的内容我会在之后再详细讲解,可以先给出Nim游戏的结论:

假设有n堆石子,第i堆石子数量为 a i a_i ai,则若 a 1 ⊕ a 2 ⊕ … … ⊕ a n = 0 a_1⊕a_2⊕……⊕a_n=0 a1a2an=0,先手必败,反之先手必胜

二.Nim游戏

1.两堆石子

先考虑最简单的两堆石子的情况:

假设两堆石子数量分别为m、n。

若当前局势为(m,n)且m、n不等,则先手必胜。

先手必胜的策略很简单,假设m>n,只要从第一堆石子中取出若干颗使m=n即可,接下来不管对手如何操作都会令m≠n,我们则通过操作使局面维持在m=n的状态,这样直到最后的(0,0)状态。

2.三堆石子

考虑三堆石子的情况:

假设三堆石子的数量分别为m、n、p。

局势的改变只能由取石子这个操作进行,我们可以将其抽象为数的减少,比如(10,7,8)可以转化为(10,6,8)或(10,5,8)或(9,7,8)等等。

从二进制的角度考虑数字的减少:

以(6,4,2)为例

转化为二进制,即:

110
100
010

我可以肯定这是一个必败态,因为各个数位上1的个数都是偶数

证明:

假设先手将第一堆石子从6颗减少为1颗,当前局势转化为:

001
100
010

后手可以通过操作使其维持各个数位上1的个数都是偶数的状态,即将第二堆石子从4颗减少为3颗,局势转化为:

001
011
010

可以发现,在各个数位上1的个数都是偶数的状态下,先手不管如何行动都必将打破平衡,改变这个状态,因为每个数位上1都是偶数,而一次只能移动一堆石子中的石子,就只能令一个数位上多一个1或者少一个1,不管怎样偶数都会变成奇数

而后手不管先手如何操作,都可以令局势恢复平衡,回到各个数位上1的个数都是偶数的状态。

这样直到最后,先手终将面临各个数位上1的个数都是0的状态,即(0,0,0),所以先手必败

不难发现,上述的过程是可以推广到N堆石子的。我没有作严格的证明,但显然这个过程是符合直觉的,并且已经有先人证明过了。作为一个ACMer我觉得理解到这里就差不多了

3.结论

如何表述各个数位上1的个数都是偶数这个状态呢,用异或运算即可。

考虑一个数位,1的个数为偶数则异或值为0

各个数位异或结果都是0,合在一起还是0

故此,得到了Nim游戏的结论:

a 1 ⊕ a 2 ⊕ … … ⊕ a n = 0 a_1⊕a_2⊕……⊕a_n=0 a1a2an=0则先手必败,反之则先手必胜

4.石子的增加

如果Nim游戏中增加一条规则:双方不仅可以取石子,还可以加石子的话会不会对游戏结果造成影响呢?

答案是不会,因为一方无论加多少石子,另一方只要取多少石子就可以抹去对方的这步操作。也就是说位于必败态的玩家无法通过这种方式来改变局势。

三.SG函数及SG定理

Nim游戏的结论可以更一般地推广到所有ICG游戏

1.mex运算

mex运算为施加于集合的运算
定义mex运算(minimal excludant):

mex(A)=最小的不属于集合A的非负整数

例:
①A={1,3,5},则mex(A)=0;

②A={0,1,3,5},则mex(A)=2;

③A={0}, 则mex(A)=1;

④A={}, 则mex(A)=0;

2.SG函数计算

用x、y表示局面

SG(x)=mex{SG(y) | y是x的后继};

若SG(x)>0,则其后继局面中至少有一个局面y,SG(y)=0;

对应:一个必胜态的后继局面中至少有一个为必败态

若SG(x)=0,则其所有后继局面y,SG(y)>0

对应:一个必败态的所有后继局面为必胜态

可以发现SG函数与必胜/必败态的性质恰好对应,但其实我们只需要用且运算同样可以达到这个效果,那为啥还废这么大劲想出一个SG函数呢?

其实我刚学博弈论的时候也有这个疑问,网上都只给出怎么算,却鲜有人说为什么。

3.SG函数意义

SG函数的值描述的其实是一个局面的胜态级数。

SG(x)=0,x为0级胜态即必败态

SG(x)=n,x为n级胜态,不管是几级胜态都是必胜态

对于胜态有如下性质:

一个n级胜态可以转移到任意的x级胜态(0<=x<n)

而mex运算正是根据这个性质得到的,比如一个状态的后续状态有1、2、3级胜态,则该状态必然为0级胜态,即必败态。

有一个问题,如果一个状态的后续状态有0、1、2、4级胜态,那么根据mex运算应该得到该状态为3级胜态,但是这样不是的话总觉得很奇怪,因为4级胜态貌似没用了?

我是这么理解的:

因为胜态的升高是没有意义的。4级胜态的后续包含0、1、2、3级胜态,如果我将3级胜态升高为4级胜态,对面可以立即将4级胜态变回3级,也就是这步操作可以被对方抹除。必败方无法通过这种方式来改变自己的态势。

综上,我们只考量胜态级数的降低。

4.SG定理

引入SG函数,终归是为了SG定理服务的。SG定理可以普适地应用于所有ICG问题

先给出结论:

对于一个ICG游戏,可以将其拆分为若干个分游戏。每个游戏的局面都可以用SG函数值描述状态,而总游戏的状态则为其分游戏异或的结果!

假设一个游戏由两个分游戏组成,且这两个分游戏目前都处于1级胜态的状态,则总游戏的状态为1⊕1=0,即必败态。

证明:

我们就可以将胜态级数理解为石子数(性质一样),也就是将一个分游戏的SG值等效为一堆数目为K的石子。那么所有的ICG游戏都可以视为一个Nim游戏,而我们前面已经证明过了Nim游戏的结果为各个石堆石子数的异或,因此得证。

(因为我们的目的是让对方最终面对0级胜态,也就是各个胜态都为0的状态。然后从二进制的角度出发,即可得证。)

四.反nim博弈

1.简介

反nim游戏和nim游戏规则大致相同,唯一的区别在于反nim游戏规定取走最后一颗石子的玩家输掉游戏。

这是一个让我困扰了很久的问题,但是在我搞懂了SG函数值的真正意义后一切都迎刃而解了:

关键在于0这个点,一方面0作为必败态它的SG值理应大于0,另一方面0没有后继局面,它的SG值应该为0(SG值=mex{后继局面的SG值})

根本原因还是反Nim游戏本身就不符合之前所写的游戏的定义。

2.结论

先手必胜当且仅当:

①游戏的SG值为0且所有堆的石子数都为1

②游戏的SG值不为0且至少一堆石子数大于1

需要注意的是,在Anti-nim游戏中,SG值的含义将不再是胜态级数,而应该根据定义由mex运算得到其SG值,即SG(x)=x;

3.证明

①当所有堆的石子数都为1时:

若只有1堆,先手必败

若有2堆,先手必胜

若有3堆,则先手必败

因为在这种情况(每一堆只有1个石子)下,n堆石子的后继局面只有n-1堆的情况(一次只能取一堆的石子),所以必胜必败只与堆数的奇偶性有关

偶数堆必胜,奇数堆必败

又因为每一堆的SG值都是1,所以说总游戏SG=0必胜,否则必败。

②只有一堆石子数大于1时:

若只有一堆石子数大于1,其它堆的石子数等于1(这种情况SG一定不为0)则从二进制角度考虑:

n堆石子数为1:

001
001
001

还有一堆石子数为x,则不管x是多少,因为x>1,所以x可以变为0或1,即先手可以将当前的局面控制为二进制最低位有奇数个1的局面,从而转化为了n堆石子都是1的情况,且留给对面的是奇数堆为1、SG值不为0的必败态!故先手必胜

③至少两堆石子数大于1时:

若SG不等于0,则先手只要令SG=0即可。这样直到最后,要不走到上述②(即只有一堆石子数大于1)的情况,要不走到只剩一堆石子的情况,不管哪种情况都是先手必胜的

若SG等于0,则不管怎么走都会令SG不等于0(且至少还会有一堆石子数大于1),从而对手必胜

4.SJ定理

将上述结论推广到所有Anti-SG游戏:

Anti-SG游戏:决策集合为空的玩家获胜,其它规则不变

SJ定理(Sprague-Grundy-Jia Zhihao定理):

对于任意的Anti-SG游戏,先手获胜当且仅当:1)游戏的SG值不为0且至少一个分游戏的SG值大于1;2)游戏的SG值为0且没有分游戏的SG值大于1(全为1)

不作严格证明了(其实是我不会

五.删边游戏

图的删边游戏是Nim游戏和图论的结合

1.树上删边游戏

游戏规则:

①给定一个有N个节点的树,节点1是树的根

②双方轮流从树上选一条边删除,并移除所有和根节点不再相连的点(及与这些点关联的边)

③先无法操作的玩家输掉游戏

定理:

叶子节点的SG值为0,其它节点的SG值为其所有子节点的SG值加1后异或的结果

证明可以找大佬的论文,我看了半天实在看不太懂,orz

传送门

2.树上加简单环

转自大佬文章:传送门

也就是在树上延伸出一些简单环,形如:

在这里插入图片描述

可以发现:奇数长度的环在删除任意一条边后会形成两条长度奇偶性相同的链,异或后值必然为偶数(或者形成一条长度为偶数的链,值还是偶数)

则其后继状态为0、2、……偶数

执行mex运算得到1

所以可以将奇数长度的环视为长度为1的链,二者SG值相同

偶数长度的环在删除任意一条边后会形成两条长度奇偶性不同的链,异或后值必然不为0

则其执行mex运算后必然得到0

所以偶环SG值为0,可以无视

删除树上的偶环并将奇环转换为长度为1的链后,题目就转变为了上面的基本题型

3.无向图的删边游戏

将上例进行进一步扩展,即去掉环的限制,就变成了在任意的连通无向图中,取一点作为根节点,进行删边游戏

定理:

将图中的偶环删掉,变为一个新点;将图中的奇环删掉,变为一个新点+新边,原图中所有与环相连的点连接到新点上

证明不会(大佬的论文里也没写呀QAQ)

可以发现第上面的树上加简单环的题型就是无向图的一种特例

六.题单。

刷题才是王道,蒟蒻整理了一份题单(还在更新中)

点这开始刷题

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值