- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
取石子游戲的策略
取石子游戏的策略
效实中学 黄志琦
有n堆石子,各堆石子数为a1、a2、…、an,甲乙两人轮流取石子,规则如下:每次只能从不多于K堆的石子中取,每堆中所取的石子数不多于m,取到全部石子的最后一枚者为胜。问谁有必胜策略?
这个问题的通解没有得到,但如K=1或者m +,都是容易处理的。
先考虑m + 且K=1的简单情形,即每次只从一堆中取,所取石子数不限,把a1、a2…,an写成二进制数
a1=b11b12b13…b1s b11 b12 … b1s
a2=b21b22b23…b2s b21 b22 … b2s
… … … … …
an=bn1bn2bn3…bns bn1 bn2 … bns
(位数少于s位前面补上若干个0)
这个n×s矩阵中每个元素取0或1。每取一次石子,相当于矩阵某一行实施变换,变换规则是把某个“1”变成“0”,这个“1”左边的数字均不变动,右边的数字允许任意变动(即任意赋于0或1的值),这相当于把某个二进制数变小。
谁把矩阵变成0矩阵,谁就赢了。
当矩阵每列中都有偶数个“1”,就把这个矩阵称为“好矩阵”。我们来证明:当石子数构造出的矩阵是“好矩阵”时,后取者乙有必胜策略,否则先取者甲有必胜的策略。
证:设一开始矩阵为“好矩阵”,那么,甲取了一次以后,必定使某行至少改变了一个数字,这个数字所在的一列“1”的个数就不是偶数了,得到的矩阵就不是“好矩阵”,即好矩阵操作一次后必定变成不是好的矩阵,我们称之为“破坏”了好矩阵,现在轮到乙取,乙只要把甲“破坏”的矩阵重新“修复”为“好矩阵”就可以了。
设任意某个不是“好矩阵”的矩阵 b11 b12 … b1s
b21 b22 … b2s
… … … …
bn1 bn2 … bns
因为它必有某一列有奇数个“1”,设使第j列有奇数个1的最小j为j。
即b1j0,b2j0,…,bnj0中有奇数个1,从中任取一个“1”,不妨设b1j0=1
现在乙就对第一行实施变换,把b1j0变成0,对kj,把b1k变成
这样乙就又把不好的矩阵修复成了“好矩阵”。
于是甲、乙两人轮流破坏,修复“好矩阵”,因为0矩阵是“好矩阵,所以最后一定是乙把矩阵变成0矩阵而获胜。
设一开始的矩阵不是“好矩阵”,先取甲就有必胜策略,他只要把一开始的矩阵修复为“好矩阵”,然后乙破坏,甲修复,最终甲获胜。
下面考虑K1,m +的情形,类似地:
把石子数写成二进制数,构造出一个0,1矩阵。
若“石子矩阵”中的每一列的和(即列和)为(K+1)的倍数,把这个矩阵称为“好矩阵”。现在规则是:允许对不多于K行的数字进行前述的变换,把矩阵变成0矩阵的人就是赢家。结论同样是:若一开始的矩阵为“好矩阵”,则后取者乙必胜;若一开始的矩阵不是好矩阵,则先取者甲有必胜策略。
由于每一次操作后,至多有K行被变换,那么每一列的“1”的个数至多增加或减少了K个,若要使操作一次后的矩阵仍是好矩阵(即每一列“1”的个数仍是K+1的倍数),那么每一列1的个数都不能改变。这说明,所有数的和经操作后不变。这实际上不可能,因为操作一次后石子总数一定会减少。所以,操作一次一定会破坏“好矩阵”。
只要再证明,任意被破坏的好矩阵都一定能经一次操作后修复。设某个不是好矩阵的0、1矩阵 b11 b12 … b1s ,设j。是使第j列的和不是K+1的倍数的
b21 b22 … b2s
… … … …
bn1 bn2 … bns
最小j,设第j0列的元素和除以K+1的余数为r0, 从第j0列任取r0个“1”,不妨设b1j0=b2j0=…=br0j0=1,现对这r0行实施变换,把b1j0,b2j0,…,br0j0均变成0,对kj0,1
文档评论(0)