选修了人工智能课程,老师布置了调研任务:Grundy,开始看了一些资料并没有看懂。

后来找到了一篇文,写的很棒,里面有好多博弈相关的问题与分析,分享出来给大家:

http://endless.logdown.com/posts/2014/05/05/find-out-the-winning-strategies-of-the-game-nim-and-grundy-number-notes

这个服务器可能是外国的?打开的很慢,不要认为自己的网炸了。。。哈哈哈

下面就贴一点自己为了做海报(Grundy相关的)所摘取的一些描述:(具体的还是看上面链接的原文吧~)

对于Grundy值的计算,对应Sprague-Grundy定理:游戏和的Grundy值等于各游戏Grundy值的异或和。
而一个游戏可以切分成若干个子游戏,对于每一个子游戏,我们都可以计算一个Grundy值,
此时对若干个游戏全部异或,就可以得到整体这个游戏的Grundy值。

这里我们理解为:如果两个玩家再进行博弈,那么每一个玩家在行动之后,局面都会增加一个,
我们把每一个局面视为一个游戏,那么整个游戏就可以视为若干个游戏的拆分,此时对每一步计算一个Grundy值,
然后进行异或处理。此时我们就可以将问题转化为Nim问题,而又根据1902年,L.Bouton的对于Nim游戏提出的定理:异或和值为零则后手胜,否则先手胜。
如果每个玩家都按照最优策略进行,那么最终的Grundy值为0,那么后手赢,否则先手赢。

所以,对于我们来说,SG函数与“游戏的和”的概念不是让我们去组合、制造稀奇古怪的游戏,
而是把遇到的看上去有些复杂的游戏试图分成若干个子游戏,对于每个比原游戏简化很多的子游戏找出它的SG函数,
然后全部异或起来就得到了原游戏的SG函数,就可以解决原游戏了。(引自百度百科SG函数)

具体问题可以poj的Cutting Game(http://poj.org/problem?id=2311)

题解也有很多,我是看了这位大神的:http://blog.csdn.net/mikasa3/article/details/51385538

博弈论:寻找先手必胜策略——Grundy值的更多相关文章

  1. Chomp游戏(必胜策略分析)

    游戏简介 Chomp是一个双人游戏,有m x n块曲奇饼排成一个矩形格状,称作棋盘. ----两个玩家轮流自选一块还剩下的曲奇饼,而且还要把它右边和下边所有的曲奇饼都取走(如果存在) ----先吃到左 ...

  2. poj 3537 Crosses and Crosses 博弈论之grundy值

    题意: 给1*n的格子,轮流在上面叉叉,最先画得3个连续叉叉的赢.问先手必胜还是必败. 分析: 求状态的grundy值(也就是sg值),详细怎么求详见代码.为什么这么求要自己想的,仅仅可意会(别人都说 ...

  3. hdu5795 A Simple Nim 求nim求法,打表找sg值规律 给定n堆石子,每堆有若干石子,两个人轮流操作,每次操作可以选择任意一堆取走任意个石子(不可以为空) 或者选择一堆,把它分成三堆,每堆不为空。求先手必胜,还是后手必胜。

    /** 题目:A Simple Nim 链接:http://acm.hdu.edu.cn/showproblem.php?pid=5795 题意:给定n堆石子,每堆有若干石子,两个人轮流操作,每次操作 ...

  4. 硬币游戏2&&Cutting Game——Grundy值

    Grundy值 当前状态的Grundy值就是除任意一步所能转移到的状态的Grundy值以外的最小非负整数, 以硬币问题一为例,可写成: int init_grundy() { sg[] = ; ;i ...

  5. Chomp类游戏——必胜策略分析

    首先介绍一个重要定理——策梅洛定理(Zermelo) 策梅洛定理,表明在二人参与的游戏/博弈中,如果满足: --------游戏的步骤数有限 --------信息完备(二人都了解游戏规则,了解游戏曾经 ...

  6. [dp+博弈]棋盘的必胜策略

    链接:https://ac.nowcoder.com/acm/problem/21797来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...

  7. [Leetcode 217&219]寻找数组中的重复值Contains Duplicate I & II

    [题目1] Given an array of integers, find if the array contains any duplicates. Your function should re ...

  8. Paper | 量化CV任务的关联性,寻找最佳迁移策略(Taskonomy)

    目录 1. 问题 2. 方法 3. 实验设计 3.1. 解决词典内部(一组已知)任务的能力 3.2. 解决新任务(少量标记数据)的能力 4. 讨论和启发 论文:Taskonomy: Disentang ...

  9. jquery 同id使用指针寻找具体每个id的值

    this来判断<script language="javascript"> function t(obj) { alert(obj.value); } </scr ...

随机推荐

  1. h5 实现定位

    直接上代码,代码使用了vue相关的语法 并且引入了dialog插件 ,使用时直接调用getLocation()方法就可以了! // 定位 function getLocation(){ console ...

  2. 20190403vim编辑器week1_day3

    vi编辑器 作用:编辑文本文件中的内容的工具 命令历史 末行模式中,以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 v ...

  3. 【一些容易忘记的node的npm命令】【收集】

    更新npm到最新版本 npm update -g npm 安装依赖包时命令的一些区别 npm install xxx -g //(全局安装) npm install xxx --save-dev // ...

  4. Vue基础进阶 之 过渡效果

    进入/离开过渡效果:Vue在插入.更新或移除DOM时,可以设置一些动画效果: 如何使用过渡效果:利用<transition></transition>组件将需要应用的过渡效果的 ...

  5. Architectural principles

    原文 "If builders built buildings the way programmers wrote programs, then the first woodpecker t ...

  6. loj#3 -Copycat

    原题链接:https://loj.ac/problem/3 题目描述: --- Copycat 内存限制:256 MiB 时间限制:1000 ms 输入文件: copycat.in 输出文件: cop ...

  7. ssm+redis整合之redis连接池注入

    package com.tp.soft.redis; import javax.annotation.Resource; import org.springframework.beans.factor ...

  8. 【Core】.NET Core 部署在Linux

    安装.NET  Core SDK 在CentOS上 1.右键打开命令行: 2.为了安装.NET,需要注册微软签名密钥和添加微软相关的支持.这个操作每台机器只能做一次. Add the dotnet p ...

  9. MVC 深入讲解Routing _路由规则【八】

    一.客户端=>控制器 在项目中我们引用了system.web.routing, 如果第一个匹配成功了,那么后面的都不会再匹配. 1. routing的作用: 确定colltroller,确定ac ...

  10. OpenGL.Tutorial16_ShadowMapping

    1. 2. In Tutorial 15 we learnt how to create lightmaps, which encompasses(包含) static lighting. While ...