WJX博客

学习笔记——博弈论

前言

博弈论真是一门玄学,这类题需要我们有强大的数学功底以及一定的推演能力,在考场上我们一般没有时间去证明一个结论的正确性,所以只能靠打表找出前几项的规律再推演到所有。

公平组合游戏(ICG)

若一个游戏满足

  • 由两名玩家交替行动

  • 在游戏进程的任何时刻,可执行的合法行动与轮到那名玩家无关

  • 不能行动的玩家判负

则该游戏称为公平组合游戏。

有向图游戏

给定一个有向无环图(DAG),图中有唯一的起点,在起点上放有一枚棋子。两名玩家交替地把这枚棋子沿有向边进行运动,每次可以移动一步,无法移动者判负。该游戏被称为有向图游戏。

任何一个公平组合游戏都可以转化为有向图游戏。具体的方法是将每一个局面看成图中的一个节点,并从每个局面沿合法行动能够到达的下一个局面连向边。

Mex运算

\(S\)表示一个非负整数集合,定义\(mex(S)\)为求出不属于集合\(S\)的最小非负整数的运算,

\[mex(S)=min(x) \{x \in N,x \notin S\} \]

SG函数

在有向图游戏中,对于每一个节点\(x\),设从\(x\)出发共有\(k\)条有向边,分别到达节点\(y_1,y_2,...y_k\),定义\(SG(S)\)\(x\)的后继节点\(y_1,y_2,...y_k\)\(SG\)函数值构成的集合再执行\(mex\)运算结果,即

\[SG(x)=mex( \{SG(y_1),SG(y_2),...,SG(y_k) \}) \]

整个有向图游戏的\(SG\)函数值被定义为有向图起点的\(SG\)函数值。

有向图游戏的和的\(SG\)函数值等于它的每个子游戏\(SG\)函数值的异或和,即

\[SG(G)=SG(G_1) \bigoplus SG(G_2) \bigoplus ... \bigoplus SG(G_m) \]

定理

若在有向图游戏中某个局面必胜,当且仅当该局面对应节点的\(SG\)函数值大于\(0\)

若在有向图游戏中某个局面必败,当且仅当该局面对应节点的\(SG\)函数值等于\(0\)

理解:

若该局面的\(SG\)函数值为\(0\),则当前玩家无法操作(定义),所以为必败局面。

若该局面的\(SG\)函数值不为\(0\),则当前玩家可以将当前局面移动到\(SG\)函数值为\(0\)的局面中(定义,\(SG(S)>0\),则该节点的后继中有\(SG(y)=0\)的节点),所以为必胜局面。

例题

P2197 【模板】nim 游戏(题解加学习笔记)(我的代码)

P2252 [SHOI2002]取石子游戏|【模板】威佐夫博弈(题解)(我的代码)

P2148 [SDOI2009]E&D(题解)(我的代码)

P1288 取数游戏II(题解)(我的代码)

P1290 欧几里德的游戏(题解)(我的代码)

P1247 取火柴游戏(裸的nim游戏)(题解)(我的代码)

P2575 高手过招(阶梯nim博弈)(题解)(我的代码)

参考资料

《算法竞赛进阶指南》

[学习笔记] (博弈论)Nim游戏和SG函数(from A_Comme_Amour)

posted @ 2021-08-05 16:07  WJX3078  阅读(88)  评论(0)    收藏  举报