有点散乱, 将就着看吧.

首先是博弈论的基础, 即 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函数学习总结的更多相关文章

  1. SG函数学习

    尼姆博弈就是sg函数的简单体现 学习粗:https://blog.csdn.net/luomingjun12315/article/details/45555495 //f[N]:可改变当前状态的方式 ...

  2. SG 函数学习

    \(Mex\) 运算 \(mex(S)\) 为不属于集合 \(S\) 的最小非负整数,即: \[mex(S)=\min \limits_{x \in \mathbb{N},x \not\in S} \ ...

  3. 学习笔记--博弈组合-SG函数

    fye学姐的测试唯一的水题.... SG函数是一种游戏图每个节点的评估函数 具体定义为: mex(minimal excludant)是定义在整数集合上的操作.它的自变量是任意整数集合,函数值是不属于 ...

  4. HDU 1536 sg函数

    S-Nim Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  5. hdu-------(1848)Fibonacci again and again(sg函数版的尼姆博弈)

    Fibonacci again and again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  6. 【转】博弈问题及SG函数(真的很经典)

    博弈问题若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多.(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要 ...

  7. (转)博弈问题与SG函数

    博弈问题若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多.(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要 ...

  8. 博弈论进阶之SG函数

    SG函数 个人理解:SG函数是人们在研究博弈论的道路上迈出的重要一步,它把许多杂乱无章的博弈游戏通过某种规则结合在了一起,使得一类普遍的博弈问题得到了解决. 从SG函数开始,我们不再是单纯的同过找规律 ...

  9. 博弈论初步(SG函数)

    讲解见此博客https://blog.csdn.net/strangedbly/article/details/51137432 理解Nim博弈,基于Nim博弈理解SG函数的含义和作用. 学习求解SG ...

随机推荐

  1. F查询与Q查询

    F查询 如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的比较.F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段的值. # 查询评论 ...

  2. python基础学习笔记——列表及元组

    列表 列表的介绍  列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. 列表的索引和切片 列表和字符串一样也拥有索引: lst = ['刘德华','周润发','周杰伦','向华强 ...

  3. delphi xe7 多线程调用CMD,使用管道,临界区技术,实现指定用户名,多线程,异步返回CMD命令结果到memo

    第一次发这个,发现格式很乱,不好看,可以用XE7的project--format project sources命令格式化一下代码. 后面我会上传此次修改函数用的源代码到云盘 链接: http://p ...

  4. Huawei比赛数据分析

    如何评价2018年华为软件精英挑战赛赛题? https://www.zhihu.com/question/268448695 1.时间与时间戳之间的转换 https://blog.csdn.net/g ...

  5. dubbo rpc filter实现剖析(二)

    2.6.3版本,之前读的是2.4.9版本 本篇主要阐述dubbo rpc的filter的实现,包括作用,用法,原理,与Spring Cloud在这些能力的对比. 整个filter列表的获取过程在 co ...

  6. Sonar - 部署常见问题及解决方法

    1. sonarqube启动报错,查看es.log如下: 问题原因:sonarqube不能使用root用户启动 解决方法: (1)更改sonarqube所属用户权限 chown -R gold:gol ...

  7. postgres 用户管理

    首次安装完成 pg 数据库后,会默认自带一个用户, 用户名: postgres 密码: postgres 可以使用命令 \du 查看数据库用户 创建新用户: create user dev with ...

  8. Goal Oriented Action Planning for a Smarter AI

    Goal Oriented Action Planning for a Smarter AI by Brent Owens23 Apr 2014 Goal Oriented Action Planni ...

  9. Python3 的异常处理

    Python3 的异常处理,在官方文档的 tutorial 中有说明. 这里把常用的异常处理方法都列出来,方便平时查找. 捕获异常基类 Python3 要求我们的异常必须继承 Exception 类. ...

  10. Python 数据库到处到Excel

    import MySQLdb import xlwt def outMySQL(file_name): wb = xlwt.Workbook() sh = wb.add_sheet('sheet 1' ...