﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-煙雨默嘫-随笔分类-博弈</title><link>http://www.cppblog.com/yp0408100207/category/18769.html</link><description>没有伞的孩子，必须努力奔跑！</description><language>zh-cn</language><lastBuildDate>Thu, 08 Mar 2012 05:44:17 GMT</lastBuildDate><pubDate>Thu, 08 Mar 2012 05:44:17 GMT</pubDate><ttl>60</ttl><item><title>组合博弈入门</title><link>http://www.cppblog.com/yp0408100207/archive/2012/03/07/167335.html</link><dc:creator>煙雨默嘫</dc:creator><author>煙雨默嘫</author><pubDate>Wed, 07 Mar 2012 10:29:00 GMT</pubDate><guid>http://www.cppblog.com/yp0408100207/archive/2012/03/07/167335.html</guid><wfw:comment>http://www.cppblog.com/yp0408100207/comments/167335.html</wfw:comment><comments>http://www.cppblog.com/yp0408100207/archive/2012/03/07/167335.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yp0408100207/comments/commentRss/167335.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yp0408100207/services/trackbacks/167335.html</trackback:ping><description><![CDATA[<div>
				<div v:shape="_x0000_s1026">
						<div>
								<span style="font-family:Garamond;font-size:178%; text-shadow:auto">
										<span style="color: #ffcc00; position: absolute; left: -5.06%; top: 0.39em; font-family: Wingdings; font-size: 70%; ">n</span>
								</span>
								<div>
										<div>
										</div>
										<div>一、巴什博奕（Bash Game）<br /><div><div>有两堆各若干个物品，两个人轮流从某一堆或同时从两堆中取同样多的物品，规定每次至少取一个，多者不限，最后取光者得胜。</div></div><div><div>思想：n=（m+1）r+s，（r为任意自然数，s&#8804;m)，那么先取者如何先取s个必胜。什么时候情况特殊？<br /><br /><br />二、.威佐夫博奕（Wythoff Game）<br /><div>有两堆各若干个物品，两个人轮流从某一堆或同时从两堆中取同样多的物品，规定每次至少取一个，多者不限，最后取光者得胜。<br /><div><div>这种情况下是颇为复杂的。我们用（ak，bk）（ak &#8804; bk ,k=0，1，2，&#8230;,n)表示两堆物品的数量并称其为局势，如果甲面对（0，0），那么甲已经输了，这种局势我们称为奇异局势。前几个奇异局势是：（0，0）、（1，2）、（3，5）、（4，7）、（6，10）、（8，13）、（9，15）、（11，18）、（12，20）。。可以看出,a0=b0=0,ak是未在前面出现过的最小自然数,而 bk= ak + k<br /><div><div>奇异局势有如下三条性质：</div><div>&nbsp; &nbsp; &nbsp;1、任何自然数都包含在一个且仅有一个奇异局势中。 由于ak是未在前面出现过的最小自然数，所以有ak &gt; ak-1 ，而 bk= ak + k &gt; ak-1 + k-1 = bk-1 &gt; ak-1 。所以性质1。成立。</div><div>&nbsp; &nbsp; 2、任意操作都可将奇异局势变为非奇异局势。</div><div>&nbsp; &nbsp; 3、采用适当的方法，可以将非奇异局势变为奇异局势。<br /><div><div>&nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp;假设面对的局势是（a,b），若 b = a，则同时从两堆中取走 a 个物体，就变为了奇异局势（0，0）；如果a = ak ，b &gt; bk，那么，取走b &nbsp;&#8211; bk个物体，即变为奇异局势；如果 a = ak ， &nbsp;b &lt; bk ,则同时从两堆中拿走 ak &#8211; a[b &#8211; ak]）个物体,变为奇异局势（ a[b &#8211; ak] , a[b &#8211; ak]+ b &#8211; ak）；如果a &gt; ak ，b= ak + k,则从第一堆中拿走多余的数量a &#8211; ak 即可；如果a &lt; ak ，b= ak + k,分两种情况，第一种，a=aj （j &lt; k）,从第二堆里面拿走 b &#8211; bj 即可；第二种，a=bj （j &lt; k）,从第二堆里面拿走 b &#8211; aj 即可。</div></div><div></div></div></div>三、尼姆博奕（Nimm Game）</div></div><div><div><div>有三堆各若干个物品，两个人轮流从某一堆取任意多的物品，规定每次至少取一个，多者不限，最后取光者得胜。</div><div>思考：各个数之间二进制异或非零必胜</div></div></div><div><br /><br />概念:必败点和必胜点(P点 &amp; N点)<br /><div><div>必败点(P点) :前一个选手(Previous player)将取胜的位置称为必败点。通俗说就是先手必败点。&nbsp;</div><div>必胜点(N点) :下一个选手(Next player)将取胜的位置称为必胜点。&nbsp;</div></div><div><div><br />必败(必胜)点属性</div></div></div><div><div>(1) 所有终结点是必败点（P点）；</div><div>(2) 从任何必胜点（N点）操作，至少有一种方法可以进入必败点（P点）；</div><div>(3)无论如何操作， 从必败点（P点）都只能进入必胜点（N点）.</div></div><br /><div>SG函数基础<br /><div><div>首先定义mex(minimal excludant)运算，这是施加于一个集合的运算，表示最小的不属于这个集合的非负整数。例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。</div><div>对于一个给定的有向无环图，定义关于图的每个顶点的Sprague-Garundy函数g如下：g(x)=mex{ g(y) | y是x的后继 }。</div></div></div>SG的性质<br /><div><div>所有的terminal position所对应的顶点，也就是没有出边的顶点，其SG值为0，因为它的后继集合是空集。然后对于一个g(x)=0的顶点x，它的所有后继y都满足g(y)!=0。对于一个g(x)!=0的顶点，必定存在一个后继y满足g(y)=0。</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;那么当g(x)=0时的点其实就是必败点，否则为必胜点。</div></div><div></div></div></div></div></div>
								</div>
						</div>
						<div>
						</div>
				</div>
		</div><img src ="http://www.cppblog.com/yp0408100207/aggbug/167335.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yp0408100207/" target="_blank">煙雨默嘫</a> 2012-03-07 18:29 <a href="http://www.cppblog.com/yp0408100207/archive/2012/03/07/167335.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>