Game Theory(长期更新)

感觉Game Theory极其困难,尝试写一点东西。

OI中常见博弈分成几种:

  • 经典的模型以及转化。

  • 套不了模型,需要用定理和人类智慧分析。

  • 只是套着博弈的皮,实际上是在贪心/etc.

基本概念

组合游戏

  • 两人参与,双方交替行动。

  • 双方决策时都知道当前游戏局面的完整信息,并且知道可以转移到的状态。

完全信息博弈

博弈双方都知道对方目的。

平等博弈(无偏博弈)

决策集合只与游戏局面有关。可以知道在平等博弈中,只要游戏可以终止,那么每个状态都可以被分为先手必胜或者先手必败。

有向图博弈

是从平等博弈中抽象出的概念,将游戏状态抽象成点,将作出决策抽象为边,就构成了有向图。

如果有向图是DAG,那么可以拓扑排序处理出每个点的状态。否则可能在环处出现平局。

公平组合游戏

  • 组合游戏,平等博弈,且平等博弈的有向图是DAG。无法行动的参与者为败者。

非公平组合游戏

  • 与公平组合游戏的区别在于不是平等博弈。

反常游戏

  • 与公平组合游戏的区别在于第一个无法行动的参与者为胜者。

理论基础

有向图博弈上得到的结论

定义P状态为先手必胜状态,N状态为先手必败状态。

通过有向图的模型,可以发现:

  • 一个状态为P,当且仅当其存在一个后继状态为N

  • 一个状态为N,当且仅当其所有后继状态为P

Sprague-Grundy定理

即SG定理。应对一般的公平组合游戏。

对于有向图(或者更进一步,DAG)上的博弈,对每个点定义SG函数。对于没有出边的点,函数值为0,表示这是一个N状态。对于其他结点,定义SG(u)=mex{SG(v)|(u,v)E}

则一个结点为N当且仅当其SG函数为0

Sprague-Grundy定理:对于多个平行进行的组合游戏构成的博弈,其整体的SG函数为各个组合游戏的SG函数值的异或和。

考虑证明这个东西,不会,参考OI-wiki。

使用时,要是可以直接通过递归式找到SG函数值更好,不能直接找到就直接找规律然后数归。

SJ定理

用以应对反常游戏,可以看做反常游戏中的SG定理。

经典模型

Ferguson Game

Q:有两堆石子nm个,每次操作是清空其中一堆石子并将另一堆石子分成非空的两堆,无法操作者输,求(n,m)的状态。

Sol:

可以发现终止状态为(1,1),为N。再想一步,就可以得到对任意x(2,x)P,并且对于任意一种方式,过程中都会经过(2,x)的状态。看到2以及加减运算,就可以考虑奇偶性了。现在就是要让对方拿不到P,即不会经过(2,x)的状态。现在的目的转化为不让对方拿到2,并且让自己尽可能拿到2。对奇偶性分讨,若手上有一个偶数,就可以把它分成两个奇数给对方,于是对方不可能拿到2,对方必败,于是自己必胜。若手上都是奇数,无论如何操作,对方都可以拿到一个奇数和一个偶数,然后运用上一种策略使自己必败。

综上,可以得到结论:(n,m)P当且仅当nm中有一个偶数。

Chomp Game

Q:有一块n×m的网格,双人博弈,每次操作可以选择一块没有被删除的格子(x0,y0),并删除掉所有(x,y)满足xx0,yy0的格子。删除了(1,1)的人输。问P/N

Sol:

可以发现,第一次操作后,(n,m)这个格子一定被删掉了。假设先手必败:

  • 如果先手选的不是(n,m),那么可以改为选(n,m),于是就将一个N状态留给了另一个人。

  • 如果先手选的是(n,m),那么可以改为选另一个人第一次选的位置,于是就将自己的N状态留给了另一个人。

于是在修改决策后先手总是P,除了n=m=1时先手为N

这一证明是非构造性的,很牛。

目前没有Chomp Game的一般性的必胜策略,也就是说给不出构造。

高维Chomp Game

几乎一样的证法,总是先手必胜,除非只有一块。

Bash Game

Q:双人博弈,有n个石子,每次操作可以取走x[1,m]个石子,无法操作者输。求当前局面的状态。

Sol:

首先可以关注较小的情况。当n[1,m]时,总是先手必胜的。而当n=m+1时,是先手必败的,因为每一个后继状态都是P。于是转化到有向图上,对于一个点x,其后继状态为x1,x2,xm。如果这些后继状态中有一个是m+1的倍数,那么这个后继状态就是N,于是当前状态为P。否则这些后继状态中没有m+1的倍数,那么x就是m+1的倍数,此时状态为N

综上,先手必败当且仅当n0(modm+1),否则先手必胜。

Nim Game

Q:有n堆石子,第k堆有ak个,双人博弈,一次操作为选择一堆石子,从中取出至少一个。无法操作者输。问N/P

Sol:

可以发现每一堆之间相互独立,于是这个游戏就是若干有向图游戏的组合,上SG定理,就可以只研究一堆之中的SG值。对于一堆x个石子,其后继状态为0,1,,x1,其中SG(0)=0。于是递推可知SG(x)=x。然后直接SG定理就好了。

Nim Game 的重要地位在于,一个SG=x的游戏,几乎是与一堆有x个石子的Nim游戏是等价的。唯一的不同之处在于,其他游戏可能会有SG>x的后继状态。但是可以证明,在最优策略下不会向SG更大的状态转移,因为后手的策略会更多。于是几乎等价。

这样的观点在Nim的各种变式中很有用。

Lasker's Nim Game

Q: 有n堆石子,双人博弈,一次操作可以选择一堆石子,从中取出至少一个,或者将其分成非空的两堆。问N/P

Sol:

对每堆石子求SG,然后求异或和。

SG(z)=mex{{SG(x)|0x<z}{SG(x)SG(y)|x+y=z}}

然后打表找规律,然后上数归。可证k1时,SG(4k)=4k1,SG(4k+1)=4k+1,SG(4k+2)=4k+2,SG(4k+3)=4k+4

于是就酱。

Nim-k Game

Anti-Nim Game

Fibonacci Nim

Staircase Nim

Wythoff's Game

常见转化

先满足某种条件就获胜的转化——来自神秘棋盘游戏

Q:有一个m×m的棋盘,其上有n枚棋子,双人博弈,每次操作可以选择一枚棋子,设其坐标为(x,y),那么可以将它移动到(x,yk)(xk,y)(xk,yk)kN+)。第一个将一枚棋子移动到(0,0)的人赢。求当前状态。

Sol:

棋子相互独立,然后上SG定理。可以发现两个人只要将棋子移到(1,2)或者(2,1)后就不会再动它(只要还有别的选择)。于是可以将这两个点设成终止点,然后就变成了正常的游戏,直接递推出每个点的SG函数就行。

可以类似转化各种“先满足某种条件便获胜”的游戏。

还有例子

Q:有1×n的纸条,初始全为空,双人博弈。每次操作可以选择一个格子涂黑。第一个操作后有三个连续的格子为黑色的人获胜。问N/P

Sol:

转化,当一个格子被涂黑后,后手一定不会涂这个格子旁边两格内的格子。于是就转化成第一个无法操作的人输的正常情况。
这等价于选取一个格子并删除以之为中心的5个格子,然后生成一个(边界的情况)或者两个相互独立的游戏。于是可以递归计算SG

posted @   RandomShuffle  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示