博弈论:公平组合游戏(Nim 游戏 & SG 定理)学习笔记

博弈论:公平组合游戏(Nim 游戏 & SG 定理)学习笔记

公平组合游戏

定义:

  1. 两人轮流以最优方式操作,两人的操作方式相同。
  2. 每次操作游戏状态必须改变,不能操作者输,另一人赢。
  3. 每个游戏状态不能重复到达。

我们把每个状态看作一个点,每个状态的点向它后继状态的点连有向边,可以生成一张 DAG(有向无环图)。

所以公平组合游戏也叫做有向图游戏

必胜状态 & 必负状态

定义:

  1. 没有后继状态的状态为必负状态。
  2. 至少有一个后继状态为必负状态的状态为必胜状态。
  3. 所有后继状态都为必胜状态的状态为必负状态。
  4. 所有状态为必胜状态或必负状态。

n,m 为游戏生成的有向图的点数和边数。
则我们可以根据必胜状态和必负状态在 O(n+m) 的时间用记忆化搜索解决游戏的胜负。

Nim 游戏

n 堆石子,每堆石子有 ai 个,两个人轮流取正整数个石子,不能取者输。

Nim 和

设一个状态 Nim 和为 S=a1a2an

性质:Nim 和为 0 的状态为必负状态,Nim 和不为 0 的状态为必胜状态

证明

根据必胜状态和必负状态的定义,我们只需证明:

  1. 没有后继状态的状态,满足 S=0
  2. 对于 S0 的状态,至少有一种操作使得后继状态 S=0
  3. 对于 S=0 的状态,没有一种操作使得后继状态 S0

证明如下:

  1. 没有后继状态的状态,a1=a2==an=0,则 S=0
  2. 对于 S0 的状态,考虑操作 ai 变为 ai 可以满足条件。则 Saiai=0,即 ai=aiS
    由于 S0,因此考虑 S 的最高位的一位 1,根据异或的定义,有奇数个 a 这一位为 1,对于这一位为 1 的 aj,一定有 ajS<aj,则操作 j 可以使 S 为 0。
  3. 对于 S=0 的状态,根据异或的定义,其中一个 a 改变则 S 也会改变。

SG 函数

定义

  1. 对于没有后继状态的状态 xSG(x)=0
  2. 对于状态 x 和它的所有后继状态 ySG(x)=mex({SG(y)})

其中 mex(S) 表示集合 S 中最小没出现过的非负整数

性质SG(x)=0 时,x 为必败状态;SG(x)0x 为必胜状态。

证明

根据必胜状态和必败状态的定义,我们只需证明:

  1. 没有后继状态的状态满足 SG=0
  2. 对于后继状态存在 SG=0 的状态,它的 SG0
  3. 对于后继状态没有 SG=0 的状态,它的 SG=0

根据 SG 的定义,这三点都是显然的。

SG 定理

对于由 n 个有向图游戏组成的游戏,这个游戏每次操作可以选择一张图操作一次。

若当前每张图的状态为 si当且仅当 SG(s1)SG(s2)SG(sn)0 时,先手必胜

证明

我们可以把第 i 堆石子有 SG(si) 个,由于 SG(x)=mex({SG(y)}),则 SG(si)=x 可以转移到所有的 SG(si)=y,0y<x,这符合 Nim 游戏的要求,于是可以用 Nim 和来解释。

posted @   dengchengyu  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示