取石子游戏类分析的分析讨论.ppt_第1页
取石子游戏类分析的分析讨论.ppt_第2页
取石子游戏类分析的分析讨论.ppt_第3页
取石子游戏类分析的分析讨论.ppt_第4页
取石子游戏类分析的分析讨论.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

“取石子游戏问题”的几种变形及其解法探讨,长沙市雅礼中学 朱全民,Bash Game,问题描述: 只有一堆n个石子,两个人轮流取石子,规定每次至少取1个,最多取m个。最后取光者得胜。,分析,1.n = m+1时,先手显然必败。 2.n = (m+1)x+y时,先手先取y个,若对手取k个则先手再拿走m+1-k个。 3.总能保证n能被(m+1)整除,所以最终先手必胜。当y为0时,后手必胜。,实例,n = 7,m = 3 (x,y)表示当前石子数和下次拿走的石子数。 (7,3)-(4,y)-(4-y,4-y):先手获胜。 n = 8, m = 3 第一步无论先手去什么,后手总可以将石子数变为4,无论先手再下步取什么,后手总能将剩下的石子一次取完。,问题变形,(SLPC2009) 只有一堆n个石子,两人轮流取石子,规定每次取1到20个。后手的策略是:如果当前石子数小于等于20个则全部拿走,否则若先手取了k个,则后手取ak个。最后取光者得胜。先手是否有必胜策略?,分析,n不被21整除 :使用同样策略,必胜。 n被21整除: n=21,必败。 存在某个k,使得k + ak不被21整除 : 第一步拿掉k个,然后对方会拿掉ak个,剩下n-k-ak个 ,到达n不被21整除的状态,因此必胜。 其它情况,必败。,Wythoff Game,问题描述: 有两堆各若干个石子,两个人轮流从某一堆或同时从两堆中取同样多的石子,规定每次至少取一个,多者不限,最后取光者得胜。,方法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)为必败态时,对于所有cb, f(a ,c)必胜。 因此, 对于n,所有状态中必败的状态是o(n)级别的,我们可以不断寻找必败态,利用这些状态更新其它状态。复杂度为o(n2)。,小规模情况,如果甲面对(0,0),那么甲已经输了,这种局势我们 称为必败态。前几个必败态是: (0,0) (1,2) (3,5) (4,7) (6,10) (8,13) (9,15) (11,18) (12,20) 1=2-1, 2=53, 3=74, 4=106, 5=138, 6=15-9,7=18-11, 8=20-12,结论,设第i个必败态为(xi , yi),有,,思考题,有三堆石子,分别为a, b, c颗。有两个人在做如下游戏:游戏者任意拿走其中一堆石子,再在剩下的两堆里任取一堆任意分成两堆(每堆至少1颗)。两人轮流如此,谁无法这样做就算输了。 输入格式: 有n组数据:每一行三个数a, b, c,满足1a,b,c1,000,000,000。 输出格式: 对应n行:“1”先手赢;“0”后手赢。,递推,设f(a,b,c)表示状态(a,b,c)的胜负: f(a,b,c)=1为胜局,表示先手胜,f(a,b,c)=0为败局。 f(a,b,c)可以递推计算: 若存在1ka-1使得f(k,a-k,b)=0或f(k,a-k,c)=0 或存在1kb-1使得f(k,b-k,a)=0或f(k,b-k,c)=0 或存在1kc-1使得f(k,c-k,a)=0或f(k,c-k,b)=0 那么f(a,b,c)=1否则f(a,b,c)=0。,小规模情况,f(a, b, c)必败点如下: f(1,1,1),f(1,1,3),f(1,3,1),f(1,3,3); f(2,2,2); f(3,1,1),f(3,1,3),f(3,3,1),f(3,3,3); f(4,4,4); f(5,1,1),f(5,1,3),f(5,3,1),f(5,3,3); f(6,2,2); f(7,1,1),f(7,1,3),f(7,3,1),f(7,3,3);,找出规律,a=1,3,5,7,(b ,c)=(1,1),(1,3),(3,1),(3,3), a=2,6,(b ,c)=(2,2), a=4,(b ,c)=(4,4), 分析a的特点 : 1)a=1,3,5,7都是奇数,b 2)a=2,6是偶数,它只含1个2 3)a=4是偶数,但它含2个2 分析b,c的特点 : b ,c特点直接与a的特点相关。,Nimk游戏,问题描述: 两人轮流对N堆石子进行操作,每堆分别有Pi颗。每人每次可以从最多K堆中取走任意多颗石子,但至少要取走一颗石子。谁取到最后一颗谁胜利。什么情况下先手必胜,什么情况下后手必胜,预备知识,定义:如果一个局面先手必胜,就称之为N局面,反之称之为P局面。Nimk问题当K=1时就是经典的Nim问题。 XOR运算为对二进制进行逐位不进位加法(对每一位结果mod 2)。 Nim问题的解法是:对于一个局面,令S=P1 XOR P2 XOR P3 XOR XOR Pn。若S=0则为P局面,否则为N局面。,证明,若当P1=P2=.=Pn=0时,S=0,满足终状态是P局面。 若S=0,即P1 XOR XOR Pn=0,若取堆i中的石子,Pi-Pi, S-S,PiPi,则Pi XOR Pi0。所以S XOR Pi XOR Pi=S=0,即S=Pi XOR Pi0。满足P局面的所有子局面都是N局面。 若S0,设S的二进制位是A1An,考虑第一位是1的。在P中取出该位同是1的,不妨设为P1。可知P1 XOR SP1,令P1=P1 XOR S。可知P1 XOR P2 XOR XOR Pn=0。即N局面存在至少一个子局面是P局面。,推广到k1,K=2 3 1 1 5 1 0 1 10 1 0 1 0 15 1 1 1 1 2 2 0 0 (mod 3) 所以这是N局面,第一步取10-6 15-7可以到达一个P局面3 5 6 7。 3 1 1 5 1 0 1 6 0 1 1 0 7 0 1 1 1 0 0 0 0 (mod 3),MisreNim,基本规则同Nim Game问题,胜负判定是谁不能继续取石子,谁就赢了。,分析,1)所有石子堆的数目都为1: 显然,若有偶数堆石子堆,则必胜,否则必败。 2)如果恰好只有一堆石子数目大于1。 我们可以把这堆石子取完或者取得只剩下1,使得只剩下奇数堆数目为1的石子留给对方,由1),必胜。 3)如果有至少2堆石子的数目大于1。 考虑值: 若值不为0,则按照NimGame走法取石。这样,当对手某次取完石子后,肯定会出现2)的情况,则必胜。,证明,按照NimGame法则取完石子后,必定会给对手留下值为0的局面。因此不可能给对手留下2)的局面(容易证明,2)局面的值肯定不为0),而对手一次最多将一堆石子数大于1的石子堆处理掉。因此2)的情况肯定会出现。 相反,若值为0,则无论如何走都会给对方留下2)或3)的情况,必败。,实例,n = 4, 1,1,2,2 第一步若拿掉一堆为2的石堆,则只剩一堆1的石堆。必败。 若拿掉一堆为1的石堆,对方也拿掉一堆为1的石堆,无论我们接下来怎么取,都只剩一堆1的石堆。必败。 在一堆为2的石堆中拿掉一颗石子,只剩一堆1的石堆。必败。 n = 4,1,1,2,3 我们可以在3的石堆中拿掉一颗石子,变为一个xor值为0的必败状态,所以必胜。,A stone game,一堆石子有n颗,两个人轮流从中取石子,第一个人第一步最多取n-1颗,接下来每一步,假设上一步取了x颗,当前取石子的人最多可以取k*x颗,当然一个人不能一颗石子也不取。取走最后一颗石子的人获胜。假设两个人都使用最优策略,请问对于给定的n,k先手能否获胜?,分析,定义x为绝对必败态,当且仅当无论何种情况下只要走到了这个状态,那么先手必然失败的状态。 假设前1i-1个绝对必败态p1pi-1(p1=1)。 pi-1+1,pi-1+2,pi-1+m都是必胜态的充分条件是:k*mpi-1。(先手可以走到pi-1的状态同时第二个人不能一次把所有石子拿走 ),分析,那么是不是m+1就是必败的呢,事实上我们也可以选择不直接跳到pi-1去,这时问题转化成了一个(x-pi-1)的子问题,即看谁会被迫先走到pi-1的绝对必败态去 。 接下来的第一个必败态是pi-1+pj,其中pi-1 + pj=m。,实例,当k=10时,假设当前已经求出的必败态集合是 2 3 4 5 6 7 8 9 10 11 13 15 17 19 21 24 27 30 33 37 41 46 51 57 63 70 77 85 94 104 115 。 我们要求后一个必败态,m = (115 / 10) = 11 , pj = 13 , pj - 1 = 11; 显然从116-126都是必胜的,他们可以转化到115这个必败态,那127呢?我们可以取1个石子,转移到126,显然这时126无法取到足够多的石子转移到115,它成为必败态,于是127也是必胜态。而128 = 115 + 13 则成为了必败态,因为无论是转移到127还是126它都使下一个状态必胜,这里的pj = 13 , pi-1 = 115 ,所以 pi =128。,SGU429,有n堆石子,将这n堆石子摆成一排。游戏由两个人进行,两人轮流操作,每次操作者都可以从最左或最右的一堆中取出若干颗石子,可以将那一堆全部取掉,但不能不取,不能操作的人就输了。 问:对于任意给出一个初始一个局面,是否存在先手必胜策略。,分析,设fleftlr表示对于Al,Ar当Al取多少时(其余的A值不变),这个状态是必败的。同理可设frightlr。 只考虑(Al,Ar)的组合,我们说(X,Y)是个必败态当且仅当X,Al+1,Ar-1,Y是一个先手必败的状态 。,分析,首先得到2个初始的必败态,即(0,frightl+1r)和(fleftlr-1, 0),同时必败态应满足以下条件: 每行有且仅有一个必败态。 每列有且仅有一个必败态。 这是因为如果(p,x),(p,y)都是必败态,不妨设x=y,那么(p,y)可以转移到(p,x)去,矛盾。,计算,设L=fleftij-1,R=frightij-1,x=Aj,则fleft ij由以下方式确定:不妨设LR, 当xL时,fleftij=x。 同理可确定frightij。,实例,frightl+1r=8,fleftlr-1=6。 失败状态为:(0,8),(6,0),(1,1),(2,2),(7,6),(8,7),(9,9),(10,10)。,SPOJ4060,有n个石子放成一堆。A和B轮流操作,A先手。操作为投掷一枚硬币,如果正面朝上、则从石子堆中取出一枚石子。A有P的概率投出他想投的面,B有Q的概率投出他想投的面。(P,Q0.5)问A赢的期望。,分析,A先手,双方都希望投正面,A,B得到石子的概率分别是: PR1 = p/(1-(1-p)(1-q); (等比求和) PR2 = (1-p)q/(1-(1-p)(1-q) B先手,双方都希望投正面,A,B得到石子的概率分别是: PR3 =(1-q)p/ (1-(1-p)(1-q) PR4 = q/(1-(1-p)(1-q);,分析,A先手,双方都希望投反面,A,B得到石子的概率分别是: PR5 = (1-p)/(1-pq); PR6 = P(1-q)/(1-pq); B先手,双方都希望投反面,A,B得到石子的概率分别是: PR7 = q(1-p)/(1-pq); PR8 = (1-q)/(1-pq);,分析,设fn表示剩n个石子,A先手,A获得胜利的概率,gn为B先手,A获得胜利的概率。 fn-1 = gn-1时,双方都希望投反面(都希望下步自己先手), fn = PR6*fn-1 + PR5*gn-1 gn = PR8*fn-1 + PR7*gn-1 fn-1 gn-1时, fn = PR2*fn-1 + PR1*gn-1 gn = PR4*fn-1 + PR3*gn-1。,Staircase Nim,问题描述: 游戏开始时有N堆石子排成一排,从左至右编号为1到n。游戏者在每次操作时可以将编号为j(1=j=n)上的1个以上的石子移动到编号为j-1的石子堆上。游戏者轮流操作,将最后一枚石子移至编号为0的石子堆的人获胜。,一个很有趣的性质,偶数编号堆中的棋子个数不会影响局面的输赢状态。因为如果一个棋手将一些棋子从偶数编号堆移到奇数编号的堆中,那么他的对手总是可以将相同数目的棋子从这个奇数编号的堆中移动到编号更小的偶数编号堆中。移动偶数编号堆中的棋子并不会让对手无法移动。因此,一旦有棋子从奇数编号的堆中移动到偶数编号的堆中,那么这些棋子是不会影响局面的胜负状态的。,结论,Staircase Nim中的一个局面(H0, H1, Hm)是先手胜局面,当且仅当其奇数编号棋子堆在Nim游戏中是一个先手胜局面。 因为根据上面的分析可知,在Staricase Nim中从奇数编号的堆中移动一些棋子到偶数编号的堆中,相当于在Nim游戏中将一些棋子从堆中拿走。因此判断Staircase Nim的一个局面是否是先手必胜局面,只需要判断奇数堆异或是否大于0,如果大于0,那么先手必胜,否则先手必败。,Take&break,问题描述: 有n堆石子,每次可以拿走一堆石子,然后放入两堆规模更小的石堆(可以为0),谁不能继续操作就输了。,分析,fi表示还剩一堆i颗的石子堆的状态,f(i,j)表示两堆的状态,依次类推。 根据SG函数的定义有fi = minnN | n f (p,q) for i p 0 且 i q 0 我们可以递

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论