前言
本来是想学组合数学的,但是脑子貌似跟不上,我觉得学一下简单博弈论吧,草。有些没有证明是因为我懒,不想写证明过程,但凡是没写咕了的,大部分是不想写了。
一些概念
博弈论
博弈论,是经济学的一个分支,主要研究具有竞争或对抗性质的对象,在一定规则下产生的各种行为。博弈论考虑游戏中的个体的预测行为和实际行为,并研究它们的优化策略。
通俗地讲,博弈论主要研究的是:在一个游戏中,进行游戏的多位玩家的策略。
公平组合游戏
公平组合游戏的定义如下:
游戏有两个人参与,二者轮流做出决策,双方均知道游戏的完整信息;
任意一个游戏者在某一确定状态可以作出的决策集合只与当前的状态有关,而与游戏者无关;
游戏中的同一个状态不可能多次抵达,游戏以玩家无法行动为结束,且游戏一定会在有限步后以非平局结束。
大部分的棋类游戏都不是公平组合游戏,如国际象棋、中国象棋、围棋、五子棋等(因为双方都不能使用对方的棋子)。
Nim游戏
一般情况都玩过取石子游戏,我记得我们玩的时候很小,老是偷着藏几块石头。
一般形式
(n) 堆物品,每堆有 (a_i) 个,玩家取走任意多个物品(取走数小于规定量,大于 (0) ) ,最后取石子的人为胜。
再来一些概念
- 局面:游戏过程中面临的状态。
- 先手:整局游戏第一个行动的。
- 后手:整局游戏第二个行动的。
- 必败:无论采取什么行动,都会输掉比赛。
- 必胜:行动完后对手处于必败状态。
- 必胜状态:先手必胜状态。
- 必败状态 :先手必败状态。
一些抄来的定理
-
(1.) 没有后继状态的为必败状态
游戏进行到现在已经结束了,无法继续向下进行了,也就该状态无论采取什么行动,都将导致游戏的败态。
-
(2.) 一个状态为必败状态当且仅当它的所有后继状态都为必胜状态。
相当于定理 (1) 向上移动返回了两个局面
-
(3.) 一个状态为必胜状态当且仅当至少有一个必败状态为它的后继状态
如果该状态至少有一个后继状态为必败状态,那么可以通过操作到该必败状态;此时对手的状态为必败状态——对手必定是失败的,而相反地,就获得了胜利。
判断局面是先手必?
- 第一种方法就是 (O(n + m))((n) 为状态数,(m) 为状态转移的边数) 的绘制出博弈图,以 (O(prod_{i=1}^{n} a_i)) 的判断出是否是先手必胜。
- 第二种为 (Nim) 和, 当且仅当 (Nim) 和不为 (0) 的时候 , 该状态为先手必胜态。即为 (a_1 ext{^} a_2 ext{^}a_3 … ext{^} a_n
eq 0)
证明:且咕了,我 (TM ext{^}) 傻逼了。
俩道模板题
#10241 「一本通 6.7 例 1」取石子游戏 1
#10242. 「一本通 6.7 例 1」取石子游戏 2
有向图游戏 & SG函数
(Mex) 运算 :
设 (S) 表示一个非负整数集合, 定义 (mex(S)) 为求出不属于集合 (S) 的最小非负整数的运算, 即为 $$mex(S) = min{(x)} x otin S , xin N$$
有向图游戏
给定一个有向无环图,图中唯一的起点,在起点上放有一枚棋子,两名玩家交替地吧这枚棋子沿着有向边进行移动,每次可以移动一步,最后无法移动者为败。该游戏为 有向图游戏。
任何一个公平组合游戏都可以看做是一个有向图游戏, 即为: 把每一个局面看成一个节点,把连接局面的行动视为边,就将一个有向图游戏转化为有向图游戏了。
SG 函数
在有向图游戏中,对于每一个节点 (x) ,设从 (x) 出发共有 (k) 条有向边,分别到达节点 (y_1 , y_2 , … y_k) ,定义 (SG(x)) 为 (x) 的后继节点 (y_1,y_2 … y_k) 的 (SG) 函数值构成的集合再执行 (Mex) 运算,为 :
特别的,整个有向图游戏 (G) 中的 (SG) 函数值被定义为起点 (s) 的 (SG) 函数值,即为 (SG(G) = SG(s))
有向图游戏的和
设 (G_1 , G_2 … G_m) 是 (m) 个有向图游戏,定义有向图游戏 (G) ,它的行动规则是任选某个有向图游戏 (G_i) ,并在 (G_i) 上行动一步, (G) 被称为有向图游戏 (G_1 , G_2,…,G_m) 的和。
有向图游戏的和 (SG) 函数值等于它包含的各个子游戏 (SG) 函数值的异或和, 即为
有向图游戏的和定理
- 有向图游戏的某个局面必胜,当且仅当该局面对应的节点的 (SG) 函数值大于 (0)
- 有向图游戏的某个局面必败,当且仅当该局面对应的节点的 (SG) 函数值等于 (0)
理解 :
(1.) 在一个没有出边的节点上,棋子不能移动,其 (SG) 的值为 (0) , 对应着必败局面
(2.) 若一个节点的某一个后继节点的 (SG) 值为 (0) , 在 (Mex) 运算后,该节点的 (SG) 值大于 (0) ,这等价于,若一个局面的后继局面中存在必败局面,则当前局面为必胜局面
(3.) 若一个节点的某一个后继节点的 (SG) 值均不为 (0) , 在 (Mex) 运算后,该节点的 (SG) 值为 (0) , 这等价于 , 若一个居民啊的后继局面全部为必胜状态,则当前的局面为必败状态。
一道模板题
Nim 和 有向图游戏
我们可以将 (Nim) 中有 (x) 个物品的一堆看成是一个节点,当且仅当 (y < x) , 节点 (x) 可以转移到节点 (y) 上
Nim 模板题。
威佐夫博弈
有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜.
一道模板题
结论 : 若两堆物品的初始值为 ((x,y)),且 (x < y),则另 (z=y-x);记 (w=(int)(z imes frac{sqrt 5 + 1}{2} ));若 (w=x),则先手必败,否则先手必胜。
斐波那契博弈
有一堆物品,两人轮流取物品,先手最少取一个,至多无上限,但不能把物品取完,之后每次取的物品数不能超过上一次取的物品数的二倍且至少为一件,取走最后一件物品的人获胜。
结论: 先手胜当且仅当 (n) 不是斐波那契数,
鸣谢
博弈论-OI-Wiki
《算法竞赛进阶指南》 - 李煜东