zoukankan      html  css  js  c++  java
  • 博弈论:寻找先手必胜策略——Grundy值

    选修了人工智能课程,老师布置了调研任务: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

  • 相关阅读:
    zabbix 对/etc/ssh/sshd_config文件的监控 但status为unknowen
    Kotlin从零到精通Android开发
    谷歌官方 构建您的第一个应用 Kotlin版
    android studio 运行按钮为灰色的解决办法之一
    webapi发布到windows 2012的iis8里 出错
    Asp.net MVC WebApi项目的自动接口文档及测试功能打开方法
    Asp.net Web Api开发(第四篇)Help Page配置和扩展
    关于SNMP的MIB文件的语法简述
    Visual Stdio 2017增加SVN支持
    ffmpeg 多个音频合并 截取 拆分
  • 原文地址:https://www.cnblogs.com/icyhusky/p/6906352.html
Copyright © 2011-2022 走看看