「算法学习」博弈论初探

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

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

公平组合游戏

公平组合游戏的定义如下:

  • 游戏有两个人参与,二者轮流做出决策,双方均知道游戏的完整信息。
  • 任意一个游戏者在某一确定状态可以作出的决策集合只与当前的状态有关,而与游戏者无关。

游戏中的同一个状态不可能多次抵达,游戏以玩家无法行动为结束,且游戏一定会在有限步后以非平局结束。

博弈图与状态

现在有一个问题:\(n\) 堆物品,每堆有 \(a_i\) 个,两个玩家轮流取走任意一堆的任意个物品,但不能不取。取走最后一个物品的人获胜。

如果将每个状态视为一个节点,再从每个状态向它的后继状态连边,我们就可以得到一个博弈状态图。

假设最初 \(3\) 堆物品状态为 \((1,1,2)\),那么移动物品后的状态可以到达 \((0,1,2)\)\((1,0,2)\) 等后继状态。

定义 必胜状态先手必胜的状态必败状态先手必败的状态。通过推理,我们可以得出下面三条定理:

  • 定理 \(1\):没有后继状态的状态是 必败状态
  • 定理 \(2\):一个状态是必胜状态当且仅当存在至少一个必败状态为它的后继状态。
  • 定理 \(3\):一个状态是必败状态当且仅当它的所有后继状态均为必胜状态。

如上图所示,终止状态 \((0,0,0)\) 为必败状态 \(P\)。那么 \((0,0,1)\)\((0,1,0)\) 等状态存在一个后继状态 \((0,0,0)\) 为必败状态,则其本身为必胜状态 \(N\)

如果博弈图是一个有向无环图,则通过这三个定理,我们可以在绘出博弈图的情况下用线性的时间得出每个状态是必胜状态还是必败状态。

四种常见公平组合游戏

巴什博弈(Bash Game):有一堆总数为 \(n\) 的物品,\(2\) 名玩家轮流从中拿取物品。每次至少拿 \(1\) 件,至多拿 \(m\) 件,不能不拿,最终将物品拿完者获胜。

分析:\(n = m + 1\) 时,由于一次最多只能取 \(m\) 个,所以无论先取者拿走多少个,后取者都能一次拿走剩余的物品,则先手必败,如果 \(n\)\(m + 1\) 的倍数结果也一样。则显然有结论:当 \(n\)\(m+1\) 倍数时,先手必败,否则先手必赢

一种常见的变形是“问题改为最后取光的人输”。那么此时的结论是 \(n-1\)\(m+1\) 倍数时时先手必败。


威佐夫博奕(Wythoff game): 有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。

分析: 首先,我们定义 \((a_i,b_i)\) 表示两堆物品的数量并称其为局势,如果甲面对 \((0,0)\),那么甲已经输了,这种局势我们称为奇异局势。前几个奇异局势为 \(( 0 , 0)\)\(( 1 , 2 )\)\(( 3 , 5 )\)\(( 4 , 7 )\)\(( 6 , 10 )\)\(( 8 , 13 )\)\(( 9 , 15 )\)\(( 11 , 18 )\)\(( 12 , 20 )\)面对非奇异局势,先手必胜。面对奇异局势,先手必败。如果一个 \((a_k,b_k)\) 满足下列条件,就是奇异局势。

我们定义 \((x, y)\) 为第 \(k\) 个奇异局势,有如下性质:

  • 任何自然数都包含在 一个且仅有一个 奇异局势中。
  • \(x\) 为前 \(1\sim k\) 个奇异局势中没有出现过的最小正整数,与 \(x\) 配对奇异局势的 \(y = x + k\)
  • 任何操作都会将奇异局势转化为非奇异局势。此性质不难证明。
  • 可以采取适当的方法将非奇异局势转化为奇异局势。

