SG函数学习总结
有点散乱, 将就着看吧.
首先是博弈论的基础, 即 N 和 P 两种状态: N 为必胜状态, P 为必败状态.
对于N, P两种状态, 则有
1. 没有任何合法操作的状态, P;
2. 可以移动到P局面的情况为N状态;
3. 可以移动到的所有状态均为N状态, 则当前情况为P状态.
然后就可以引入SG函数了.
首先定义mex运算, 这是施加于一个集合的运算, 表示最小的不属于这个集合的非负整数。
for instance,
mex{0, 1, 2, 4} = 3、mex{2, 3, 5} = 0、mex{} = 0。
对于一个给定的有向无环图, 定义关于图的每个顶点的Sprague-Grundy函数g如下:g(x) = mex{ g(y) | y是x的后继}, 这里的g(x)即
sg[x]。
例如:取石子问题, 有1堆n个的石子, 每次只能取{1, 3, 4}个石子, 先取完石子者胜利, 那么各个数的SG值为多少?
sg[0] = 0, f[] = {1, 3, 4},
x = 1时, 可以取走1-f{1}个石子, 剩余{0}个, mex{sg[0]} = {0}, 故sg[1] = 1;
x = 2时, 可以取走2-f{1}个石子, 剩余{1}个, mex{sg[1]} = {1}, 故sg[2] = 0;
x = 3时, 可以取走3-f{1, 3}个石子, 剩余{2, 0}个, mex{sg[2], sg[0]} = {0, 0}, 故sg[3] = 1;
x = 4时, 可以取走4-f{1, 3, 4}个石子, 剩余{3, 1, 0}个, mex{sg[3], sg[1], sg[0]} = {1, 1, 0}, 故sg[4] = 2;
x = 5时, 可以取走5-f{1, 3, 4}个石子, 剩余{4, 2, 1}个, mex{sg[4], sg[2], sg[1]} = {2, 0, 1}, 故sg[5] = 3;
以此类推…..
x 0 1 2 3 4 5 6 7 8
sg 0 1 0 1 2 3 2 0 1
这里的sg函数与上面提到的N, P两种状态实际上是吻合的, 当 sg[i] == 0 时, 处于P状态; 否则处于N状态.
SG函数学习总结的更多相关文章
- SG函数学习
尼姆博弈就是sg函数的简单体现 学习粗:https://blog.csdn.net/luomingjun12315/article/details/45555495 //f[N]:可改变当前状态的方式 ...
- SG 函数学习
\(Mex\) 运算 \(mex(S)\) 为不属于集合 \(S\) 的最小非负整数,即: \[mex(S)=\min \limits_{x \in \mathbb{N},x \not\in S} \ ...
- 学习笔记--博弈组合-SG函数
fye学姐的测试唯一的水题.... SG函数是一种游戏图每个节点的评估函数 具体定义为: mex(minimal excludant)是定义在整数集合上的操作.它的自变量是任意整数集合,函数值是不属于 ...
- HDU 1536 sg函数
S-Nim Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- hdu-------(1848)Fibonacci again and again(sg函数版的尼姆博弈)
Fibonacci again and again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- 【转】博弈问题及SG函数(真的很经典)
博弈问题若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多.(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要 ...
- (转)博弈问题与SG函数
博弈问题若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多.(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要 ...
- 博弈论进阶之SG函数
SG函数 个人理解:SG函数是人们在研究博弈论的道路上迈出的重要一步,它把许多杂乱无章的博弈游戏通过某种规则结合在了一起,使得一类普遍的博弈问题得到了解决. 从SG函数开始,我们不再是单纯的同过找规律 ...
- 博弈论初步(SG函数)
讲解见此博客https://blog.csdn.net/strangedbly/article/details/51137432 理解Nim博弈,基于Nim博弈理解SG函数的含义和作用. 学习求解SG ...
随机推荐
- UVa 10723 LCS变形 Cyborg Genes
题解转自: UVA 10723 Cyborg Genes - Staginner - 博客园 首先这个题目肯定是按最长公共子序列的形式进行dp的,因为只有保证消去的一部分是最长公共子序列才能保证最后生 ...
- 启动activity的标准的action常量及对应的字符串
- day04 装饰器 迭代器&生成器 Json & pickle 数据序列化 内置函数
回顾下上次的内容 转码过程: 先decode 为 Unicode(万国码 ) 然后encode 成需要的格式 3.0 默认是Unicode 不是UTF-8 所以不需要指定 如果非要转为U ...
- apache php 多站点配置 重新整理
需要下载的东东:apache_2.0.59-win32-x86-no_ssl.msi (服务器软件,用来编译PHP的) php-5.1.5-Win32.zip (PHP的主文件) 第一步:1.安装 ...
- web安全测试---跨站点脚本测试
1.1 跨站脚本测试 1.1.1 GET方式跨站脚本测试 编号 SEC_Web_XSS_01 测试用例名称 GET方式跨站脚本测试 测试目的 由于跨站脚本会导致会话被劫持.敏感 ...
- 【mysql 优化 1】优化概述
原文地址:Optimization Overview 数据库性能取决于几个数据库层面的因素,比如:表设计,查询语句,配置. 这些软件结构导致你必须在CPU和I/O 操作的硬件层面做到尽可能的最小化和高 ...
- npm link & run npm script
npm link & run npm script https://blog.csdn.net/juhaotian/article/details/78672390 npm link命令可以将 ...
- 用SVGDeveloper制作svg地图
项目中需要实现巴蜀地区图,并且将其分为川东.川西.川南.川北四个区域,鼠标悬浮对应区域的区块改变颜色.经过网上查询资料,并未找到现成的区域图,于是就利用SVGDeveloper工具绘制. 一.绘制地图 ...
- 微信小程序红包开发思路 微信红包小程序开发思路讲解
之前公司开发小程序红包,将自己在开发的过程中遇到的一些坑分享到了博客里.不少人看了以后,还是不明白怎么开发.也加了我微信咨询.所以今天,我就特意再写一篇文章,这次就不谈我开发中遇到的坑了.就主要给大家 ...
- python 粘包问题及解决方法
一粘包 TCP协议是面向对象的,面向流的,提高可靠性服务.使用了优化算法,Nagle算法.将多次间隔较少且数据量小的数据,合并成一个大的数据块,然后进行封包.这样接收端就很难分辨出来.TCP协议数据是 ...