一个蒟蒻来口胡$SG$函数与$SG$定理。

要是发现有不对之处望指教。

首先我们来了解一下$Nim$游戏。

$Nim$游戏是公平组合游戏的一种,意思是当前可行操作仅依赖于当前局势。

而经典$Nim$游戏是指,一个地方放了$n$堆棋子,每堆棋子数目$a_i$给定。

两人轮流操作,每次操作从一堆中拿出任意数量的棋子。即最少拿一个,最多拿完。

拿完棋子的人胜。

如果两人都执行最优决策的话,胜负在刚开局时就已经确定了。

而在最有决策下,$Nim$游戏的胜负计算方式是:

若每堆棋子数量a_1^a_2^a_3^……^a_n=0则先手负,反之先手胜。

好像很玄学,怎么证明?

假设开局时a_1^a_2^a_3^……^a_n=0,

先手取走其中一堆的一些棋子,假设在$a_1$中去,那么式子变为a_1^a_2^a_3^……^a_n=k且$k!=0$。

此时一定存在一个$a_i$,满足二进制下$a_i$在$k$的最高位为$1$。

此时只要将$a_i$变为a_i ^ k,那么这$n$个数的异或和依然为$0$。

比如,原来集合中有{2,4,6},满足2^4^6=0;

先手拿走了6的一整堆,此时2^4^0=6;

而4与6满足性质,此时只需要让4变为4^6=2即可。

先手后手一直在拿走棋子,使得总数一直在减小,减小到的终点即0^0^0^……^0=0。

就一定是后手胜啦。

后来出题人们搞出了好多类似$Nim$游戏的博弈问题,而归根结底处理方法依然可以用异或法。

这就又衍生出了$SG$函数和$SG$定理。

先定义一下$mex$运算。

$mex$指对于一个非负整数集合不在其中的最小数

举个例子,mex{}=0,mex{0,1,2,3}=4,mex{1,2,3,4,5}=0。

回到$SG$函数。

对于一个局势,不同的操作会产生不同的后果,产生不同的新局势。

当前局势的$SG$函数值,等于所有后继局势的$SG$函数的$mex$值。

比如说,当$Nim$游戏中只有一堆棋子时,对于每个棋子数$SG$函数计算如下:

SG[0]=mex{}=0

SG[1]=mex{0}=1

SG[2]=mex{0,1}=2

SG[3]=mex{0,1,2}=3

等等。

有什么用呢?

一个局势是$P-position$(先手必败)当且仅当其$SG$函数值为$0$。

哇好厉害啊。

接下来上$SG$定理:

对于任意有限多个公平组合游戏的组合,其$SG$函数值等于所有子游戏$SG$函数值的异或和。

能不能理解为,第一个游戏有好几堆棋子,第二个游戏有好几堆棋子……

结果整个游戏就是好几堆棋子,其$SG$函数等于所有堆的$SG$函数的异或和。

大概

就这些了。

模板靠手速,博弈靠智商

(o_o)

SG定理与SG函数的更多相关文章

  1. 简单易懂的博弈论讲解(巴什博弈、尼姆博弈、威佐夫博弈、斐波那契博弈、SG定理)

    博弈论入门: 巴什博弈: 两个顶尖聪明的人在玩游戏,有一堆$n$个石子,每次每个人能取$[1,m]$个石子,不能拿的人输,请问先手与后手谁必败? 我们分类讨论一下这个问题: 当$n\le m$时,这时 ...

  2. SG函数和SG定理【详解】

    在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念:        P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败.        N点:必胜点 ...

  3. SG函数&&SG定理

    必胜点和必败点的概念:        P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败.        N点:必胜点,处于此情况下,双方操作均正确的情况下必胜. 必胜点和必败点的 ...

  4. (转载)--SG函数和SG定理【详解】

    在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念:        P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败.        N点:必胜点 ...

  5. 组合游戏 - SG函数和SG定理

    在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念:        P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败.        N点:必胜点 ...

  6. SG函数和SG定理(Sprague_Grundy)

    一.必胜点和必败点的概念 P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败.       N点:必胜点,处于此情况下,双方操作均正确的情况下必胜. 必胜点和必败点的性质:     ...

  7. HDU 1851 (巴什博奕 SG定理) A Simple Game

    这是由n个巴什博奕的游戏合成的组合游戏. 对于一个有m个石子,每次至多取l个的巴什博奕,这个状态的SG函数值为m % (l + 1). 然后根据SG定理,合成游戏的SG函数就是各个子游戏SG函数值的异 ...

  8. HDU5795A Simple Nim SG定理

    A Simple Nim Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  9. HDU5724 Chess(SG定理)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5724 Description Alice and Bob are playing a spe ...

随机推荐

  1. bzoj 5019: [Snoi2017]遗失的答案【dp+FWT】

    满足GL的组合一定包含GL每个质因数最大次幂个最小次幂,并且能做限制这些数不会超过600个 然后质因数最多8个,所以可以状压f[s1][s2]为选s1集合满足最大限制选s2集合满足最小限制 dfs一下 ...

  2. ubuntu 直接用软件的名字启动非apt安装的软件

    方法一: 可以在.bashrc文件中加入 alias命令,把软件的名字就等于软件执行文件的绝对路径 方法二: 在/usr/bin 目录下为执行文件创建软链接(未尝试)不过应该可以 软件自启动的方法 在 ...

  3. macOS 设置Root密码

    用管理员帐号进入Terminal: 1) 输入:sudo passwd root ,回车: 2) 输入新的root密码: 3) 输入:su : 4) 输入新密码: 这样就进入到root帐号了.

  4. Broken BST CodeForces - 797D

    Broken BST CodeForces - 797D 题意:给定一棵任意的树,对树上所有结点的权值运行给定的算法(二叉查找树的查找算法)(treenode指根结点),问对于多少个权值这个算法会返回 ...

  5. 递推DP URAL 1244 Gentlemen

    题目传送门 /* 题意:给出少了若干卡片后的总和,和原来所有卡片,问少了哪几张 DP:转化为少了的总和是否能有若干张卡片相加得到,dp[j+a[i]] += dp[j]; 记录一次路径,当第一次更新的 ...

  6. WPF学习12:基于MVVM Light 制作图形编辑工具(3)

    本文是WPF学习11:基于MVVM Light 制作图形编辑工具(2)的后续 这一次的目标是完成 两个任务. 本节完成后的效果: 本文分为三个部分: 1.对之前代码不合理的地方重新设计. 2.图形可选 ...

  7. CG Shader常用函数

    为了方便自己记忆,将常用的CG函数写于此 转载于 http://www.cppblog.com/lai3d/archive/2008/10/23/64889.html Name Syntax Desc ...

  8. mac下安装nodejs

    下载 https://nodejs.org/en/ 安装 一步步继续就ok 验证 npm -v node -v Done!

  9. Centos 6 安装python2.7.6

    centos 是自带python的.但是版本稍微旧一些.搞python开发,肯定要用新一点的稳定版.所以,要升级一下python. 先去python主站下载python的源码包:Python-2.7. ...

  10. JDBC基础-setFetchSize方法

    在Statement和ResultSet接口中都有setFetchSize方法 void setFetchSize(int rows) throws SQLException 查看API文档 Stat ...