博弈论-从入门到放弃

持续更新中……

最近学习了一下博弈论,发现好玩之余,很考验智商。

首先,我们要讨论一些看似显然但是十分有用的定义(公理)

我们这里讲的都是公平组合游戏(两个人轮流操作,可以操作的东西只跟状态有关,跟哪个人无关,最后一个不能操作的人/最后一个操作的人输,不存在平局(或者平局判某一方输)……这些定义可以随便百度到,这里就不讲了)

我们定义先手必败态为P,先手必胜态为N,任何一个状态不是N就是P,不是P就是N,没有别的选择。

  • 终止状态(在转移的有向图上没有出边的点)肯定是P
  • 假如P有出边,那么P的任意一个出点都是N(你所有能到的地方都是敌人可以赢的地方,你是不是死翘翘了?)
  • N状态只有有一个出点是P(能赢的人,一定有一个转移,可以给对手制造必败的状态,让对手掉坑里,那他就死定了)

有了上面的三条公理,我们就可以进行很多的思考了。

当然还有SG函数这个神器。

一个状态的SG函数是评估一个点胜负的指标,假如算出来SG值为0,那么必败,否则必胜。

\(SG_x=mex\{SG_y|y\in out status_x\}\)

也就是x可以转移到的状态y的sg值的mex就是当前的sg值,mex定义为这个集合内的数的最小没有出现过的自然数,也就是自然数集意义下的补集的最小值。其中终止状态的sg为0,可以用这个作为边界递推。

还要知道一个\(SG\)定理:

\(SG=SG_1 \bigoplus SG_2 \bigoplus SG_3 \bigoplus \dots \bigoplus SG_n\)

什么意思呢?这个就是说,假如一个游戏可以拆分成若干个互不影响的子游戏时,这个游戏的SG值就等于各个游戏的SG值的异或和,可以用这个来快速计算很多可以拆分的局面。经常设好SG之后就用这个来打表猜结论(结合SG函数和三大公理)。

下面来具体讲一下各种的游戏,其中以Nim游戏最为重要。之后还会讲一下各类博弈问题的处理方法(对抗搜索(也就是博弈搜索),二分图博弈……)。

\(\quad\)
\(\quad\)

巴什博奕 Bash Game

最基础的题:Bash V1

变形:另外一种问法

小变形:Bash V2

再变形:Bash V3

斐波那契博弈:Bash V4

有下界的bash博弈:Bash V5

\(\quad\)

威佐夫博弈 Wythoff Game

最基础的题:Wythoff V1

\(\quad\)

尼姆博弈 Nim Game

最基础的题:Nim Game

\(\quad\)

对称博弈

个人认为,环形博弈是对称博弈的一种特殊情况,所以都归在这里讲。
这个对称博弈指的是:有n个石子围成的一个环,a和b轮流取石子,每次可以取[1,k]中的某个数个的相邻的石子(原来的环上相邻),谁不能操作谁输,问谁赢?

分几类来讨论

  1. \(k\geq n\),显然肯定是先手胜。
  2. \(k=1\),也就是一颗一颗取,显然,n是偶数的时候先手胜。
  3. \(k\not=1\)\(k<n\),一定是后手赢,因为先手取哪里你就对称地取哪里,你不行了的时候,他肯定比你早不行的。

这就是对称博弈,不算特别难。

\(\quad\)

博弈思想(杂题)

棋盘类:HDU 2147

数字类:HDU 1525

日期类:HDU 1079

posted @ 2020-04-24 10:37  MN2016  阅读(230)  评论(0编辑  收藏  举报