博弈论 笔记

前言&简介

博弈论太大了,全都要考的话,竞赛生涯就结束罢

那么,什么是博弈?我们研究什么样的博弈?

博弈论,是经济学的一个分支,主要研究具有竞争或对抗性质的对象,在一定规则下产生的各种行为。博弈论考虑游戏中的个体的预测行为和实际行为,并研究它们的优化策略。

通俗地讲,博弈论主要研究的是:在一个游戏中,进行游戏的多位玩家的策略。

—— OI WIKI

现在我们知道,博弈论差不多就是van♂游♂戏。但是我们显然不会真的研究玩大型电脑游戏的策略,不然就是电子竞技了。我们(大概率)也不会去研究象棋,围棋的策略,不然就是棋类竞赛了。OI中研究的多数是 公平组合游戏

它需要满足一些条件:

  • 某一个动作,一方可以做,那另一方也可以做
  • 双方都知道完整的游戏信息,也不存在平局
  • 同一个状态不能到达多次
  • 游戏能够在有限步内结束,不能动的那一方输

比如,围棋不是公平组合游戏,因为黑方不能动白棋,白方也不能动黑棋。同理,象棋也不是。当然,打扑克、麻将等游戏也不是,因为你不能知道别人手里是什么牌。、

有向图游戏

这是一种公平组合游戏。有一张有向图,上面有一个棋子。双方轮流移动棋子走一条边,走不了的输。

对于一个有向图游戏,我们可以用拓扑排序,根据以下三条原则,来求出从每个点开始的胜负情况。称先手必胜的为“胜点”,否则为“负点”。

  • 如果一个点没有后继,那么它是负点
  • 如果一个点的后继里有一个负点,那么它是胜点
  • 如果一个点的后继里全是胜点,那么它是负点

还挺显然的,不需要证明吧。

SG函数与SG定理

SG,即Sprague和Grundy,是这个定理的发现者(两人)的名字。

我们来考虑一个情况,现在有 \(n\) 个有向图游戏,游戏双方轮流移动;每次可以任意选择其中一个游戏,并移动棋子走一条边;不能动的人输。

那怎么解决?当然,你可以把每个有向图中的点放在一起,形成一个数组,然后把这个数组作为游戏的状态,合并成一个大的有向图。那当然可以,就是复杂度有一小点高。

那怎么优化复杂度?别想了,你要是能自己独立想出来,Sprague和Grundy就自闭了。

他俩提出了这个以下东西

SG函数

对于一个有向图上的点 \(u\)

\[SG(u)=\begin{cases}0 & (u\in end)\\mex\{SG(v)|v\in nex(u)\} & (else)\end{cases} \]

其中,集合 \(end\) 表示终止节点;\(nex(u)\) 表示 \(u\) 的后继状态;而 \(mex\) 函数,表示一个集合中没有出现的,最小的 自然数。mex 是 minimum excluded 的缩写 (据wikipedia)

SG定理

对于一个 \(n\) 个有向图组成的游戏,设其起点为 \(s_1,s_2...s_n\),令 \(X=s_1\oplus s_2...\oplus s_n\),那么:

  • \(X=0\) 时,先手必输
  • 否则先手必赢

其中 \(\oplus\) 表示按位异或。

应用

  • Nim 游戏
  • 各种题 (假如能看出是个公平组合游戏模型,并写出SG函数)
posted @ 2021-05-04 23:46  Flandre-Zhu  阅读(201)  评论(0编辑  收藏  举报