证明一下第 \(4\) 个性质:假设面对的局势是 \(( a , b )\),讨论下列 \(5\) 种情况。设 \((a_i,b_i)\) 为第 \(i\) 项奇异局势。

  • 如果 \(a = b\),则同时从两堆中取走 a 个物体,就变为了奇异局势 \(( 0 , 0 )\)
  • (下列四种情况开始分类 \(a,b\) 等于 \(a_k\),因为任何自然数都包含在一个且仅有一个奇异局势中)
  • 如果 \(a = a_k,b > b_k\),那么从 \(b\) 中取走 \(b − b_k\) 个物体,即变为奇异局势。
  • 如果 \(a = a_k\)\(b < b_k\),则同时从两堆中拿走 \(a − a_{b-a}\) 个物体,变为奇异局势 \((a_{b-a},a_{b-a} + b − a)\)
  • 如果 \(a > a_k\)\(b = a_k+k\),则从第一堆中拿走多余的数量 \(a − a_k\) 即可。
  • 如果 \(a < a_k\)\(b = a_k + k\)。分两种情况讨论。令 \(j<k\),那么有奇异局势 \((a_j,b_j)\)
    • \(a = a_j\),从第二堆里面拿走 \(b − b_j\)
    • \(a = b_j\),从第二堆里面拿走 \(b − a_j\) 即可。

​ 证明了第 \(3,4\) 个性质,那么也就证明了面对非奇异局势,先手必胜。面对奇异局势,先手必败。


斐波那契博弈(Fibonacci game):一堆石子有 \(n\) 个,两人轮流取,先取者第一次必须取,但是不能取完,以后每次取的石子数不能少于 \(1\) 且不能超过上次取子数的 \(2\) 倍,先取完者胜。

结论:设这堆石子数为 \(n\),当 \(n\) 为斐波那契数时,先手必败。此博弈同理,不再证明。


尼姆博弈(Nim game):\(n\) 堆物品,每堆有 \(a_i\) 个,两个玩家轮流取走任意一堆的任意个物品,但不能不取。取走最后一个物品的人获胜。

结论:定义 Nim 和 \(a_1 ⊕ a_2 ⊕\dots ⊕ a_n\)。(⊕ 为异或)。那么当且仅当 Nim 和为 0 时,该状态为必败状态。否则该状态为必胜状态。

为了证明 Nim 和性质的正确性,只需要证明下面三个定理:

  • 没有后继状态的状态是必败状态。
  • 对于 \(a_1 ⊕ a_2 ⊕ \dots ⊕ a_n ≠ 0\) 的局面,一定存在某种改变使得 $a_1 ⊕ a_2 ⊕ \dots ⊕ a_n = 0 $。
  • 对于 $a_1 ⊕ a_2 ⊕ \dots ⊕ a_n = 0 $ 的局面,一定不存在某种改变使得 \(a_1 ⊕ a_2 ⊕ \dots ⊕ a_n ≠ 0\)

其实都挺显然的。

有向图博弈与 SG 函数

在一个有向无环图中,只有一个起点,上面有一个棋子,两个玩家轮流沿着有向边推动棋子,不能走的玩家判负。定义 \(\text {mex}\) 函数的值表示为不属于集合 \(S\) 的最小非负整数。对于一个状态 \(x\) 和他的所有 \(k\) 个后继状态 \(y_1,y_2,\dots,y_k\),定义 \(\texttt{SG}\) 函数 \(\operatorname{SG}(x)=\operatorname{mex}\{\operatorname{SG}(y_1), \operatorname{SG}(y_2), \ldots, \operatorname{SG}(y_k)\}\)

而对于有 \(n\) 个有向图游戏组成的组合游戏,设他们的起点为 \(s_1,s_2,\dots,s_n\),则由定理:当且仅当 $\operatorname{SG}(s_1) \oplus \operatorname{SG}(s_2) \oplus \ldots \oplus \operatorname{SG}(s_n) \neq 0 $ 时,这个游戏是先手必胜的。

感性理解一下 \(\texttt{SG}\) 函数:

  • 若其后继节点存在 \(\texttt{SG}\) 值为 \(0\) 的必败态,那么当前 \(\texttt{SG(x)}\) 必定不为 \(0\) 为必胜状态。
  • 若其后继节点不存在 \(\texttt{SG}\) 值为 \(0\) 的必败态,那么当前 \(\texttt{SG(x)}\) 必定为 \(0\) 为必败状态。

未完待续。


参考文献:cqbzgm 博弈论专属课件。V 我 500 可买盗版。

posted @ 2025-01-25 08:47  Otue  阅读(41)  评论(1)    收藏  举报