博弈论小记
以下我们都考虑这样一种游戏:
-
两个人,轮流进行;
-
游戏总是在有限步内结束;
-
同一个状态不可能多次抵达,且没有平局;
-
每个时刻的合法决策集合仅与当前局面有关,而与游戏者无关;
-
不能操作者输。
我们定义:
必败态:无论如何先手必败的状态(局面)。
必胜态:先手存在必胜策略的状态(局面)。
后继状态:从当前状态走一步能够到达的所有局面。
SG 函数
mex 函数:集合中最小的没有出现的自然数。
将每个局面映射到一个自然数。终态(必败态)的 SG 函数值为
一个局面必胜当且仅当其 SG 函数不为
如果一个游戏由一堆游戏组成,每次选择一个游戏走一步,这样的游戏称为组合游戏。组合游戏中一个局面的 SG 函数值等于其所有子游戏的 SG 函数值的异或和。
同样地,此时一个局面必胜当且仅当其 SG 函数不为
Nim 游戏
分析这个游戏,实际上是一个组合游戏。每个子游戏就是一堆石子,每次取出任意多个,不能取的输。我们来分析这个游戏的 SG 函数。终态是剩
所以对于这
若当前局面异或和不为
阶梯博弈
结论:等价于从左往右奇数位上的 Nim 游戏。
操作方法:假设我们必胜。如果对面动了偶数位的石子,则把对面移到奇数位的石子再往下移到偶数位。如果对面动了奇数位的石子,我们按照 Nim 游戏的走法从某个奇数位的阶梯上取若干个石子往下扔。这样能够保证我们是必胜的。
为什么是奇数位?因为如果是偶数位的话,当对面把奇数位的石子移到最低的阶梯上时,我们就无法再把这些石子往下扔了。
二分图博弈
一张二分图,一个棋子。棋子一开始在一个点上,每次一个人来选择一条边,把棋子沿这条边移到另一个点。走过的点不能再走,不能走的输。
结论:先手必胜当且仅当棋子一开始在最大匹配的必须点上。先手必败当且仅当棋子一开始不在最大匹配的必须点上。
接下来称最大匹配的必须点为匹配点,否则为非匹配点。
-
如果当前在匹配点,此时先手顺着匹配边走向另一个点,后手无论怎么走都会回到匹配点。假设后手没有回到匹配点,则可以将任意一组匹配中的当前点换成后手走到的点,从而当前点不是匹配点,矛盾。
-
如果当前在非匹配点,则先手无论如何走都会走到匹配点。如果先手没有走到匹配点,则选中当前点和这个点相连的边可以使得最大匹配加一,矛盾。
所以当且仅当先手在匹配点上时存在必胜策略。
例题:P1971
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!