算法合集之《解析类组合游戏》.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法合集之《解析类组合游戏》

组合游戏的简单分析 —四川省绵阳南山中学 王晓珂 【关键字】 组合游戏 游戏的和 nim和 Sprague-Grundy函数 【摘要】 本文的主要内容是分析组合游戏的方法。 在介绍这些方法之前,会先介绍相关的概念 对于每一种方法,本文附有相应的例题帮助理解。 【组合游戏与相关的概念】 1.组合游戏 游戏是一个常见的概念,通常它是指娱乐性质的游戏。不过它也可以有一些其它的内涵比如竞争、寻找最优,像商业竞争、外交谈判就是这样的意义下的游戏,尽管不那么有趣、不过战争也可以算作是游戏。 在OI中有许多题目从游戏中提出问题。Alice  Bob 就因此出了名。在这些游戏中组合游戏占了很大一部分,组合游戏其实对我们来说并不陌生,它是是满足这样一些条件的游戏: 游戏有2名参与者。 游戏过程中任意时刻有确定的状态。 参与者操作时可以的操作时将游戏从当前状态改变为另一状态,规则规定了在任意一状态时,可以到达的状态集合。 参与者轮流进行操作。 在游戏出于某状态,当前参与者不能进行操作时,游戏结束。此时参照规则决定胜负。 无论参与者做出怎样的操作游戏在有限部数之内结束(没有平局)。 参与者拥有游戏本身,和游戏过程的所有信息,比如规则、以前自己和对手的操作。 本文讨论的组合游戏还有一个公平性的限制、即2名参与者的操作规则 是相同的。 组合游戏也可以用一个有向图来表示 G=(X,F)X为游戏的状态集合F(X)为X可以到达的状态集合,而结束状态均宣布当前参与者失败。 如果原游戏的结束状态为胜利,那么有必要将图改一下适应题目规则。   组合游戏必然是一个无环图(无平局)。 2.必胜、必败状态 在组合游戏中必胜状态定义为当前玩家有策略能使无论对手做什么操作也可以保证自己胜利的状态。相反,如果之前操作的玩家能够保证胜利、则它是必败的状态 在组合游戏中一个状态如果不是必败状态就是必胜状态,这是显而易见的。通常我们分析做和游戏的目的就是判断一个状态为必胜还是必败,如果必胜,则找出必胜策略。完成这一点仅凭以上定义是不够的,而以下的性质(可以用来判定一组划分是否为必败状态与必胜状态的划分)则明确的指出了一种递推的方法。 结束状态的性质由规则决定。 一个非结束状态,如果它能到达任何必败状态,那么它是必胜状态,否则它就是必败状态。 尽管这对每个组合游戏都适用,但它可不是万能的,有时一个游戏的状 态非常多,计算机无法处理,这时你就得借用别的方法了。 3.Sprague-Grundy 函数 它是定义在组合游戏状态上的函数,用g (X)表示X状态的函数值。它的定如下: g (X)= min{n| n∈N ,n≠ for y∈F(x)} 游戏就是这样的典型。 G=(X ,F)G1+ G2+ … … Gn.其中Gi =(Xi ,Fi)是一个简单的组合游戏。则 X=X1 * X2 * X3 *……Xn 对于X= (X1,X2,X3……Xn) F(X)= F(X1,X2,X3……Xn)=   F1(X1) *{X2}*{X3}* … …{Xn}∪   {X1}* F2(X2) *{X3}* … …{Xn}∪    … …   {X1}*{X2}*{X3}* … … F3(Xn) 对于G=G+G2+ … … Gn G(X1,X2,… …X) =G1(X1)  G(X2) … …G(Xn) 证明: XOR运算有一些重要的运算性质与加法相似,这里做一下必要的介绍(用符号 xor 表示): a xor b=c,的二进制形式的第位是,二进制形式该位置上的值队2取余的结果。 xor 的运算率有结合率,交换率。除此以外,若 xor b=c则 xor d=c当且仅当=c; xor a = 0; xor 0 = a; 令=G1(X1) xor … … Gn(Xn),则只需证明于任意∈ N且存在X’∈F(X)使G(X’)。 对于任意X’∈F(X) ,G(X’) ≠ b。 证明1)令=a xor b,令的二进制位数为。必然存在使G(Xi)的二进制第k位为1。显然G(Xi) xor d Gi (Xi) ,因此存在X’∈ Fi (Xi) 使G(Xi’) =Gi(Xi) xor d 。 *d = a = a = G1 (X1) xor … …Gi (Xi) xor d … …Gn (Xn)= G(X1… … Xi’,… …,X) 因为 (X1… …X'… …X)∈F(X) 。所以 1) 得证。证明2):假设2)不成立,即对于一个任意的X存在X'∈F(X)使G(X')=b。那么令X’=(X1,… …,X’,… …,X),G(X’)=G(X1) xor … …Gi(Xi’)… …Gn(Xn)=b。因此G(Xi’)=Gi(Xi)与函数的定义矛盾,2)得证。g (i,j) = g (i)

文档评论(0)

linjuanrong + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档