zoukankan      html  css  js  c++  java
  • 博弈论基础

    具有胜败游戏的基础
    通过分析各个状态的胜败条件,判断必胜态和必败态,是具有胜败游戏的基础。

    首先判断最终状态的胜败(比如两人轮流取硬币,没有硬币可取的一方失败,则硬币数(x==0)为必败态)
    如果某个状态的后继状态中存在必败态,则这个状态为必胜态
    如果某个状态的后继状态全部为必胜态,则这个状态为必败态

    通常使用搜索或者动态规划遍历所有状态,判断每一个状态是必胜态还是必败态
    对称策略
    对称策略是一种常见的博弈策略,是指在游戏中做出对称状态后再完全模仿对手的策略
    如果轮到自己时可以将状态分成对称的两部分,那么不管对手怎么选取,自己只要采取同样的方法在对称的部分中选取,就可以重新回到两个相同部分的状态。这样可以使得自己取走最后一件物品,对手在下一回合因为没有物品可以选择而失败
    相关题目
    hdu1525 Euclid's Game
    给出两个自然数(a,b),两人轮流进行游戏,每次将大的数减去小的数的倍数,不能减到小于零,首先得到0的人获胜,判断谁会赢得游戏。

    (b>a),如果(a|b),则为必胜态,否则分成两种情况:
    (b-a<a)
    (b-a>a)
    对于第一种情况,由于此时进行游戏的人只能选择(b-a)的操作,也就是后继状态只有一种,所以如果((b-a,a))是必败态,则((a,b))是必胜态,如果((b-a,a))是必胜态,则((a,b))是必败态。
    对于第二种情况,由于(b-a>a),此时进行游戏的人可以选择的操作有(b-a,b-2a,b-3a,cdots,b-ka(kleq b/a))。设(b-xa<a(xgeq 2)),则如果((b-xa,a))为必败态,则((a,b))为必胜态。但是如果((b-xa,a))为必胜态,这时的最优策略是转移到((b-(x-1)a,a))的状态,因为((b-(x-1)a,a))的后继状态只有((b-xa,a)),此时((b-(x-1)a,a))为必败态,所以((a,b))为必胜态。
    所以第二种情况一定是必胜态。
    所以从初始状态开始模拟,最先达到情况(a|b)或者情况(b-a>a)的一方赢得游戏。
    hdu3951 Coin Game
    (n)枚硬币围成一个环,两人轮流取硬币,每一次可以取([1,k])范围内的连续的硬币,没有硬币可取的一方失败,两人都采取最优策略,判断谁会赢得游戏。

    先手第一次取过硬币之后,如果没有全部取完,则所有硬币会变成一条链,后手可以在链的中间根据奇偶性的情况取1枚或者2枚硬币,使得整条链分成完全相同的两部分,然后后手可以采取对称策略赢得比赛。
    所以当(nleq k)时,先手第一次可以取完所有硬币,先手赢得游戏,其他情况除了(k==1)之外,全部是后手采取对称策略赢得比赛,(k==1)的情况直接根据(n)的奇偶性判断。

  • 相关阅读:
    svn更改默认服务启动目录
    centos systemctl指令
    centos 安装mysql
    centos bad ELF interpreter: No such file or directory
    svn 设置post-commit后 报错svn: Can't convert string from 'UTF-8' to native encoding
    windows 下wamp环境3 安装php7
    windows 下wamp环境2 配置之mysql的安装
    windows 下wamp环境1 配置之apache的安装
    IE8 margin: auto 无法居中
    memcache安装
  • 原文地址:https://www.cnblogs.com/fxq1304/p/13398075.html
Copyright © 2011-2022 走看看