其他分享
首页 > 其他分享> > 7.13 $\text{Nim & SG(x)}$

7.13 $\text{Nim & SG(x)}$

作者:互联网

\(\large \text{Date: 7.13}\)

\(\rm Nim\) 游戏 & \(\rm SG\) 函数

$ \rm Nim$ 游戏

先摆结论:
\(\large\left\{\begin{aligned}\text{xor}_{i=1}^na_i=0 \to先手必败\\\rm else \to先手必胜\end{aligned}\right.\)

感性理解:若干个数,\(a_1,a_2,...,a_n\),将它们化为二进制串,若每一个二进制位上都有偶数个 \(1\),那么完全存在一种后手必胜策略,即先手取了若干个 \(1\),后手就将对应的 \(1\) 取完,这样后手就是必胜的。这样表现出来就是 \(\text{xor}_{i=1}^na_i=0\)。反之,若不满足这一条性质,那先手完全可以取出上述模型中单独的 \(1\),让局面变成对于后手玩家的先手必败策略。

由此衍生出一个结论: 先手必胜局面 \(\to\) 后手必败局面。

但是这仅仅是一个 \(\rm SG\) 函数的衍生结论。

\(\text{Link: OI - Wiki}\)

什么是 \(\rm SG\) 函数?

有向图游戏与 SG 函数
有向图游戏是一个经典的博弈游戏——实际上,大部分的公平组合游戏都可以转换为有向图游戏。

在一个有向无环图中,只有一个起点,上面有一个棋子,两个玩家轮流沿着有向边推动棋子,不能走的玩家判负。

定义 \(\rm mex\) 函数的值为不属于集合 \(S\) 中的最小非负整数,即:

例如 \(\text{mex}(\{0,2,4\})=1,\text{mex}(\{1,2\})=0\)

对于状态 \(x\) 和它的所有 \(k\) 个后继状态 \(y_1,y_2,...,y_k\),定义 \(\rm SG\) 函数:

\(\text{SG}(x)=\text{mex}\{_{i=1}^k\text{SG}(y_i)\}\)

而对于由 \(n\) 个有向图游戏组成的组合游戏,设它们的起点分别为 \(s_1,s_2,...,s_n\),则有定理:当且仅当 \(\text{xor}_{i=1}^n\text{SG}(s_i)\not= 0\) 时,这个游戏是先手必胜的。同时,这是这一个组合游戏的游戏状态 \(x\) 的 SG 值。

这一定理被称作 Sprague-Grundy 定理(Sprague-Grundy Theorem), 简称 SG 定理。


\(\rm SG\) 定理适用于 任何公平的两人游戏, 它常被用于决定游戏的输赢结果。

计算给定状态的 Grundy 值的步骤一般包括:

标签:有向图,游戏,Nim,text,Grundy,rm,SG
来源: https://www.cnblogs.com/Doge297778/p/16472902.html