威佐夫博奕
2015-12-17 21:34
183 查看
接上次的巴什博奕之后,我在说说威佐夫博奕。
仍然先简单介绍一下:有两堆物品若干,数量可以相同可以不同,两个人轮流从某一堆任意取或是同时从两堆中取同样多的物品,规定每次至少取一个,与巴什博奕不同,这里没有规定取出的物品的上限,最后取完物品的人获得游戏胜利。
这种情况比之前的巴什博奕略微复杂一点。
我们使用(mk, nk)(假定mk<nk,k是自然数)表示两堆物品各自的数目,同时,在这里我们定义(mk, nk)为此时的局势。如果其中一个人面对的是(0, 0)那么说明他已经输了,我们将(0, 0)这样的定义为奇异局势。然后,在这之前的非奇异局势有:(1, 2),(3, 5),(4, 7),(6, 10),(8, 13),(9, 15),(11, 18),(12, 20)……
对于奇异局势,我们有这样的一个性质:nk=mk+k,且mk是前k项里面未出现的数字中最小的。
奇异局势另外3个性质:
1、任何非零自然数都包含在一个且仅有一个奇异局势中。
2、任意操作都能将奇异局势变成非奇异局势。
3、采用适当的方法能将非奇异局势变为非奇异局势。
假设现在的局势是(m, n),(mk, nk)是一个奇异局势(假定m<=n,mk<=nk)(k是任意自然数)
根据题目设定,我们有一下几种情况:
如果m=n,那么一个人只用同时从两堆中取走m个物体,就变为了奇异局势(0, 0),这样一来下一个人就算输了。
如果m=mk,n>nk,那么,一个人取走n-nk个物体,此时就变为奇异局势。
如果m=mk,n<nk,那么一个人同时从两堆中拿走一定的数量的物品,最后一定能得到mk与nk的差值是n-m的一个奇异局势。
如果m>mk,n=mk+k,那么一个人从第一堆中拿走多余的数量m-mk的物品就仍然是一个奇异局势。
如果m<mk,n=mk+k,此时有两种可能:
m=mi(i<k),那么一个人从第二堆里面拿走n-ni就仍然是一个奇异局势。
或者
m=ni(i<k),那么一个人从第二堆里面拿走n-mi还是一个奇异局势。
从性质一:不可能存在n!=nk,并且m!=mk的情况。也就是说,一定能找到一个nk或者是mk使得n=nk或者是m=mk。
综合性质二和三:两个人如果都想采取最好的操作,那么第一个面对奇异局势的人一定在整个游戏的过程中都是面对的奇异局势,因为无论他怎么取,第二个人一定能找到一个方法把此时的局势变成奇异局势。
也就是说,对于一个非奇异局势,先拿的人一定获得游戏的胜利。
根据一定的推导(在这里省去了),对于一个局势(m, n),如果它是一个奇异局势,那么一定有
m=[k*(1+sqrt(5)) / 2],并且n=m+k。(特别说明:[……]表示取……的整数,类似于(int)(……))
Problem Solved!
特此感谢编辑百度百科各位大神。
仍然先简单介绍一下:有两堆物品若干,数量可以相同可以不同,两个人轮流从某一堆任意取或是同时从两堆中取同样多的物品,规定每次至少取一个,与巴什博奕不同,这里没有规定取出的物品的上限,最后取完物品的人获得游戏胜利。
这种情况比之前的巴什博奕略微复杂一点。
我们使用(mk, nk)(假定mk<nk,k是自然数)表示两堆物品各自的数目,同时,在这里我们定义(mk, nk)为此时的局势。如果其中一个人面对的是(0, 0)那么说明他已经输了,我们将(0, 0)这样的定义为奇异局势。然后,在这之前的非奇异局势有:(1, 2),(3, 5),(4, 7),(6, 10),(8, 13),(9, 15),(11, 18),(12, 20)……
对于奇异局势,我们有这样的一个性质:nk=mk+k,且mk是前k项里面未出现的数字中最小的。
奇异局势另外3个性质:
1、任何非零自然数都包含在一个且仅有一个奇异局势中。
2、任意操作都能将奇异局势变成非奇异局势。
3、采用适当的方法能将非奇异局势变为非奇异局势。
假设现在的局势是(m, n),(mk, nk)是一个奇异局势(假定m<=n,mk<=nk)(k是任意自然数)
根据题目设定,我们有一下几种情况:
如果m=n,那么一个人只用同时从两堆中取走m个物体,就变为了奇异局势(0, 0),这样一来下一个人就算输了。
如果m=mk,n>nk,那么,一个人取走n-nk个物体,此时就变为奇异局势。
如果m=mk,n<nk,那么一个人同时从两堆中拿走一定的数量的物品,最后一定能得到mk与nk的差值是n-m的一个奇异局势。
如果m>mk,n=mk+k,那么一个人从第一堆中拿走多余的数量m-mk的物品就仍然是一个奇异局势。
如果m<mk,n=mk+k,此时有两种可能:
m=mi(i<k),那么一个人从第二堆里面拿走n-ni就仍然是一个奇异局势。
或者
m=ni(i<k),那么一个人从第二堆里面拿走n-mi还是一个奇异局势。
从性质一:不可能存在n!=nk,并且m!=mk的情况。也就是说,一定能找到一个nk或者是mk使得n=nk或者是m=mk。
综合性质二和三:两个人如果都想采取最好的操作,那么第一个面对奇异局势的人一定在整个游戏的过程中都是面对的奇异局势,因为无论他怎么取,第二个人一定能找到一个方法把此时的局势变成奇异局势。
也就是说,对于一个非奇异局势,先拿的人一定获得游戏的胜利。
根据一定的推导(在这里省去了),对于一个局势(m, n),如果它是一个奇异局势,那么一定有
m=[k*(1+sqrt(5)) / 2],并且n=m+k。(特别说明:[……]表示取……的整数,类似于(int)(……))
Problem Solved!
特此感谢编辑百度百科各位大神。
相关文章推荐
- 100道面试题
- IO总结
- android WebView加载 assets html文件
- 信息学院研究生学硕党支部请假制度
- 信息学院研究生学硕党支部请假制度
- 手机游戏如何运用AARRR模型进行推广运营?
- nginx源码分析
- java堆内存探究
- 漫谈 Clustering (番外篇): Vector Quantization
- MVC中数据验证
- Unity中鼠标左键按下,拖拽物体移动
- iOS开发中打开本地应用、打开appStore应用、给app评分功能实现
- 朋友总理的ios面试题
- 转-JS之Window对象
- AspJpeg组件,按宽高比例,真正生成缩略图
- 反射知识整理(一)
- Android 最简单的导航栏实现
- 多线程编程 注意事项汇总 待续..
- setTimeout与setInterval参数之String
- 漫谈 Clustering (5): Hierarchical Clustering