2025/11/17 分享
分享一些游戏
对称博弈
有 \(n\) 个石子围成一个圈,两个人轮流取走石子,每次可以取走一个石子或者相邻的两个石子,最后没有石子取的人输。
显然如果 \(n \leq 2\) ,先手总会赢。
否则显然先手只能把一个圈变成一条链。否则后手可以一次拿完,或者把一条链变成两条链。
后手总有办法分成两条一模一样的链。接下来无论先手如何操作,后手总能在对称位置模仿操作,那么后手赢。
那么当且仅当 \(n \geq 2\) 后手必胜。
NP 图
命题 1 :无法进行任何移动的局面是 \(P-postion\) 。
命题 2 :可以移动到 \(P-postin\) 的局面是 \(N-postion\) 。
命题 3 :所以移动都导致 \(N-postion\) 的局面是 \(P-postion\) 。
巴什博弈
有 \(n\) 根火柴,两个人轮流取走火柴,每次可以取走 \(1 \sim m\) 根,最后没有火柴取的人输。
考虑动态规划:
\(dp[0] = P\) ,\(dp[0 + 1 \sim m] = N\) 。
\(dp[m + 1] = P\) ,\(dp[m + 1 + 1 \sim m] = N\) 。
\(dp[2m + 2] = P\) ,\(dp[2m + 2 + 1 \sim m] = N\) ……
容易不完全归纳当且仅当 \(n \equiv 0 (\bmod m + 1)\) 时是 \(P\) 态。设为命题 1 。
证明:
命题 2 :当 \(n \equiv 0 (\bmod m + 1)\) ,根据鸽笼原理取 \(< m + 1\) 根火柴总会让新的 \(n^{'}\) 满足 \(n^{'} \not \equiv 0 (\bmod m + 1)\) 。
命题 3 :当 \(n \not \equiv 0 (\bmod m + 1)\) ,根据鸽笼原理总能取 \(< m + 1\) 根火柴使让新的 \(n^{'}\) 满足 \(n^{'} \equiv 0 (\bmod m + 1)\) 。
\(\square\)
那么我们声称这个归纳是完备的。
NIM 博弈
有 \(n\) 堆石子,每堆有 \(a_1, a_2, \cdots, a_n\) 个,两个人轮流取石子,每次可以选择其中一堆拿走任意多个,最后没有石子拿的人输。
假设 \(n = 1\) ,显然先手必胜。
假设 \(n = 2\) ,显然在先手走过后,后手总能通过模仿,使得局面对称,那么后手必胜。
\(n \geq 3\) 则没那么容易推导,这里引入 \(NIM\) 和作为工具。
对于一个 \(NIM\) 游戏的局面 \(a_1, a_2, \cdots, a_n\) ,他是 \(P-postin\) 当且仅当 \(a_1 \oplus a_2 \oplus \cdots a_n = 0\) 。设为命题 1 。
证明:
命题 2 :若 \(a_1 \oplus a_2 \oplus \cdots a_n = k\) ,设 \(k\) 的最高位为 \(m\) ,总存在 \(i \in [1, n]\) 满足 \(a_i\) 的 \(m\) 位为 \(1\) ,则 \(a_i \oplus k \leq a_i\) 。由 \(a_1 \oplus a_2 \oplus \cdots a_n \oplus k = 0\) ,这需要在 \(i\) 这堆拿走 \(a_i - a_i \oplus k\) 变成 \(a_i - (a_i - a_i \oplus k) = a_i \oplus k\) 即可。
命题 3 :若存在 \(a_i\) 拿走一些石子后变成 \(a_i^{'} < a_i\) ,则 \(P-opstion\) 的 \(NIM\) 和为 \(0 \oplus a_i \oplus a_i^{'} \neq 0\) 。
\(\square\)
浙公网安备 33010602011771号