博弈论
7. 博弈论
信息学一般关注的是组合博弈,组合博弈论主要关注以下类型:两人轮流行动的、完美信息、无随机因素的博弈
组合博弈一般分为 公平组合博弈 和 非公平组合博弈。
还可以按照是最后一个行动的人胜利/失败 划分为 正常博弈 和 反常博弈。
7.1 公平组合博弈
一个游戏是公平组合游戏,通常满足:
- 两名玩家轮流操作。
- 当前玩家可做的操作只取决于当前局面,与是谁无关。
- 游戏有限,不存在无限循环。
这是识别出这是公平组合游戏的重要方法。
公平组合游戏里,最常用的工具是 SG 函数和 SG 定理(Sprague–Grundy 定理)。
在说这两个之前,我们先说一下 N-position(先手必胜态) 和 P-position(先手必败态)。
注意,这里的先手和后手指的是面对当前状态,先操作的人和后操作的人,与全局的先手后手无关。
若一个状态是 N-position,当且仅当它存在一个后继状态是 P 态。
若一个状态是 P-position,当且仅当它所有后继状态都是 N 态。
但是有的题目,他的后继太多,难以刻画,所以就发明了 \(SG\) 函数。
SG函数,定义 $SG(S)=\mathrm{mex}_{T是S的后继状态} SG(T) $
在正常博弈中:
- 当 \(SG(S)=0\) 时,是必败态。
- 当 \(SG(S) \ne 0\) 时,是必胜态。
你可能会说,这也没有优化什么啊,还是要找完他的后继。
但是其实,很多时候 \(SG\) 可以观察规律。而且当一个游戏由若干个独立子游戏组成,是难以用 NP 状态直接分析的,这个时候只能尝试用 \(SG\) 分析,因为 \(SG\) 函数有一个重要的性质:
也就是整体的 \(SG\) 值就是所有独立游戏的 SG 的异或和。
证明好像不太重要,记结论即可。
反常博弈中,并不是直接把全部反过来就行了,他有不同的博弈逻辑。
7.2 零和博弈
在算法竞赛中常见的零和游戏大致可分为两类:序贯零和游戏与同时零和游戏。
零和博弈有两个人,称为 A人 和 B人,他们两个人交替行动,A人要自己收益最大,B人也要自己收益最大,但是 A人 和 B人 的总收益是固定的,所以 A人吃的越多,B人吃的越少。
表示成:
所以 B人 要自己收益最大,肯定要让 A人 收益最小。A人 对 B人 同理。
两人对称,我们钦定 A人先手。
Minimax 和 alpha-beta 剪枝:
从游戏结束开始往前推,令 \(S_0\) 为结束状态集合,\(S_1\) 为A人行动状态集合,\(S_2\) 为B人行动状态集合。
\(V(s)\) 是当前局面的 值函数
放到博弈树上就是:


(图片摘自oiwiki。)
在奇数层(从上往下的),是A人操作,他要最大化自己收益,在偶数层,是B人操作,他要最小化 A人的收益。
朴素的 Minimax 可以直接用大力搜索。
显然这个复杂度我们无法接受。
所以就有了 Alpha-Beta 剪枝,这个东西其实很简单,听的比较高级,本质上就是最优性剪枝。
对于取 \(\max\) 的节点,我们在搜索的时候令 \(\alpha\) 表示当前找到的最大值。
对于取 \(\min\) 的节点,我们在搜索的时候令 \(\beta\) 表示当前找到的最小值。
实际上在不进行剪枝的情况下,整个博弈树跑完,取 \(\max\) 的节点上的权值就等于他自己的 \(\alpha\)。而取 \(\min\) 的节点上的权值就等于他自己的 \(\beta\)。
如果对于一个取 \(\min\) 的节点 \(u\),他有一个儿子 \(v\),若 \(\alpha_v > \beta_u\) 这个儿子就不用再搜下去了,因为B人在 \(u\) 节点(状态)下肯定不会走到 \(v\) 节点了。他有一个可以让 A人获得更少的做法,在之前遍历到了。

浙公网安备 33010602011771号