博弈论

博弈论

一、博弈树

在组合游戏论中,博弈树是每个节点都表示一个游戏状态的有向图,图中的有向边是游戏中的某一步。

一颗完整的博弈树,包含了从雏实游戏状态开始以及所有可达状态的所有可能的移动。

终止状态

博弈树中的叶子结点是指没有后继状态的结点(表示游戏结束时的游戏状态)。

在叶子结点对应的状态中,由于双方都不能走,所以也被称为终止状态。

image/svg+xml
MAX状态

假设当前状态轮到一方走,有多个可以选择的后继状态,那么一定选择游戏值最大的后继状态。

对应的游戏值也是当前状态的游戏值。

这样的状态称为MAX状态。

MIN状态

假设当前状态轮到对方走,有多个可以选择的后继状态,那么一定选择游戏值最小的后继状态。

对应的游戏值也是当前状态的游戏值。

这样的状态称为MIN状态。

Alpha-Beta 剪枝

Alpha-Beta剪枝是指在一个Max状态时,它的后继状态一定是一个Min状态(显然),

而如果当前这个Max状态的最大游戏值是X,

而它的某个Min子状态种有一个子状态的值小于等于X,

那么这个Min子状态一定不能更新Max状态。

image/svg+xml Ma x Min 5 10 5 Max -1 -1 -4 -2 10 3 5



观察上图中的博弈树,如果先遍历了初始状态的右子树,可以知道根结点的游戏值至少为5.

而后,遍历左子树时,到\(-1\)结点,发现游戏值为\(-1\),且是根节点的Min子状态的子状态。

由于\(-1 \leq 5\)

所以此时不需要再遍历该Min状态的其他子状态了。

类似地,

在Min状态也可以进行Alpha-Beta剪枝。

Max状态的子状态一定是Min状态

Min状态的子状态一定是Max状态

二、有向图博弈问题

1.公平组合游戏

若一个游戏满足:

  • 两名玩家交替行动。
  • 在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关。
  • 不能行动的玩家判负。

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

NIM博弈属于公平组合游戏,但常见的棋类游戏,比如围棋,就不是公平组合游戏。

因为围棋的交战双方分别只能落黑子和白子。(不满足条件\(2\)

胜负判定也比较复杂。(不满足条件\(3\)

2.有向图游戏

在公平组合游戏中,可以把所有有可能出现的状态看作是图的结点,

如果从一个状态可以通过一步转移到达另一个状态,则在两点之间连一条有向边,

这样就得到了一个状态图。

以巴什博弈为例,

一共有\(n\)个物品,两个人轮流取,

一次最少取走\(1\)个最多取走\(m\)个,

最后取光的人获胜。

image/svg+xml 0 1 2 3 4 5 6

如图展示了\(n=6,m=3\)的时候的状态图,

结点内的数字表示当前状态剩下的物品的个数。

假设游戏不会出现平局,即状态图是有向无环图,

所有的状态可以分成两种,

\(P\)态和\(N\)态。

\(P\)态表示该状态对于前一个玩家来说是必胜的,

\(N\)态表示该状态对于下一个玩家来说是必胜的。

例如,对于\(n=6,m=3\)的巴什博弈来说,

0个物品显然是\(P\)态,

而还剩\(1、2\)\(3\)个物品的状态都是\(N\)态。

如果当前状态下,游戏不能再继续进行,则该状态被成为终止状态。

例如,巴什博弈中物品已经被取光了。

在大部分的游戏规则中,终止状态都是\(P\)态。

3.Mex运算

\(S\)表示一个非负整数集合。

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

\(mex(S)=min\) { $x|x\in N,x\in !!!!!/ S $ }

4.SG函数

对于任意状态\(x\)

它的SG函数值为:\(g(x)=mex\) { \(g(y)|y\)\(x\)的后续状态 }。

对于一个终止状态,因为它没有后继状态,所以它的SG函数值为\(0\)

还以\(n=6,m=3\)的巴什博弈为例,

\(S_i\)表示还剩\(i\)个物品的状态。

\(S_0\)是终止状态,

所以\(g(S_0)=0\)

\(S_1\)唯一的后继状态是\(S_0\),所以\(g(S_1)=1\)

\(S_2\)可以转移到\(S_1\)\(S_0\)

所以\(g(S_2)=2\)

因为\(S_3\)可以转移到\(S_2、S_1\)\(S_0\)

所以\(g(S_3)=3\)

对于\(S_4\)来说,它可以转移到\(S_3、S_2\)\(S_1\)

三者的SG值分别为3、2、1,

因此\(g(S_4)=0\)

依此类推可以知道\(g(s_5)=1\)\(g(s_6)=2\)

如果知道一个状态的SG函数值,

可以快速地判断该状态是\(P\)态还是\(N\)态。

对于一个状态,如果这个状态的SG值等于\(0\)

那么这个状态是\(P\)态,

否则就是\(N\)态。

仍然以\(n=6,m=3\)的巴什博弈为例,

\(g(S_4)=0\)

所以\(S_4\)是一个\(P\)态,即先手必败。

\(S_5\)\(S_6\)的SG值都不为\(0\)

它们都是\(N\)态,即先手必胜。

事实上,对于\(S_5\)\(S_6\)来说,

先手想要必胜,需要把物品取到只剩下\(4\)个。

(显而易见)

5.Nim游戏

Nim游戏是一个公平组合游戏:

游戏开始时有\(n\)堆石子,第\(i\)堆有\(a_i\)个石子,

两个玩家轮流挑选一堆石子,

并从中取走若干个,

最后不能再取的人输。

加入只有一堆石子,那么显然是先手获胜,

因为他只需要把这堆石子取光即可。

如果有两堆或者更多堆,

游戏的最佳策略似乎并不是那么显而易见。

我们想到计算状态的SG函数。

但是由于后继状态过多,算法效率较低。

其实,Nim游戏有一个很优美的算法,

对于当前状态\(a=(a_1,a_2…a_n)\),如果\(a_1\) ^ \(a_2\) ^ \(a_n=0\),则为\(P\)态,否则为\(N\)态。

显然,通过这种结论。

我们可以很轻易的把Nim游戏转化成为通过SG函数来求解。

posted @ 2020-10-11 22:20  Luo_Feng_Han  阅读(293)  评论(0编辑  收藏  举报