博弈论
Bash游戏
考虑直接令石子数量为状态,有
我们使用数学归纳证明:
当
而对于
也就是
Nim游戏
注意到如果
证明:
只需证明当
考虑
Example1(Nimk游戏)
将
Example2(Multi-Nim游戏)
Nim游戏,但是玩家每回合可以将任意一堆石子数量大于等于
本质仍然是SG游戏,我们正常做就行.
找一下规律可以发现:
不妨设当
当
但是一定不存在
其他的是同理的.
SG游戏
直接使用
那么先手必败当且仅当所有DAG初始节点的SG异或起来是
首先如果
但是与Nim游戏不同的是,可能
但在这种情况下,我可以继续转移到一个
Example1(Anti-SG游戏)
SG游戏,但是不能取的人赢.
SJ定理:
先手必胜当且仅当下面两个条件满足一个:
-
游戏的SG函数不为
且游戏中某个单一游戏的SG函数大于 . -
游戏的SG函数为
且游戏中没有单一游戏的SG函数大于 .
如果没有单一游戏的SG函数大于
而如果SG函数为
因为这个情况下,后手先按照正常
Example2(Every-SG)
SG游戏,但是每次每个能移动的游戏都必须移动,不能移动任何游戏的人输.
对于每个子游戏,如果先手必胜,先手一定会尽可能多争取时间.
反之,先手一定会尽可能早结束游戏.
在
Example2.5(Every-SG)
n个游戏,每个游戏两堆石子,每次可以从大的那堆中取小的那堆石子大小的整数倍的石子.
直接套用Every-SG的做法就行.
Example3(Nim on tree)
一棵有根树两个人,每次可以挑一棵真子树删掉,不能操作者输.
结论:
考虑归纳假设.如果
而如果有多个儿子,则每个儿子都相当于是一个SG子游戏,异或起来即可.
另一种理解方式:考虑只有一个儿子的情况,那么相当于这个儿子的所有状态都向终止节点连了一条边,终止节点的
Example4
两个人分别操作删边,与根不连通的边都被删掉.
结论:奇环
这么考虑:边数为
而拆开奇环后,你得到的两条链奇偶性一定相同,因而不可能得到
Example5
无向图,每次删掉一条边以及与根节点不连通的部分,无法操作者输.
考虑Example2.
Fusion定理:将偶环替换成一个新点,奇环替换成一个新点连出去一条边,做边双.对于一个边双,
斐波那契博弈
一个数
不能操作者输.
结论为:当且仅当
考虑归纳证明:
先证明当
考虑将
并且一开始先手一定要在
那么现在先手应该开始取
否则,仍然是先手取走了
齐肯多夫定理:任意一个正整数都可以被表示成若干不连续的斐波那契数之和.
设
二分图博弈
给出一张二分图和起点
考虑二分图的所有最大匹配,如果在所有的最大匹配的方案中都包含了起点
证明:
如果所有匹配都包含
而如果存在一个匹配不包含
Example1([2022qbxt国庆Day5]C)
显然,一个人敢抢金条当且仅当没有人敢抢他的金条.假设
将这个抢的过程看作二分图博弈中走到相邻的点的过程,于是这个问题等价于二分图博弈.也就是说,如果二分图博弈先手必胜,那么第一个拿到金条的人一定会被抢.
因此,我们需要找到所有与
这个怎么构造呢,我们考虑先跑一遍dinic求最大匹配,然后做一遍tarjan缩点,然后如果
至于判断
树上博弈
Example1(zr[23省选10连 day1] Clashmas)
注意到删点对树形态的影响,考虑重心
为奇数,重心为后手点.
注意到此时后手一定可以通过一些方式维持重心不变,因此后手必胜.
为奇数,重心为先手点.
我们不妨设先手是A,后手是B.
考虑一个事实:对于这样一棵树,我们删着删着一定会出现一个时刻使得此时
根据(5),如果B掌控了任意一个重心,那A就输了.因此A必定要使当前局面的两个中心均为A的点.考虑原重心的所有儿子,它们有的是A点,有的是B点.由于树的重心的性质,树的重心的移动一定是一点一点挪的,也就是说第一次出现上面的局面的时候,两个重心必有一个是原重心,另一个是原重心的儿子,接下来A和B就要对于另一个重心能取到哪个儿子做争夺.我们不妨设A的点的集合为
原因很简单:A和B必然每次都会去杀属于对方的子树中
为偶数,唯一重心,重心为后手点.
类似(2)的讨论,最后一定有某个时刻使得此时
类似地,不难发现胜利条件等价于(2).
为偶数,两个重心,重心均为后手点.
注意到此时整棵树分为两个大小相等的部分,因此后手一定可以维持这个场面不动,后手必胜.
为偶数,至少有一个重心是先手点.
注意到此时先手一定存在一种方式开局,使得重心仍为这个先手点,这样就转化为第一种情况,先手必胜.
散题
Problem1([CSP-S2020]贪吃蛇)
首先注意到,如果一个蛇吃完后还不是最小的蛇,那它一定会吃.因为被吃的蛇是单调不降的,而吃蛇的蛇是单调不增的,因此下一个蛇如果要吃,那一定会比它还小,所以至少会先被吃掉,而那条蛇会被吃掉,它就一定不会选,所以无论如何这条蛇都不会被吃掉.
我们考虑如果吃完后变成了最小的蛇后会怎么样,我们设
递归做就好了.另外这题需要复杂度
Problem2([AGC023D]Go Home)
首先,最后一个人要么是最左边的,要么是最右边的.而显然这两边中人数较少的一个将会是最后一个到家的,那么这个人的目标就是帮助另一边的人尽可能快到家,于是会帮着它投票.以此类推不断递归下去.
Problem3(牛客38727E)
首先考虑如果有人作为第
继续思考,如果有人作为第
以此类推,会发现最后只会有
Problem4(arc155D)
考虑直接转移,但是有可能出现在原地转的情况,注意到这种情况我们只需要记录
这题给我最大的启示是,我们不能假定让双方共同遵守一个"君子协定",博弈论最重要的就是博弈,不能说我们最后再选倍数之类的,他的转移路线会变化的.
Problem5
给一个“日”字型图,七条边,每条边有一堆石子.每次可以选任意多条不构成环的边,然后将这些边上的石子堆取走任意多个石子.求先手必胜策略,以及如果每条边的石子数量在
考虑将这个图分成三部分,上面三条边,中间一条边,下面三条边.那么这三部分一定不能全选至少两部分,不然会构成环.反之一定构不成环.
先手必败当且仅当,这三部分内部的边上石子均相等,并且所有边异或值为
否则,考虑将上部分和下部分三条边先全改成相等的,会修改较大的两条边.
接下来,我们剩了三条边,我们只能选择改其中一条,使得他们仨异或值为
换句话说,我们现在有
思路具体怎么想到的呢,可以发现整个图只有三个环,并且这三个环都可以由这几部分组成.接下来就可以每个部分的
Problem6
Nim游戏,但是每堆石子有一个
结论是
SG(n-\lfloor\frac n k\rfloor,k)&n\ne 0(\mod k)\
\frac n k&n=0(\mod k)\
\end{cases}\
考虑数学归纳就可以证明.
然后我们就只需要对于
Problem7
一个数
先手必败当且仅当
Problem8
A和B,有
仍然令石子数量为状态,注意到
设
当
评论