<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>阅微堂 &#187; 硬币游戏</title>
	<atom:link href="http://zhiqiang.org/blog/tag/%e7%a1%ac%e5%b8%81%e6%b8%b8%e6%88%8f/feed" rel="self" type="application/rss+xml" />
	<link>http://zhiqiang.org/blog</link>
	<description>zhiqiang&#039;s personal blog</description>
	<lastBuildDate>Wed, 08 Sep 2010 04:07:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>硬币游戏的答案</title>
		<link>http://zhiqiang.org/blog/science/rotate-coin-game-solution.html</link>
		<comments>http://zhiqiang.org/blog/science/rotate-coin-game-solution.html#comments</comments>
		<pubDate>Wed, 30 Jul 2008 06:49:40 +0000</pubDate>
		<dc:creator>zhiqiang</dc:creator>
				<category><![CDATA[自然科学]]></category>
		<category><![CDATA[硬币游戏]]></category>
		<category><![CDATA[策略]]></category>

		<guid isPermaLink="false">http://zhiqiang.org/blog/posts/rotate-coin-game-solution.html</guid>
		<description><![CDATA[前两天贴出了一个硬币游戏，希望寻找一种胜利策略。这是一个非常有意思的题目，没事做的时候可以用来锻炼思考能力。我迫不及待的想在这里公布解答，因为我已经把它解决掉了。如果有人还想继续享受思考的乐趣，请飘至原问题。

的简单情形，
Tony Liu和overwindows已经给出了正确答案：

第一步：任一对角线翻转  
第二步：任一条边翻转  
第三步：任一对角线翻转  
第四...]]></description>
			<content:encoded><![CDATA[<p>前两天贴出了一个<a href="http://zhiqiang.org/blog/posts/rotate-coin-games.html" target="_blank">硬币游戏</a>，希望寻找一种胜利策略。这是一个非常有意思的题目，没事做的时候可以用来锻炼思考能力。我迫不及待的想在这里公布解答，因为我已经把它解决掉了。如果有人还想继续享受思考的乐趣，请飘至<a href="http://zhiqiang.org/blog/posts/rotate-coin-games.html" target="_blank">原问题</a>。</p>
<hr />
<h3><img src="http://zhiqiang.org/blog/wp-content/cache/tex_aa415f33717e0cf5151a7712cb4f2f59.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="n=4" />的简单情形，</h3>
<p>Tony Liu和overwindows已经给出了正确答案：</p>
<ul>
<li>第一步：任一对角线翻转  </li>
<li>第二步：任一条边翻转  </li>
<li>第三步：任一对角线翻转  </li>
<li>第四步：任一个硬币翻转  </li>
<li>第五步：任一对角线翻转</li>
<li>第六步：任一条边翻转  </li>
<li>第七步：任一对角线翻转&nbsp; </li>
</ul>
<p>这个策略分成两部分，前三步和后三部。前三步处理棋盘上有偶数颗正面朝上的硬币的情况。第四步把奇数颗正面朝上的情况转化成偶数颗正面朝上的硬币，然后重复使用前三步的策略即可。</p>
<h3>这个策略可以直接推广到<img src="http://zhiqiang.org/blog/wp-content/cache/tex_c3c3e6ce3c678cffd371a72914c92046.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="n=2^k" />的情形：</h3>
<p>在给出策略前，先定义硬币状态为0如果正面朝上，为1若正面朝下。若干个状态的XOR和指状态的和除以2的余数。两个硬币对称是指两个硬币处于正多边形棋盘的直径上（此时<img src="http://zhiqiang.org/blog/wp-content/cache/tex_7b8b965ad4bca0e41ab51de7b31363a1.png" style="vertical-align:middle; padding-bottom:2px;" class="tex" alt="n" />为偶数）。</p>
<p>假设<img src="http://zhiqiang.org/blog/wp-content/cache/tex_0ba690e686cb82bf033947a9dbb295fc.png" style="vertical-align:middle; " class="tex" alt="S(k)" />为<img src="http://zhiqiang.org/blog/wp-content/cache/tex_c3c3e6ce3c678cffd371a72914c92046.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="n=2^k" />时的策略。我们来递归构造策略<img src="http://zhiqiang.org/blog/wp-content/cache/tex_0ba690e686cb82bf033947a9dbb295fc.png" style="vertical-align:middle; " class="tex" alt="S(k)" />：</p>
<p>(i). 如果棋盘上任何对称的硬币方向都相同，则将对角的硬币看成一个整体（同时操作）之后，<img src="http://zhiqiang.org/blog/wp-content/cache/tex_fe401f62231ac24e3399751a415a4eaa.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="2^k" />枚硬币转化成<img src="http://zhiqiang.org/blog/wp-content/cache/tex_14464ac1dfe6fa8ad8fda94bb6f01571.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="k-1" />的情形，调用 <img src="http://zhiqiang.org/blog/wp-content/cache/tex_548468feea087523f774054e96e63a70.png" style="vertical-align:middle; " class="tex" alt="S(k-1)" />即可让所有硬币方向相同。此策略记为<img src="http://zhiqiang.org/blog/wp-content/cache/tex_4fa71d007c094ac3c858919aec515277.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="C_1" />。</p>
<p>(ii). 如果棋盘上任何对称的硬币方向都相同或者同时都相反，类似(i)，先调用<img src="http://zhiqiang.org/blog/wp-content/cache/tex_4fa71d007c094ac3c858919aec515277.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="C_1" />，若硬币方向都相同，则已经解决了问题。若否，注意到调用<img src="http://zhiqiang.org/blog/wp-content/cache/tex_4fa71d007c094ac3c858919aec515277.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="C_1" />的过程只会同时改变对称的两个硬币的朝向，这样调用<img src="http://zhiqiang.org/blog/wp-content/cache/tex_4fa71d007c094ac3c858919aec515277.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="C_1" />之后还是满足任何对称的硬币方向都相反，这时候，翻转连续的<img src="http://zhiqiang.org/blog/wp-content/cache/tex_cb4e13beaac7aea4551bb2c115f477fe.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="2^{k-1}" />个硬币，从而可以转化成(i)的情况。所以，策略<img src="http://zhiqiang.org/blog/wp-content/cache/tex_9e22e8e594c6eae6b9d247fa0df48563.png" style="vertical-align:middle; " class="tex" alt="C_2=(C_1, F(2^{k-1}), C_1)" />可以解决任何对称的硬币方向相同或者相反的情况。其中<img src="http://zhiqiang.org/blog/wp-content/cache/tex_b94c532197be090968d7aeb5e4e488e0.png" style="vertical-align:middle; " class="tex" alt="F(2^{k-1})" />表示翻转连续的<img src="http://zhiqiang.org/blog/wp-content/cache/tex_cb4e13beaac7aea4551bb2c115f477fe.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="2^{k-1}" />个硬币。</p>
<p>(iii). 接下来主要是把问题转化为(ii)中的情况。这时候只需要对某连续<img src="http://zhiqiang.org/blog/wp-content/cache/tex_cb4e13beaac7aea4551bb2c115f477fe.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="2^{k-1}" />枚硬币调用<img src="http://zhiqiang.org/blog/wp-content/cache/tex_548468feea087523f774054e96e63a70.png" style="vertical-align:middle; " class="tex" alt="S(k-1)" />即可。这是因为如果我们把对称的硬币看成一个整体的话，则这次<img src="http://zhiqiang.org/blog/wp-content/cache/tex_548468feea087523f774054e96e63a70.png" style="vertical-align:middle; " class="tex" alt="S(k-1)" />的每次操作都只作用于任何对称的硬币的其中一枚上。这样，如果我们考虑对称硬币状态的XOR和的话，<img src="http://zhiqiang.org/blog/wp-content/cache/tex_548468feea087523f774054e96e63a70.png" style="vertical-align:middle; " class="tex" alt="S(k-1)" />的过程中会出现所有对称的硬币方向都相同或者都相反的情形，也就是(ii)中的情况。由于我们不知道这个状态在什么时候出现，所以在这个<img src="http://zhiqiang.org/blog/wp-content/cache/tex_548468feea087523f774054e96e63a70.png" style="vertical-align:middle; " class="tex" alt="S(k-1)" />的每一步后，都需要执行一次<img src="http://zhiqiang.org/blog/wp-content/cache/tex_f0350e5818b058dbcfd95f155e417f6a.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="C_2" />操作。另外要注意的是，<img src="http://zhiqiang.org/blog/wp-content/cache/tex_f0350e5818b058dbcfd95f155e417f6a.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="C_2" />的操作不会影响外围的<img src="http://zhiqiang.org/blog/wp-content/cache/tex_548468feea087523f774054e96e63a70.png" style="vertical-align:middle; " class="tex" alt="S(k-1)" />操作。</p>
<p>注：此策略的最优性未知。</p>
<h3><img src="http://zhiqiang.org/blog/wp-content/cache/tex_7b8b965ad4bca0e41ab51de7b31363a1.png" style="vertical-align:middle; padding-bottom:2px;" class="tex" alt="n" />不是2的幂次时Alice没有必胜策略</h3>
<p>考虑Alice的最后一步，如果Alice总是能够在最后一步或之前使所有硬币方向一样，假设她的最后一步是必要的（存在一种情况在最后一步才达到方向一致），假设Alice最后一步翻转的硬币是集合<img src="http://zhiqiang.org/blog/wp-content/cache/tex_b9ece18c950afbfa6b0fdbfa4ff731d3.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="T" />，翻转后使得所有硬币都朝上或者朝下。由于Bob可以将棋盘任何旋转若干个位置，这说明对任何的旋转角度<img src="http://zhiqiang.org/blog/wp-content/cache/tex_50b5c1f260f60a2886ec28b65dd3bcee.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="i=1,2,\cdots,n" />，均有<img src="http://zhiqiang.org/blog/wp-content/cache/tex_eeae2992b3117d8a360c7b0e9dced222.png" style="vertical-align:middle; " class="tex" alt="T+i=T\ or\ \bar{T}" />，其中集合<img src="http://zhiqiang.org/blog/wp-content/cache/tex_709b262b4b4978e77eb973630ad143f5.png" style="vertical-align:middle; " class="tex" alt="T+i=\{t+i\mod n:t\in T\}" />。这只可能在<img src="http://zhiqiang.org/blog/wp-content/cache/tex_7b8b965ad4bca0e41ab51de7b31363a1.png" style="vertical-align:middle; padding-bottom:2px;" class="tex" alt="n" />为偶数并且<img src="http://zhiqiang.org/blog/wp-content/cache/tex_b9ece18c950afbfa6b0fdbfa4ff731d3.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="T" />为所有奇数位置或者所有偶数位置才可能达得到。</p>
<p>而若<img src="http://zhiqiang.org/blog/wp-content/cache/tex_cfb0daa3d2b31c022f31d34e7b3a8ff3.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="n=2^\alpha\beta" />并且<img src="http://zhiqiang.org/blog/wp-content/cache/tex_b0603860fcffe94e5b8eec59ed813421.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="\beta" />为大于1的奇数。这时候我们将所有硬币分为连续的<img src="http://zhiqiang.org/blog/wp-content/cache/tex_b0603860fcffe94e5b8eec59ed813421.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="\beta" />组，每组由连续的<img src="http://zhiqiang.org/blog/wp-content/cache/tex_fa3c1bef4b0809bbf1ff0db8e80d3198.png" style="vertical-align:middle; padding-bottom:1px;" class="tex" alt="2^\alpha" />枚硬币构成。每组的状态(0或者1)是组内所有硬币状态的XOR和。如果Alice存在一个获胜的策略，那么在分组后的游戏中，Alice也应该总是能获得胜利。但如上一段所指出的，在奇数组的游戏中，Alice不可能获胜。从而导致了一个矛盾。</p>
<div><h2>相关文章</h2><ul><li><a href="http://zhiqiang.org/blog/science/37-rule-is-optimal.html">37-rule-is-optimal</a> <small>Theorem: Any protocol of date problem has success probability less than \(\frac{u}{n}\sum\limits_{i=u}^{n-1}\frac1i\) which is about \(37\%\). Here \(u\) is the biggest number such that \(\sum_{i=u}^...</small></li><li><a href="http://zhiqiang.org/blog/science/game-one-hat.html">帽子游戏一</a> <small>在这个游戏的开头，我们设想自己要参加一个电视游戏大奖赛。规则呢，是这样。我们有 n 个人，作为一个小组来参加游戏。游戏中，主持人会给我们...</small></li><li><a href="http://zhiqiang.org/blog/science/game-two-hats.html">帽子游戏二</a> <small>这个题目听说是MSRA的面试题。

在这个游戏的开头，我们设想自己要参加一个电视游戏大奖赛。规则呢，是这样。我们有 n 个人，作为一个小组来参...</small></li><li><a href="http://zhiqiang.org/blog/science/strategy-games-doctors-and-patients-i.html">策略游戏：医生和病人（I）</a> <small>我很早之前就想过这个问题，但一直只知道一个trivial的答案。前两天无意中发现网上已经有高手给出了更好的方案，故记录在此。有兴趣的可以自己想...</small></li><li><a href="http://zhiqiang.org/blog/science/how-n-people-divide-a-cake-fairly.html">征集3个人分蛋糕的方法</a> <small> Yao在课程《理论计算机II》的第一节课上提到的一个问题：  三个人如何平分一块蛋糕？ 要求每个人拿到不少于1/3的蛋糕——这里指的是每个人认为自...</small></li><li><a href="http://zhiqiang.org/blog/science/how-to-oil-airplain.html">飞机加油问题</a> <small>珍爱生命，远离政治。今天我们讨论一个数学问题。  这个问题的一个基本版本是说，有N架完全相同的飞机停留在一个机场，每一架最多装的油可以支...</small></li><li><a href="http://zhiqiang.org/blog/science/rotate-coin-games.html">硬币游戏</a> <small>Alice和Bob两人玩一种硬币游戏。游戏在一个$$2\times2$$的棋盘上进行，棋盘上每个格子上都有一枚硬币。在每一回合，Alice可以决定选择翻转某两枚或者一...</small></li><li><a href="http://zhiqiang.org/blog/science/tcs-classroom-notes-the-best-dating-strategy.html">最佳约会策略</a> <small>题外话：最近阅微堂发的都是网友转发的政治方面的文章，不爱看的人会比较痛苦。现在讨论一个轻松一点的话题。其问题，已经被研究了很多年，有...</small></li><li><a href="http://zhiqiang.org/blog/science/computer-science/boxes-problem-on-static-data-structure-problems.html">摸箱子问题以及在Static data structure problems上的应用</a> <small>以前提到过，理论计算机这门课会邀请一些正在这边访问的教授来讲课，由于是本科生，所以这些教授一般都是讲些有趣的东西，比如之前的overhang 堆...</small></li></ul></div>    <p></p>
    <hr noshade style="margin:0;height:1px" />
    <p>&copy; zhiqiang for <a href="http://zhiqiang.org/blog">阅微堂</a>, 2008. | <a href="http://zhiqiang.org/blog/science/rotate-coin-game-solution.html">&#38142;&#25509;</a> | <a href="http://zhiqiang.org/blog/science/rotate-coin-game-solution.html#comments">11 &#26465;&#35780;&#35770;</a></p>]]></content:encoded>
			<wfw:commentRss>http://zhiqiang.org/blog/science/rotate-coin-game-solution.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
