取石子问题
取石子游戏完全揭秘
取石子游戏完全揭秘由感性认识到理性认识一、游戏 (2)二、从简单入手 (2)三、类比与联想 (6)四、证明 (8)五、推广 (11)六、精华 (12)七、结论 (16)八、总结 (17)一、游戏游戏A:甲乙两人面对若干堆石子,其中每一堆石子的数目可以任意确定。
例如图1所示的初始局面:共n=3堆,其中第一堆的石子数a1=3,第二堆石子数a2=3,第三堆石子数a3=1。
两人轮流按下列规则取走一些石子,游戏的规则如下:每一步应取走至少一枚石子;每一步只能从某一堆中取走部分或全部石子;如果谁无法按规则取子,谁就是输家。
图 1 游戏的一个初始局面游戏B:甲乙双方事先约定一个数m,并且每次取石子的数目不能超过m 个;其余规则同游戏A。
我们关心的是,对于一个初始局面,究竟是先行者(甲)有必胜策略,还是后行者(乙)有必胜策略。
下面,我们从简单入手,先来研究研究这个游戏的一些性质。
二、从简单入手用一个n元组(a1, a2, …, a n),来描述游戏过程中的一个局面。
可以用3元组(3, 3, 1)来描述图1所示的局面。
改变这个n元组中数的顺序,仍然代表同一个局面。
(3, 3, 1)和(1, 3, 3),可以看作是同一个局面。
如果初始局面只有一堆石子,则甲有必胜策略。
甲可以一次把这一堆石子全部取完,这样乙就无石子可取了。
如果初始局面有两堆石子,而且这两堆石子的数目相等,则乙有必胜策略。
因为有两堆石子,所以甲无法一次取完;如果甲在一堆中取若干石子,乙便在另一堆中取同样数目的石子;根据对称性,在甲取了石子之后,乙总有石子可取;石子总数一直在减少,最后必定是甲无石子可取。
对于初始局面(1),甲有必胜策略,而初始局面(3, 3),乙有必胜策略。
局面的加法:(a1, a2, …, a n) + (b1, b2, …, b m) = (a1, a2, …, a n, b1, b2, …, b m)。
(3) + (3) + (1) = (3, 3) + (1) = (3, 3, 1)。
取石子问题
取石子游戏Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 23080 Accepted: 7190Description有两堆石子,数量任意,可以不同。
游戏开始由两个人轮流取石子。
游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。
最后把石子全部取完者为胜者。
现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。
Input输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数a和b,表示两堆石子的数目,a和b都不大于1,000,000,000。
Output输出对应也有若干行,每行包含一个数字1或0,如果最后你是胜者,则为1,反之,则为0。
Sample Input2 18 44 7Sample Output1SourceNOI纠结了好久,也找同学玩了这个游戏,始终没发现什么规律。
后来想起高中一起玩(1,3,5,7)抓石子游戏的同学,就想打电话咨询顺便难一难他,谁知道直接拽给我一个:威佐夫博弈...百度了下终于懂了。
刚开始也想到列出前几种必胜组合,可是脑袋抽风了,(3,5)(5,3)算成两种情况。
= =,我都搞不清楚当时怎么想的了。
下面是度娘关于威佐夫博弈的百科:威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
这种情况下是颇为复杂的。
我们用(ak,bk)(ak ≤ bk ,k=0,1,2,...,n)表示两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。
前几个奇异局势是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9,15)、(11,18)、(12,20)。
取石子游戏完全揭秘
由感性认识到理性认识一、游戏 (2)二、从简单入手 (2)三、类比与联想 (6)四、证明 (8)五、推广 (11)六、精华 (12)七、结论 (16)八、总结 (17)一、游戏游戏A:甲乙两人面对若干堆石子,其中每一堆石子的数目可以任意确定。
例如图1所示的初始局面:共n=3堆,其中第一堆的石子数a1=3,第二堆石子数a2=3,第三堆石子数a3=1。
两人轮流按下列规则取走一些石子,游戏的规则如下: 每一步应取走至少一枚石子;每一步只能从某一堆中取走部分或全部石子;如果谁无法按规则取子,谁就是输家。
图 1 游戏的一个初始局面游戏B:甲乙双方事先约定一个数m,并且每次取石子的数目不能超过m个;其余规则同游戏A。
我们关心的是,对于一个初始局面,究竟是先行者(甲)有必胜策略,还是后行者(乙)有必胜策略。
下面,我们从简单入手,先来研究研究这个游戏的一些性质。
二、从简单入手☞用一个n元组(a1, a2, …, a n),来描述游戏过程中的一个局面。
☝可以用3元组(3, 3, 1)来描述图1所示的局面。
改变这个n元组中数的顺序,仍然代表同一个局面。
☝(3, 3, 1)和(1, 3, 3),可以看作是同一个局面。
如果初始局面只有一堆石子,则甲有必胜策略。
甲可以一次把这一堆石子全部取完,这样乙就无石子可取了。
如果初始局面有两堆石子,而且这两堆石子的数目相等,则乙有必胜策略。
因为有两堆石子,所以甲无法一次取完;如果甲在一堆中取若干石子,乙便在另一堆中取同样数目的石子;根据对称性,在甲取了石子之后,乙总有石子可取;石子总数一直在减少,最后必定是甲无石子可取。
☝对于初始局面(1),甲有必胜策略,而初始局面(3, 3),乙有必胜策略。
☞局面的加法:(a1, a2, …, a n) + (b1, b2, …, b m) = (a1, a2, …, a n, b1, b2, …, b m)。
☝(3) + (3) + (1) = (3, 3) + (1) = (3, 3, 1)。
博弈论取石子问题
博弈论取石子问题
博弈论取石子问题是一类经典的博弈问题,也被称为Nim游戏。
这个问题一般描述为:有一堆石子,两名玩家轮流从中取出若干个石子,每次取石子的数量有限制(例如,每次最多只能取1个或者2个),最终取光所有石子的玩家获胜。
在这个问题中,两位玩家都采取最优策略,并且可以假设每位玩家都会尽力阻止对方获胜。
这样,对于每一轮的取石子操作,可以通过数学的方法来判断哪位玩家有必胜策略。
一般来说,博弈论取石子问题可以通过异或运算来求解。
具体思路如下:
1. 通过异或运算计算出所有石子数量的异或和。
2. 如果异或和为0,表示当前状态下无论怎么取石子,都无法保证必胜,此时当前玩家必输。
3. 如果异或和不为0,表示当前状态下存在某种取法,可以保证必胜。
具体的取法是找到最高位上的1,然后将某一堆石子数量减去该最高位1的数量,使得新的异或和为0。
通过上述思路,可以快速计算出哪位玩家具有必胜策略。
当然,如果可以通过编程的方式来模拟和计算,会更加直观和方便。
几种两人轮流取石子游戏的输赢规律及取胜策略 续篇
几种两人轮流取石子游戏的输赢规律及取胜策略续篇上篇中第八种情况的推论有误,不能一概而论,因而第九种也有误。
特此更正。
下面再看几种情况。
分析的基础是上篇中的第四种情况。
引用如下:有三堆石子,个数分别是1、2、3个。
分析:若先取的把只有一个的一堆取完,则变成上篇中的第二种情况,后取的赢;若先取的从两个的一堆中取一个,则后取的把三个的一堆取完,变成第一种情况,后取的赢;若先取的把两个的一堆取完,变成上篇中的第二种情况,还是后取的赢。
先取的从三个的一堆中取,不论取几个,用同样的方法进行分析,后取的都有办法赢。
所以,先取的不论如何取法,后取的都有应对之策保证必赢。
一、有三堆石子,个数分别是1、3、4个。
分析:先取的只要从4个一堆中取出2个,就变成上篇中的第四种情况,所以先取的必赢。
二、有三堆石子,个数分别是1、4、5个。
分析:若先取的把只有一个的一堆取完,则变成上篇中的第二种情况,后取的赢;若先取的从4个的一堆中取一个,则后取的从5个的一堆中取3个,变成上篇中的第四种情况,后取的赢;其他情况不论先取的从4个或5个的一堆中取几个,后取的都有应对之策取胜;所以,后取的必赢。
三、有三堆石子,个数分别是1、5、6个。
分析:先取的只要从6个一堆中取出2个,就变成第二种情况,所以先取的必赢。
四、有三堆石子,个数分别是1、6、7个。
分析:若先取的把只有一个的一堆取完,则变成上篇中的第二种情况,后取的赢;若先取的从6个的一堆中取一个,则后取的从7个的一堆中取3个,变成第二种情况,后取的赢;其他情况不论先取的从6个或7个的一堆中取几个,后取的都有应对之策取胜;所以,后取的必赢。
五、有三堆石子,个数分别是1、7、8个。
分析:先取的只要从8个一堆中取出2个,就变成第四种情况,所以先取的必赢。
根据以上五种情况可以得出:三堆石子中有一堆是1个,其他两堆的个数是相邻数的输赢规律及取胜策略是:石子个数在中间的数若是偶数,先取的必输,因为先取的不论怎么取都会使后取的有机会找到取后最终出现两堆石子个数相同的情况,所以先取的必输;石子个数在中间的数若是奇数,先取的必赢,因为先取的只要从个数最多的一堆中取出2个就变成上一种情况,所以先取的必赢。
取石子游戏类分析的分析讨论
MisèreNim
基本规则同Nim Game问题,胜负判定是谁 不能继续取石子,谁就赢了。
分析
1)所有石子堆的数目都为1:
显然,若有偶数堆石子堆,则必胜,否则必败。 2)如果恰好只有一堆石子数目大于1。 我们可以把这堆石子取完或者取得只剩下1,使得 1 只剩下奇数堆数目为1的石子留给对方,由1),必 胜。 3)如果有至少2堆石子的数目大于1。 考虑⊕值: 若⊕值不为0,则按照NimGame走法取石。这样, 当对手某次取完石子后,肯定会出现2)的情况, 则必胜。
方法1
动态规划: 设f(a , b)表示两堆分别剩a颗和b颗石子时的 胜负状态。则, f(a ,b) = f(a-k ,b) or f(a ,b-k) or f(a-k ,b-k) 时间复杂度达到了o(n3)
改进
因为,
f(a , a),先手必胜 f(a , b)= f(b , a) 当f(a , b)为必败态时,对于所有c≠b, f(a ,c)必胜。
分析
n不被21整除 :使用同样策略,必胜。 n被21整除:
n=21,必败。 存在某个k,使得k + ak不被21整除 :
第一步拿掉k个,然后对方会拿掉ak个,剩下n-k-ak 个 ,到达n不被21整除的状态,因此必胜。
其它情况,必败。
Wythoff Game
问题描述: 问题描述: 有两堆各若干个石子,两个人轮流从某一 堆或同时从两堆中取同样多的石子,规定 每次至少取一个,多者不限,最后取光者 得胜。
n = 4, {1,1,2,2} 第一步若拿掉一堆为2的石堆,则只剩一堆>1 的石堆。必败。 若拿掉一堆为1的石堆,对方也拿掉一堆为1的 石堆,无论我们接下来怎么取,都只剩一堆>1 >1 的石堆。必败。 在一堆为2的石堆中拿掉一颗石子,只剩一堆 >1的石堆。必败。 n = 4,{1,1,2,3} 我们可以在3的石堆中拿掉一颗石子,变为一 个xor值为0的必败状态,所以必胜。
取石子游戏
从三道例题来看一类常见博弈问题的思维方法。
长郡中学金恺在博弈问题中,有一类最为一般与常见,概括来说满足4个基本要点:1、双人轮流取子,输赢只与当前的局面有关,而与之前怎么取的无关;2、取子的方法可以是多种不同的取法相结合。
13、某个人无法按规则取了就算输——即没有后继状态的状态为败局;4、石子越取越少,或者存在某种特殊的性质,使得状态不可能出现循环——状态存在拓扑顺序,能够采用递推的方法解决(但效率不高,因为没有利用走棋规则的特点);对于这类博弈题,我们往往希望根据走棋特点找到一种简单的性质,然后根据这个性质将Array所有状态进行划分:即将所有状态分为两部分W、L,满足性质A的状态划到集合L,不满足性质A的状态划到集合W:对于集合L中的状态l,证明l的后继状态都在W中;对于集合W中的状态w,证明w至少有一个后继在L中。
则W中的所有状态都是胜局,L中的所有状态都是败局。
对于输入的一个状态,只要判断它是否满足性质A即可以知道它是胜是败。
但是性质A可能非常隐蔽、复杂,要找到性质A可能却要花费很多时间和心智。
这类问题由于取子方法有很多很多,所以没有约定俗成的公式2。
抓住取子方法的特点、周密深入的分析、找到问题的本质是解决这类问题的最直接的办法。
在很多情况下,找规律也是一个不错的选择,因为大多数情况下性质A的形式是非常简单的(这正体现了数学中简单即美的最高境界),往往可以通过观察+猜想找到正确的结果。
而一旦找到了某个性质A对于小数据都成立(可用程序检测),那么用归纳法证明是比较简单的。
本文就通过几个例子,来探索解决这类问题的思维方法。
问题1:取火柴游戏题目来源:姚金宇原创题目描述:有三堆火材,分别为a,b,c根。
有两个人在做如下游戏:游戏者任意拿走其中一堆火柴,再在剩下的两堆里任取一堆任意分成两堆(每堆至少1根)。
两人轮流如此,谁无法这样做就算输了。
输入格式:有n组数据:每一行三个数a,b,c,满足1≤a,b,c≤1,000,000,000。
游戏策略(1)
SG函数性质
l 对于一个图游戏,如果图的当前状态等于0,那么先 手必败,否则必胜。
l 证明: l 如果当前点SG=0,先手无论怎么走,都会到达一个
SG<>0的点;接着后手就能设法到达一个SG=0的点。 也就是说后手总是能移动,而先手总是处在SG=0的 点。游戏不能无限的进行下去,一旦先手到达一个出 度等于0的点,游戏结束,先手败。 l 如果当前点SG≠0,先手可以走到一个SG=0的点,这 样后手面对一个必败状态,所以先手必胜。
证明: 请回忆SG函数的性质:如果当前某图的状态值>0,那么游戏者可以 通过一步走棋把图的当前状态值任意的减小。因此一个状态值为x的 图等价于Nim Game中规模为x的一堆石子!
l 如果a1 ⊕ a2 ⊕ … ⊕ ak = 0,先手无论怎么走都会令a1’ ⊕ a2’ ⊕ … ⊕ ak’ ≠ 0。(ai’是ai变化后的值)
游戏策略(1)
SG函数简介
l 如果我们把游戏中的某一个局面看作一个顶点,把局面之 间的转换用边来表示,那么很多游戏都可以转化成图游戏 模型。
l 图游戏模型 给定有向无环图G=(V,E)和一个起始点,双方 轮流行动。每个人每次可以从当前点出发沿着一条有向边 走到另外一个点。谁无法走了谁就输。
l 一些图游戏可以通过Sprague-Grundy函数来判定先手的 胜负情况(简称SG函数)。
(每堆至少一颗) 这四种操作,实际上就依次对应于原来游戏中的以下四种击倒法: l 击倒一段连续的木瓶中最靠边的一个 l 击倒一段连续的木瓶中最靠边的连续两个 l 击倒一段连续的木瓶中不靠边的一个 l 击倒一段连续的木瓶中不靠边的连续两个
游戏策略(1)
求解
l 把局面看作顶点,游戏规则看作边,这是一个典型的图游戏。
若干取石子问题
若⼲取⽯⼦问题⼏道取⽯⼦游戏【前⾔】取⽯⼦游戏是⼀类经典的博弈问题,也是博弈问题SG函数的基础所在。
⽽它也具有⼀般博弈题的思维难度较⼤、编程量⼩等特点,因此在⽐赛时的得分情况往往呈现出两边倒的情况。
⽽其游戏的结论却经常是浅显易懂但⼜难以捉摸的,往往在⽐赛结束后,经过别⼈的⼏句话就使⼈恍然⼤悟。
本⽂将对⼏道取⽯⼦的游戏进⾏讨论,并分析思维的过程,希望读者能从中获益。
⾸先我们先来回顾⼀下最原始的取⽯⼦游戏。
即:有N堆⽯⼦,每次可以从任意⼀堆中取出若⼲⽯⼦,不能不取,两⼈轮流⾏动,最先⽆⽯⼦可取的⼈输。
⽽解决此题的⽅法便是把这N堆⽯⼦的个数进⾏异或操作,得到的值为0即为先⼿必败,否则先⼿必胜。
关于这⼀问题可以参考相关⽂献。
但仅仅靠这个模型并不能满⾜我们的要求,⾯对⼀些进⾏过变形的题⽬需要我们灵活运⽤。
下⾯我们先来看⼀个例题。
【例题1】POIXVI Stage I Pebbles题⽬⼤意:有N堆⽯⼦,开始时⽯⼦个数为A1,A2…A N。
(从左到右编号)并满⾜A1≤A2≤…≤A N,即⽯⼦个数为⾮递减数列。
两⼈轮流取⽯⼦,每次可以在任意⼀堆中取任意多个,不能不取,并且必须保证每次取完后的⽯⼦个数仍为⾮递减。
最先不能取的输。
问题分析:很显然,这道题在普通的取⽯⼦游戏上加了⼀个限制,即必须保持⽯⼦数为⾮递减数列。
这样我们便不能直接⽤原来的性质,⽽状态数也⾮常⼤,只能考虑通过⼀步步分析把问题转化。
⾸先,我们先来研究⼀些简单的情况:显然N=1时先⼿必胜。
⽽N=2时,可以发现当A1= A2时,先⼿必败,因为此时先⼿不能取A2的⽯⼦,只能在A1中取x个⽯⼦。
⽽后⼿者只需跟随先⼿者,同样在A2中取出x个即可满⾜保持A1’= A2’。
当A1< A2时,则先⼿可以从A2中取⾛A2- A1个⽯⼦。
因此先⼿必胜。
经过这个简单的分析,我们可以感觉到,由于要保证⾮递减的性质,在相邻的两堆中,可能经常会有类似N=2时的博弈发⽣。
取石子问题
取石子问题有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。
两个人轮流从堆中取物体若干,规定最后取光物体者取胜。
这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。
下面我们来分析一下要如何才能够取胜。
(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。
最后取光者得胜。
显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。
因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜。
总之,要保持给对手留下(m+1)的倍数,就能最后获胜。
这个游戏还可以有一种变相的玩法:两个人轮流报数,每次至少报一个,最多报十个,谁能报到100者胜。
(二)威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
这种情况下是颇为复杂的。
我们用(ak,bk)(ak ≤ bk ,k=0,1,2,...,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,奇异局势有如下三条性质:1。
任何自然数都包含在一个且仅有一个奇异局势中。
由于ak是未在前面出现过的最小自然数,所以有ak > ak-1 ,而bk= ak + k > ak-1 + k -1 = bk-1 > ak-1 。
几种两人轮流取石子游戏的输赢规律及取胜策略
几种两人轮流取石子游戏的输赢规律及取胜策略有两堆或三堆石子,每堆石子数量不限,至少有一个。
两人轮流取石子,取法如下:1、每人每次至少取一个,不能不取;2、每人每次也可以取多个,甚至一次取完一堆的所有石子,但不能一次从两堆或三堆中取石子,只能从一堆中取石子。
输赢规定:轮到谁无石子可取谁就输,或者说谁取到最后的一个或者最后一堆的剩下石子谁就赢。
这个游戏有没有输赢规律?到底是先取的赢还是后取的赢?如有输赢规律,如何保证该赢的人一定能赢?即取胜的策略是什么?要解决这些问题,我们可以先易后难,先简后繁,进行探索和分析,找出输赢规律及取胜策略。
一、有两堆石子,两堆石子的个数相同。
分析:若两堆石子各有一个,则按照游戏规则,后取的必赢。
因为只有一种情况,即先取的和后取的各取一个就结束。
再细想,如果两堆石子个数超过一个,还是后取的赢。
取胜策略是每次先取的从某一堆取几个,后取的就从另一堆取几个。
这样每一轮取完后,剩下的两堆石子还是同样多。
最后一轮的情况是先取的把某一堆剩下的取完(一个或几个),后取的把另一堆剩下的取完(一个或几个)。
二、有两堆石子,两堆石子的个数不同。
分析:先取的可从个数多的一堆取几个石子,取后使两堆石子的个数相同。
这样就变成第一种情况,则先取的必赢。
策略是先从个数多的一堆取几个石子,取后使两堆石子的个数相同,然后再按照第一种情况的策略来取即可。
三、有三堆石子,其中有两堆个数一样多。
分析:先取的可先把个数不一样多的一堆取完,就变成第一种情况,所以是先取的必赢。
四、有三堆石子,个数分别是1、2、3个。
分析:若先取的把只有一个的一堆取完,则变成第二种情况,后取的赢;若先取的从两个的一堆中取一个,则后取的把三个的一堆取完,变成第一种情况,后取的赢;若先取的把两个的一堆取完,变成第二种情况,还是后取的赢。
先取的从三个的一堆中取,不论取几个,用同样的方法进行分析,后取的都有办法赢。
所以,先取的不论如何取法,后取的都有应对之策保证必赢。
取石子问题
《数学问题解决教学》作业(2013级特岗教育硕士)姓名岳海彦学号2013140347专业数学与应用数学专业学校河北师范大学工作单位张家口市崇礼第一中学取石子问题2013级数学特岗硕士学号2013140347 岳海彦【数学情境】有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。
两个人轮流从堆中取物体若干,规定最后取光物体者取胜。
这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。
【提出问题】在苏教版《数学》五年级上册最后一页有一道游戏题:一堆火柴有30根,两人轮流取出1根、2根或3根,谁取到最后一根,谁就获胜。
(1)按照这个规则,同桌两人做游戏。
(2)再做几次,你能发现取胜的策略吗?【解决问题】通过几次游戏,我们发现先取者只要按照一定的策略取火柴就一定能够获胜。
他取胜的策略是:先取2根,然后对方取几根,自己就取4减去几根。
比如对方取1根,他就取3根。
这样他就一定能取到最后一根。
我们可以用倒推法来分析原因。
先取者要想取到最后一根(第30根),就必须取到第26根。
这样,无论对方是取1根(第27根),或是取2根(第27、28根),或是3根(第27、28、29根),先取者总能保证自己取到第30根。
而要取到第26根,就必须取到第22根;要取到第22根,就必须取到第18根;依次类推,他必须取到第14、10、6、2根。
所以先取者只要先取2根,然后对方取几根,自己就取4减几根,就一定能保证取到最后一根。
上面这个问题,属于对策问题。
对策问题最著名的例子就是田忌赛马的故事。
解决数学游戏中的对策问题,通常要从简单情形出发进行倒推分析。
对策问题受游戏规则影响很大。
比如把上面游戏的规则修改成‚谁取到最后一根,谁就失败‛,获胜的策略将会发生变化。
对策问题受游戏规则影响很大。
比如把上面游戏的规则修改成‚谁取到最后一根,谁就失败‛,获胜的策略将会发生变化。
从上面的解答可以看出,数学游戏中的对策问题,简单有趣,既能动手又能动脑,是我们培养操作能力和思维能力的极好范例。
组合博弈 取石子游戏.
博弈问题分析——取石子游戏实例解答<1>小红是个游戏迷,他和小蓝一起玩拿石子游戏。
游戏规则为2个人轮流拿石子。
一次可以拿1颗或3颗,规定谁取到最后一颗石子谁就胜出。
最后决定由小红先取。
两人都是游戏高手,该赢的绝不会输(表示不会失误)。
问在知道石子总数的情况下,怎样快速预测谁将会胜出。
分析:小红和小蓝各取一次共有三种情况:②共取走2颗石子(1,1)② 共取走4颗石子(1,3)③ 共取走6颗石子(3,3)设方案①取了N1次,方案②取了N2次,方案③取了N3次后,还剩下K(k<6,否则可以再取几轮,导致剩余量<6)个石子。
最后K的取值有三种情况:0,1,3。
这个要解释一下:剩下的石子个数总共有0,1,2,3,4,5几种可能,2可以再取一轮(1,1)剩下0,4可以再取一轮(1,3)或者两次(1,1)剩下0,5可以再取(1,1)、(1,3)等的组合剩下1或3个,所以综合是最终会剩下0、1、3三种可能。
设有石子S.则S=2*N1+4*N2+6*N3+K.其中2*N1+4*N2+6*N3=(1+1)*N1+(1+3)*N2+(3+3)*N3,说明取的过程为偶数次,所以剩下K时该最先取石子的人取。
K=1,3则先取方胜。
反之,另一方胜。
又2*N1+4*N2+6*N3=2*(N1+2*N2+3*N3)为偶数,所以S的奇偶性取决于K,当K为偶数时,后取方胜,反之,先取方胜。
总结:计算时可以先对6取余,如果余数为0、2、4,则K为0(偶数,后取者胜),如果余数为1、3、5则K为1或3(奇数,先取者剩)。
<2>有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。
两个人轮流从堆中取物体若干,规定最后取光物体者取胜。
这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。
下面我们来分析一下要如何才能够取胜。
(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。
作业:抓石子问题
抓石子问题题目:将15粒小石头分为3堆,分别是3,5,7粒。
两人一次从中取走小石子。
规定:每人每次只能从其中一堆中取,至少取一粒,多取不限。
取到最后一粒者为胜。
问:先取者是否有必胜法。
解:假设(a,b,c)表示三堆小石剩余数量。
则三堆小石只考虑数量,不用考虑顺序,比如(a,b,c)=(b,c,a)=(c,a,b)=(a,c,b)等。
下面分别对各类情况进行分类解释1、(1,0,0)这种组合轮到谁来取谁必胜。
则也知(1,1,0)这个组合轮到谁来取谁必败。
则比较容易验证(3,2,1);(n,n,0)这两种组合时轮到谁来取谁必败。
当(n,n,0)时,先取者必败,因为先取者不能把情况变成(n,0,0)的形式,则只能将情况变成(n,n-k,0)的形式(其中k<n),这样对方就可以将情况变成(n-k,n-k,0)的形式,以此类推,最终情况就会变成(1,1,0)的形式,这样有1知,先取者必败例如说(2,2,0)这种情况时,先取者必败(因为先取者如取1个时就变成(2,1,0),对方可以将情况变成(1,1,0),这样,当(3,3,0),(5,5,0)时也一样。
当(3,2,1)时,先取者如果将取变成(1,1,2),(1,1,3),(1,2,2,),(0,1,2),(0,1,3),(0,2,3),则对方可以将这些情况变成(n,n,0)这种情况。
则必败。
2、结合上面两个“必败点”可以递推得(145),(2,4,6).先取也必败。
当(1,4,5),只能变成(1,2,5),(1,3,5),(1,2,4)(1,3,4),对方可以将其变成(1,2,3)的形式当(2,4,6)时,只能变成(1,4,6),(1,2,6),(2,3,6),(1,2,4),(2,3,4),(2,4,5),则对方可以变成(1,2,3),(1,4,5)的形式。
3、结合上面两个“必败点”可以递推得(2,5,7),(3,4,7),(3,5,6)到谁先取谁必败。
几种两人轮流取石子游戏的输赢规律及取胜策略
几种两人轮流取石子游戏的输赢规律及取胜策略几种两人轮流取石子游戏的输赢规律及取胜策略有两堆或三堆石子,每堆石子数量不限,至少有一个。
两人轮流取石子,取法如下:1、每人每次至少取一个,不能不取;2、每人每次也可以取多个,甚至一次取完一堆的所有石子,但不能一次从两堆或三堆中取石子,只能从一堆中取石子。
输赢规定:轮到谁无石子可取谁就输,或者说谁取到最后的一个或者最后一堆的剩下石子谁就赢。
这个游戏有没有输赢规律?到底是先取的赢还是后取的赢?如有输赢规律,如何保证该赢的人一定能赢?即取胜的策略是什么?要解决这些问题,我们可以先易后难,先简后繁,进行探索和分析,找出输赢规律及取胜策略。
一、有两堆石子,两堆石子的个数相同。
分析:若两堆石子各有一个,则按照游戏规则,后取的必赢。
因为只有一种情况,即先取的和后取的各取一个就结束。
再细想,如果两堆石子个数超过一个,还是后取的赢。
取胜策略是每次先取的从某一堆取几个,后取的就从另一堆取几个。
这样每一轮取完后,剩下的两堆石子还是同样多。
最后一轮的情况是先取的把某一堆剩下的取完(一个或几个),后取的把另一堆剩下的取完(一个或几个)。
二、有两堆石子,两堆石子的个数不同。
分析:先取的可从个数多的一堆取几个石子,取后使两堆石子的个数相同。
这样就变成第一种情况,则先取的必赢。
策略是先从个数多的一堆取几个石子,取后使两堆石子的个数相同,然后再按照第一种情况的策略来取即可。
三、有三堆石子,其中有两堆个数一样多。
分析:先取的可先把个数不一样多的一堆取完,就变成第一种情况,所以是先取的必赢。
四、有三堆石子,个数分别是1、2、3个。
分析:若先取的把只有一个的一堆取完,则变成第二种情况,后取的赢;若先取的从两个的一堆中取一个,则后取的把三个的一堆取完,变成第一种情况,后取的赢;若先取的把两个的一堆取完,变成第二种情况,还是后取的赢。
先取的从三个的一堆中取,不论取几个,用同样的方法进行分析,后取的都有办法赢。
取石子游戏
取石子游戏
取石子游戏是一种经典的策略游戏,通常由两名玩家轮流进行。
游戏开始时,一堆石子被放在桌子上。
每个玩家在自己的回合中可以选择取走一定数量的石子,但不能取走超过规定的最大数量。
目标是在游戏结束时,取走最后一个石子的玩家获胜。
以下是一种常见的取石子游戏规则:
1. 游戏开始时,一堆石子被放在桌子上。
2. 两名玩家轮流进行,每个玩家在自己的回合中可以选择取走1到M个石子,其中M为规定的最大数量。
3. 玩家必须至少取走1个石子,但不能超过M个石子。
4. 最后一个石子被取走的玩家获胜。
游戏的策略通常是基于数学原理和对对手的预测。
在某些特定的游戏规则下,可以使用数学公式来计算最优策略。
例如,在一堆有N个石子的游戏中,如果规定每个玩家最多可以取走M个石子,那么可以使用以下公式来计算最优策略:
1. 如果N%(M+1)等于0,那么第一个玩家将会输掉游戏。
2. 否则,第一个玩家可以选择取走N%(M+1)个石子,然后无论第二个玩家取走多少个石子,第一个玩家总是可以以同样的方式回应,直到最后一个石子被取走。
这个公式可以帮助玩家计算出在给定规则下的最优策略,从而提高胜利的机会。
需要注意的是,取石子游戏有很多种不同的规则和变体,上述的规则只是其中一种常见的形式。
具体的规则可能会有所不同,所以在参与游戏之前最好明确规定好游戏的规则。
取石子游戏详细解答
取石子游戏详细解答取石子游戏详细解答取石子游戏(取石子游戏)现有5 堆石子,石子数依次为3,5,7,19,50,甲乙两人轮流从任一堆中任取(每次只能取自一堆,不能不取), 取最后一颗石子的一方获胜。
甲先取,问甲有没有获胜策略(即无论乙怎样取,甲只要不失误,都能获胜)?最佳答案这是数论中的最优策略问题,没有平均数原理。
我好好想想再给你答案。
要上班了,下班继续思考……(时间不多,才回复,见谅)1. 从50中取走32粒剩余18粒是正确的。
2. 算法:从其中一堆中取n个,使得剩余的所有数目正好是“必负局(此时先取必输的局面)”。
3. 所谓“必负局”是指把剩余的每一堆的数目都转化成二进制的数,然后把它们相加,规定做不进位的加法(也就是异或运算),即0+0=0,1+0=0,0+1=1,1+1=0(不进位),如果所得和是0(多个0),那么此种局势称为“必负局”。
4. “必负局”原理:一个“必负局”,一次改动任何一个数,都将不再是“必负局”,同时,任何一个“非必负局”,通过正确地减少某个数,一定能变成“必负局”,并且这种操作是唯一的。
设想现在是“必负局”,假如你先取,势必把其中的某个数的1改成了0,0改成了1,一定不再是“必负局”了,而我一定可以在把它变会“必负局”。
其实这样的局势,相当于偶数,你取了,必定有对应我取的,所以我一定拿到最后一个。
简单的想,考虑只有两堆,那么如果原来不相等,那就是“非必负局”,先取者有必胜方式,只要取多的一堆使得两堆相等,之后你取几个,我就从另一堆取几个。
5. 应用:(也许格式会改变)19 0100117 0001115 0001013 000011010010 (18)10也就是,还要18才能变成“必负局”,所以50-18=32所以第1次只能在第5堆石子中取32粒,使得取出32粒后为“必负局”,即异或运算结果为0。
对于只有两堆的只要取完后保证两堆的数目相同就能赢了0 :00000 6 :001106 :00110 第二人在第一堆中取走3个: 0 :00000 3 :00011 6 :00110 第一人也在第二堆中取走3个: 0 :00000 3 :00011 3 :00011 知道第二人会必输了吧不妨第二人取走第一堆吧,变成: 0 :00000 0 :00000 3 :00011 第一人取走最后一堆: 0 :00000 0 :00000 0 :00000 第一人胜! 如: 17 :100018 :010009 :01001 第一列的和不为偶数(1+0+0=1) 第一步: 第一人在第一堆中取走16个变成 1 :00001 8 :01000 9 :01001 第二人取,不论怎么取,都会使某一列的和不为偶数,如: 1 :00001 6 :00110 9 :01001 第一人现在在9中取走2个变成:1 :00001 6 :00110 7 :00111 第二人不妨取走第一堆变成0 :00000 6 :00110 7 :00111 别讲那么说专业术语嘛看这个行不行把每堆的数目用二进制表示每行一个写成一列(多少堆就多少行) 右对齐,左边不足的补0,保证每个二进制数有相同的位数然后取子取完后保证二进制数每一位所对应的那一列的和是偶数即可如果一开始就已满足每列的和都是偶数,那第一个取的人就必输无疑其实如果游戏人双方都知道了这个规律,那这个游戏的输赢就在于谁先走,也就没有意思了。
取小石子游戏教案
取小石子游戏教案教案标题:取小石子游戏教案教学目标:1. 学生能够理解和掌握取小石子游戏的规则和基本策略。
2. 学生能够培养逻辑思维和决策能力。
3. 学生能够与他人进行协作和竞争。
教学准备:1. 小石子(每人3颗)。
2. 游戏规则和策略的简要说明。
教学步骤:引入(5分钟):1. 引导学生回顾和讨论过去玩过的游戏,了解游戏的目的和规则。
2. 引入取小石子游戏的概念,简要介绍游戏的规则和目标。
探究(15分钟):1. 将学生分成小组,每组2-3人。
2. 向学生解释游戏的规则:每个人轮流取1或2颗小石子,不能同时取完。
最后无法取石子的人输掉游戏。
3. 让学生进行一轮游戏,观察他们的策略和决策过程。
讲解(10分钟):1. 引导学生讨论他们在游戏中的策略和决策。
2. 介绍一些常见的策略,如先手优势、保持平衡等,并解释其原理。
3. 引导学生思考不同策略的优缺点,并讨论如何根据对手的策略做出反应。
实践(20分钟):1. 让学生重新进行游戏,鼓励他们尝试不同的策略。
2. 观察学生的表现,并给予必要的指导和建议。
3. 鼓励学生进行小组间的合作和竞争,分享策略和经验。
总结(5分钟):1. 回顾游戏的规则和目标。
2. 让学生分享他们在游戏中的体验和收获。
3. 引导学生思考如何将游戏中的策略和决策能力应用到日常生活中。
拓展活动:1. 鼓励学生设计自己的游戏规则和策略,并与同学分享。
2. 组织学生参加更复杂的策略游戏,如国际象棋或围棋,以进一步培养他们的思维能力。
评估方法:1. 观察学生在游戏中的表现和策略选择。
2. 对学生的参与度和合作能力进行评估。
3. 鼓励学生写下他们在游戏中的思考和反思,以便进行个人评估。
教学延伸:1. 鼓励学生在家中与家人或朋友一起玩取小石子游戏,以提高他们的策略和决策能力。
2. 引导学生研究其他策略游戏的规则和策略,并与同学分享。
东方博弈1213题解
东方博弈1213题解东方博弈是一种常见的思维训练游戏,也是数学中的一个经典问题。
今天我们来分析一道东方博弈的题目,题目编号为1213。
题目描述:有一堆石子,共有N个,两个人轮流从中取石子,每次可以取走1个、2个或3个石子,最后无法取石子的人视为失败者。
其中N是一个正整数。
要求:给定N,判断第一个取石子的人是否能够取胜。
解题思路:对于这道题目,我们可以使用递归的方法来解答。
首先,我们需要判断N的取值范围,因为如果N小于等于3时,无论第一个取石子的人如何取,最后都会取不到石子,所以第一个取石子的人必定失败。
因此,我们只需要考虑N 大于3时的情况。
接下来,我们可以观察到一个规律:当N为4的倍数时,无论第一个取石子的人如何取,最后都会剩下4个石子,轮到第二个人取时,无论取走几个,都会留下4个给第一个人,使得第一个人无法再取石子,最后第一个人失败。
当N不是4的倍数时,第一个取石子的人可以通过巧妙的策略来保证最后剩下4个石子给第二个人。
具体策略如下:1.第一个人取1个石子。
2.第二个人根据第一个人的取法,取相同的石子数量,使得石子的总数保持为偶数。
3.接下来,不论对手如何取石子,第一个人都可以保证剩下的石子总数为4的倍数。
因为第一个人取的数量与对手取的数量之和为3,所以第一个人取3个石子后,剩下的石子数量必定为4的倍数。
4.最后,当剩下4个石子时,无论对手如何取,第一个人都可以保证取到最后一个石子,从而获得胜利。
综上所述,对于这道题目,我们可以得出以下结论: - 当N是4的倍数时,第一个取石子的人必定失败。
- 当N不是4的倍数时,第一个取石子的人必定获得胜利。
总结:东方博弈1213题是一道经典的思维训练题,通过观察和分析石子的数量,我们可以找到一种巧妙的策略来保证第一个取石子的人获得胜利。
这道题目可以锻炼我们的逻辑思维能力和数学分析能力。
希望本文对你理解和解答东方博弈1213题有所帮助。
如果你对东方博弈和其他数学题目感兴趣,欢迎继续探索和学习。
熟记“胜利之数”,“取石子游戏”你一定赢(适合1-6年级)
熟记“胜利之数”,“取⽯⼦游戏”你⼀定赢(适合1-6年级)【题记】其作始也简,其将毕也必巨。
——《庄⼦·内篇·⼈间世》带好⼀个团队,成就你我;做实⼀个常规,扎实有效;定位⼀个重点,尝试反馈;抓住⼀个核⼼,质量为本;改变⼀种理念,学为中⼼;关注⼀项特⾊,创意共⽣。
【配合教材】本教学游戏配合“找规律”。
通过本游戏能够帮助学⽣巩固所学知识,激发学⽣数学学习的兴趣,引导学⽣动⼿操作和观察实践,让学⽣在举⼀反三中寻找规律,提⾼学⽣解决实际问题的能⼒,培养学⽣思维的灵活性和开放性,增强学⽣数学学习的信⼼,拓展学⽣数学学习的视野。
【基本玩法】这个游戏的玩法⾮常简单,只要在地上拣些⼩⽯⼦或者⼩树杈,分成两堆,每堆的个数可以是任意的,只要不相等就⾏。
玩的规则如下:⼀、两⼈轮流拿⽯⼦,每次可以从⼀堆⽯⼦中,任意取⼀颗或者⼏颗,直到把⼀整堆⽯⼦全部取⾛。
也可以从两堆中,任意取⾛相等数量的⽯⼦。
⼆、每次轮到谁拿,他⾄少得拿⼀颗⽯⼦,不允许弃权,⼀颗都不拿。
三、谁拿光剩下的⽯⼦,就算他赢了。
说也奇怪,这个看起来⼗分简单的游戏,要想⼗拿九稳,取得胜利,很不容易。
不知道取胜诀窍,马虎⼤意随便拿,只能⼀输到底。
诀窍在哪⾥呢?【指点迷津】先请看下⾯这张表:序数123456789101112数列A134689111214161719数列B257101315182023262831上⾯的表格中,第⼀⾏的“序数”表⽰拿⽯⼦的先后顺序。
第⼆和第三这两排数,叫做数列A 和数列B,数列中相应的数构成⼀对。
例如第三对是(4,7),第九对(14,23)。
您想取胜,只要记住:在每次取⾛⽯⼦以后,要是能使留下的⽯⼦个数和表中数列A和数列B的某⼀对相符合,就必胜⽆疑了。
所以,你可以把(1,2),(3,5),(4,7),……这些数叫做“胜利之数”。
举⼀个例⼦。
开始,两堆⽯⼦分别有7颗和11颗。
●●●●●●●●●●●●●●●●●●要是你先拿,就可以在第⼆堆中取⾛7颗⽯⼦,使它成为(7,4):●●●●●●●●●●●注意,这对(7,4),是表中的第三对。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
取石子问题有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。
两个人轮流从堆中取物体若干,规定最后取光物体者取胜。
这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。
下面我们来分析一下要如何才能够取胜。
(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。
最后取光者得胜。
显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。
因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜。
总之,要保持给对手留下(m+1)的倍数,就能最后获胜。
这个游戏还可以有一种变相的玩法:两个人轮流报数,每次至少报一个,最多报十个,谁能报到100者胜。
(二)威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
这种情况下是颇为复杂的。
我们用(ak,bk)(ak ≤ bk ,k=0,1,2,...,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,奇异局势有如下三条性质:1。
任何自然数都包含在一个且仅有一个奇异局势中。
由于ak是未在前面出现过的最小自然数,所以有ak > ak-1 ,而bk= ak + k > ak-1 + k -1 = bk-1 > ak-1 。
所以性质1。
成立。
2。
任意操作都可将奇异局势变为非奇异局势。
事实上,若只改变奇异局势(ak,bk)的某一个分量,那么另一个分量不可能在其他奇异局势中,所以必然是非奇异局势。
如果使(ak,bk)的两个分量同时减少,则由于其差不变,且不可能是其他奇异局势的差,因此也是非奇异局势。
3。
采用适当的方法,可以将非奇异局势变为奇异局势。
假设面对的局势是(a,b),若b = a,则同时从两堆中取走a 个物体,就变为了奇异局势(0,0);如果a = ak ,b > bk,那么,取走b - bk个物体,即变为奇异局势;如果 a = ak ,b < bk ,则同时从两堆中拿走ak - ab - ak个物体,变为奇异局势(ab - ak , ab - ak + b - ak);如果a > ak ,b= ak + k,则从第一堆中拿走多余的数量a - ak 即可;如果a < ak ,b= ak + k,分两种情况,第一种,a=aj (j < k),从第二堆里面拿走b - bj 即可;第二种,a=bj (j < k),从第二堆里面拿走 b - aj 即可。
从如上性质可知,两个人如果都采用正确操作,那么面对非奇异局势,先拿者必胜;反之,则后拿者取胜。
那么任给一个局势(a,b),怎样判断它是不是奇异局势呢?我们有如下公式:ak =[k(1+√5)/2],bk= ak + k (k=0,1,2,...,n 方括号表示取整函数)奇妙的是其中出现了黄金分割数(1+√5)/2 = 1。
618...,因此,由ak,bk组成的矩形近似为黄金矩形,由于2/(1+√5)=(√5-1)/2,可以先求出j=[a(√5-1)/2],若a=[j(1+√5)/2],那么a = aj,bj = aj + j,若不等于,那么a = aj+1,bj+1 = aj+1+ j + 1,若都不是,那么就不是奇异局势。
然后再按照上述法则进行,一定会遇到奇异局势。
(三)尼姆博奕(Nimm Game):有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
这种情况最有意思,它与二进制有密切关系,我们用(a,b,c)表示某种局势,首先(0,0,0)显然是奇异局势,无论谁面对奇异局势,都必然失败。
第二种奇异局势是(0,n,n),只要与对手拿走一样多的物品,最后都将导致(0,0,0)。
仔细分析一下,(1,2,3)也是奇异局势,无论对手如何拿,接下来都可以变为(0,n,n)的情形。
计算机算法里面有一种叫做按位模2加,也叫做异或的运算,我们用符号(+)表示这种运算。
这种运算和一般加法不同的一点是1+1=0。
先看(1,2,3)的按位模2加的结果:1 =二进制012 =二进制103 =二进制11 (+)———————0 =二进制00 (注意不进位)对于奇异局势(0,n,n)也一样,结果也是0。
任何奇异局势(a,b,c)都有a(+)b(+)c =0。
如果我们面对的是一个非奇异局势(a,b,c),要如何变为奇异局势呢?假设 a < b< c,我们只要将 c 变为a(+)b,即可,因为有如下的运算结果: a(+)b(+)(a(+)b)=(a(+)a)(+)(b(+)b)=0(+)0=0。
要将c 变为a(+)b,只要从c中减去c-(a(+)b)即可。
在判断是不是咸佐夫博弈的奇异局势的时候,比如两个数a,b,则可以首先交换是a<b,然后记i=b-a,如果是奇异局势,则必有m=floor(i*(1+sqrt(5.0))/2),并且b=m+i,否则比不是奇异局势有一种很有意思的游戏,就是有物体若干堆,可以是石子,也可以是火柴棍或是围棋子等等均可。
两个人轮流从堆中取物体若干,规定最后取光物体者为胜。
这是我国民间很古老的一个游戏,由于早先是用石子来玩的,我们习惯称之为“取石子游戏”。
别看这游戏极其简单,却蕴含着深刻的数学原理。
好从祖先那里来追寻荣耀的中国人,还称取石子游戏是“博奕论”的鼻祖呢。
下面从取石子游戏的几种典型玩法的数学模型来分析一下要如何才能够取胜的策略。
(一)巴什博奕(BashGame)只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。
最后取光者得胜。
显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。
因此我们发现了如何取胜的法则:如果n=(m+1)*r+s,(r为任意自然数,s<=m),那么先取者要拿走s个物品,如果后取者拿走k(k≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)*(r-1)个,以后保持这样的取法,那么先取者肯定获胜。
总之,要保持给对手留下(m+1)的倍数,就能最后获胜。
这个游戏还可以有一种变相的玩法:两个人轮流报数,每次至少报一个,最多报十个,谁能报到100者胜。
(二)威佐夫博奕(WythoffGame)有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
这种情况下是颇为复杂的。
我们用(ak,bk)(ak≤bk,k=0,1,2,...,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,奇异局势有如下三条性质:1、任何自然数都包含在一个且仅有一个奇异局势中。
由于ak是未在前面出现过的最小自然数,所以有ak>ak-1,而bk=ak+k>ak-1+k-1=bk-1>ak-1。
所以性质1成立。
2、任意操作都可将奇异局势变为非奇异局势。
事实上,若只改变奇异局势(ak,bk)的某一个分量,那么另一个分量不可能在其他奇异局势中,所以必然是非奇异局势。
如果使(ak,bk)的两个分量同时减少,则由于其差不变,且不可能是其他奇异局势的差,因此也是非奇异局势。
3、采用适当的方法,可以将非奇异局势变为奇异局势。
假设面对的局势是(a,b),若b=a,则同时从两堆中取走a个物体,就变为了奇异局势(0,0);如果a=ak,b>bk,那么,取走b-bk个物体,即变为奇异局势;如果a=ak,b<bk,则同时从两堆中拿走ak-ab-ak个物体,变为奇异局势(ab-ak,ab-ak+b-ak);如果a>ak,b=ak+k,则从第一堆中拿走多余的数量a-ak即可;如果a<ak,b=ak+k,分两种情况,第一种,a=aj (j<k),从第二堆里面拿走b-bj即可;第二种,a=bj(j<k),从第二堆里面拿走b-aj即可。
从如上性质可知,两个人如果都采用正确操作,那么面对非奇异局势,先拿者必胜;反之,则后拿者取胜。
那么任给一个局势(a,b),怎样判断它是不是奇异局势呢?我们有如下公式:ak=[k(1+√5)/2],bk=ak+k(k=0,1,2,...,n方括号表示取整函数)奇妙的是其中出现了黄金分割数(1+√5)/2=1。
618...,因此,由ak,bk组成的矩形近似为黄金矩形,由于2/(1+√5)=(√5-1)/2,可以先求出j=[a(√5-1)/2],若a=[j(1+√5)/2],那么a=aj,bj=aj+j,若不等于,那么a=aj+1,bj+1=aj+1+j+1,若都不是,那么就不是奇异局势。
然后再按照上述法则进行,一定会遇到奇异局势。
(三)尼姆博奕(NimmGame)有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
这种情况最有意思,它与二进制有密切关系,我们用(a,b,c)表示某种局势,首先(0,0,0)显然是奇异局势,无论谁面对奇异局势,都必然失败。
第二种奇异局势是(0,n,n),只要与对手拿走一样多的物品,最后都将导致(0,0,0)。
仔细分析一下,(1,2,3)也是奇异局势,无论对手如何拿,接下来都可以变为(0,n,n)的情形。
计算机算法里面有一种叫做按位模2加,也叫做异或的运算,我们用符号⊕表示这种运算。
这种运算和一般加法不同的一点是1+1=0。
先看(1,2,3)的按位模2加的结果:1=二进制012=二进制103=二进制11⊕———————0=二进制00(注意不进位)对于奇异局势(0,n,n)也一样,结果也是0。
任何奇异局势(a,b,c)都有a⊕b⊕c=0。