古老石子游戏取wythoff_第1页
古老石子游戏取wythoff_第2页
古老石子游戏取wythoff_第3页
古老石子游戏取wythoff_第4页
古老石子游戏取wythoff_第5页
已阅读5页,还剩14页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

始为非平衡的游戏中取胜;玩家B(后手)能够在初始为平衡的游戏中取胜。WythoffGame玩法三(2堆石子每次从一或两堆取一样数目的石子小数约等于0.61803398875,其倒数是(1+sqrt(5))/2,约等于1.61803398875。Ak=[k*(1+sqrt(5.0)/2]Bk=Ak+Dimnum(100)AsDimakAsInteger,bkAsSubupdata(aAsInteger,bAsInteger)ak=a:bk=bText1.Text=Str(ak)Text2.Text=EndSubDimaAsInteger,bAsInteger,iAsInteger,tAsIntegerDimflagAsBooleanIfak=0Andbk>0Label4.Caption=Label4.Caption+"("+Str(0)+","+Str(bk)+")"Text5.Text=Str(0)Text6.Text=Str(bk)bk=0EndIfak>0Andbk=0Label4.Caption=Label4.Caption+"("+Str(ak)+","+Str(0)+")"Text5.Text=Str(ak)Text6.Text=Str(0)ak=0EndIfak=bkLabel4.Caption=Label4.Caption+"("+Str(ak)+","+Str(ak)+")"Text5.Text=Str(ak)Text6.Text=Str(ak)ak=0:bk=0EndIfak=0Andbk=0ThenCallupdata(0,0)Label6.Caption=Label6.Caption+":Loser!"Label7.Caption=Label7.Caption+":Winer!"ExitSubEndflag=FalseFori=0To60Ifi=akIfnum(ibkThen'不小心进入了奇异局势,只能瞎搞了a=Int(Rnd()*ak)+1Text5.Text=Str(a)Text6.Text=Callupdata(ak-a,bk-a)Ifbk>num(i)ThenIfnum(i)=0ThenText5.Text=num(i))+num(t))+

Text6.Text=Label4.Caption=Label4.Caption+"("+Str(1)+","+Str(1)+")"Callupdata(ak-1,bk-1)Text5.Text=Str(0)Text6.Text=Str(bk-num(i))Label4.Caption=Label4.Caption+"("+Str(0)+","+Str(bkCallupdata(ak,num(i))EndIft=bk-Ift<1Thent=Text5.Text=Str(ak-num(t))'a[b-a],b-a+a[b-a]Text6.Text=Str(ak-num(t))Label4.Caption=Label4.Caption+"("+Str(ak-num(t))+","+Str(akCallupdata(num(t),bk-ak+num(t))EndIfEndIfIfnum(i)=bkThenIfak>iThenText5.Text=Str(ak-i)Text6.Text=Str(0)Label4.Caption=Label4.Caption+"("+Str(ak-i)+","+Str(0)+")"Callupdata(i,num(i))Text5.Text=Str(ak-(num(i)-Text6.Text=Str(ak-(num(i)-Label4.Caption=Label4.Caption+"("+Str(ak-(num(i)-i))+","Str(ak-(num(i)-i))+Callupdata(num(i)-i,bk-ak+(num(i)-i))EndIfEndIfEndEndSubPrivateSubCommand1_Click()Command3.Enabled=FalseCommand4.Enabled=FalseDimaAsIntegerbAsIntegera=b=IfIfa<0Ora>akThenExitSub Ifb<0Orb>bkThenExitSubIfa=0Andb=0ThenExitIfa>0Andb>0Anda<>bThenExitLabel5.Caption=Label5.Caption+"("+Str(a)+","+Str(b)+")"Callupdata(ak-a,bk-b)If0=akAnd0=bkThenCallupdata(0,0)Label6.Caption=Label6.Caption+":Winer!"Label7.Caption=Label7.Caption+":Loser!"ExitSubEndIfEndPrivateSubDimkAsIntegeraAsIntegerbAsInteger k=Int(Rnd()*30+a=Int(k*(1+Sqr(5#))/b=a+Callupdata(a,b)Command4.Enabled=FalseCommand1.Enabled=TrueEndPrivateSubDimaAsInteger,bAsInteger,tAsIntegeraInt(Rnd*505'b=Int(Rnd()*50+Ifa>bThent=a:a=b:b=tCallupdata(a,b)Command3.Enabled=FalseCommand1.Enabled=TrueEndPrivateSubCommand5_Click()DimkAsIntegerForFork=0Toak=Int(k*(1+Sqr(5#))/2)bk=ak+kList1.AddItemStr(ak)+ "+NextEndPrivateSubDimkAsInteger,aAsInteger,bAsForFork=0Toa=Int(k*(1+Sqr(5#))/b=a+knum(a)=NextEnd领域性质这种情况下是颇为复杂的。我们用(ak,bk)(akbkk=0,1,2,...,n)表示两堆物品的数量并称其为局势,可以看出,a0=b0=0,ak是未在前面出现过的最小自然数,而bk=ak+k。aka[k]a[k-1]bk=a[k]ka[k-1]ka[k-1]k1b[k-1]>a[k-1]。所以性质1成立。假设面对的局势是(a,b),baa个物体,就变为了奇异局势(0,0);a=ak,b>bkb-bk个物体,即变为奇异局势;aakbbka-a[b-a]个物体变为奇异局势(a[b-a]b-a+a[b-a]);a>ak,b=ak+k则从第一堆中拿走多余的数量a-ak即可;aak,bakk,分两种情况,第一种,a=aj(jk)bbj即可;第二种,a=bjk)baj30 (0,k),(k,0),(k,k)的格点;然后找y=x上方未被划去的格点,标出(1,2),然后划去(1,k),(k,2),(1+k,2+k),同时标出对称果只列出a<=b的必败态的话,前面的一些是(0,0),(1,2),(3,5),(4,7),(6,10),…a[m]<a[k+1]),则可再拿成,有,解方程得1:(a,b)(ba)的胜负性是相同的(ab)(ab)是必胜态,那么将必胜策略中所有的操作,对第一堆的变为第二堆,对第二堆的变为第一堆,就构成(b,a)的必胜策略2(ab)xayb,(x,b)(ay)是必胜态。xaybxy(ab)1,(x,b)(a,y)xayb(x,b)(ay)(ab)是必胜态,矛盾。故(x,b)和(a,y)均为为必胜态。3:(ab)d0,(adbd)是必胜态。24:在所有的必败态中,每个数字恰巧出现一次。1,对于对称的状态我们只需要处理其中一个,而两个数不会相同(相同的状态必然是必胜态),于是1346此,对任意i,必有(k-j,k+i-j)或(k-j,k+i)=0,(0<j<k)必败3i的取值(其实是无穷多个,jk-1i有无数种)i1,i2,i3使得m,k+i2)必败。显然与定理2矛盾,因此不存在这样的数k。4,矩阵中每个数字恰巧出现一次,而按照这个矩阵的定义,第二列的数总比同行第一列大,第一列又按6ii1(a[p],a[p]p)(a[p]p行第一个数,pi)均为必败态,那么考察i(a[i],a[i]delta)deltaideltai,一定可以通过一次操作变为前面出现过的必败态,那么这个状态就是必胜态。下面由delta>=i,我们来说明delta=i。首先,我们考虑从第一堆中取出p个石子,得到状态(a[ip,a[i]-pdelta),由定理5,比a[i]小的数都在之前出现过,若a[i]p出现在某一行的第一列,由于存在必败态(a[ip,a[ipdddelta),故(a[i]p,a[i]p+delta)一定为必胜态(定理2);若a[i]p出现在某一行的第二列,由于第一列是单增的,因而其对应的第一列数必小于a[i]+delta,故而也可推出其状态为必胜态。于是,(a[i],a[i]delta)(a[i]a[idddelta)有关。不难看出,deltai时恰为必败胜态,因而(a[i],a[i]+delta)为必败态,由定理2及定理4可得,原命题成立。即矩阵中第i行第二列的数等于同行第一列的数加上i。下面的过程可能需要比较高的数学技巧,首先给出我们需要的一个重要定理([x]x的整数部分,{x}x{x}x7(Betty定理)A,B1/A1/B1P[AtBetty定理中“于是我们得到每一行第二列的数为我们的目的是要让Betty定理,我们得到最终我们需要的定理:定理8:上述矩阵中每一行第一列的数为[Bettya、b1/a+1/b=1P={【na|n为任意的正整数},Q={【nb|n为任意的正整数},PQ是Z+P∩QP∪QZ+。结果。因此任一个整数至多在集合P或Q中出现一次。<m/(k+1)1/am/kn/(k+1)<1/bn/k。相加起来得(m+n)/(k+11(m+n)/kkm+nk+1。这与的子集。(反证法)Z+\(P∪Q)km、n使得【ma】<k<【(m+1)a】、【nb】<k<【(n+1)bmak(

温馨提示

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

最新文档

评论

0/150

提交评论