Nim取子游戏
来源:互联网 发布:解析域名 英文 编辑:程序博客网 时间:2024/06/06 08:54
据说,Nim(拈),源自中国,经由被贩卖到美洲的奴工们外传。辛苦的工人们,在工作闲暇之余,用石头玩游戏以排遣寂寞。后来流传到高级人士,则用便士(Pennies),在酒吧柜台上玩。
最有名的玩法,是把十二枚便士放成3、4、5三列,拿光铜板的人赢。后来,大家发现,先取的人只要在3那列里取走2枚,变成了1、4、5,就能稳操胜券了,游戏也就变得无趣了。于是大家就增加列数,增加铜板的数量,这样就让人们有了毫无规律的感觉,不易于把握。
最有名的玩法,是把十二枚便士放成3、4、5三列,拿光铜板的人赢。后来,大家发现,先取的人只要在3那列里取走2枚,变成了1、4、5,就能稳操胜券了,游戏也就变得无趣了。于是大家就增加列数,增加铜板的数量,这样就让人们有了毫无规律的感觉,不易于把握。
直到本世纪初,哈佛大学数学系副教授查理士•理昂纳德•包顿(Chales Leonard Bouton)提出一篇极详尽的分析和证明,利用数的二进制表示法,解答了这个游戏的一般法则。
我们先从一个简单的问题还是讨论,把所有铜板分为两堆。(1)假设这两堆铜板数量不一样,玩家1把数量多的一堆拿走一部分,使得两堆铜板的数量一样多,接下来,玩家1只需要模仿玩家2从另一堆中取走相同的铜板就能获胜,也就是说玩家1必胜。(2)加入两堆铜板数量一样,玩家2只要模拟玩家1,从另一堆中取走相同的铜板就能获胜,这种情况玩家2必胜。
那么假设是把铜板分成k堆呢?
我们把每一堆铜板的数量用二进制数表示,假设k = 4,每一堆为:7,9,12,15,用二进制表示为:
0111
1001
1100
1111
每一位的1加起来:3323,因为每一位的个数都不相同,所以,玩家1必胜。玩家1只需要在第一次取走(1101)2=13个数,以后每一次玩家2取走后,玩家1把石子变回平衡就能实现必赢的局面了。
- Nim取子游戏
- Nim取子游戏
- Nim取子游戏 (SG函数)
- nim取子游戏 阶梯博弈
- poj 2234 博弈论Nim取子游戏
- 组合数学——Nim取子游戏
- 组合数学——Nim取子游戏
- 取石子游戏NIM
- Nim取石子游戏
- [转]NIM取石子游戏
- 类Nim取石子游戏
- 取石子游戏详解NIM
- 组合数学——Nim取子游戏 太有趣了
- NIM游戏(取m堆游戏)
- 博弈论 NIM取子问题 组合数学
- 【转】博弈论--取物品和Nim游戏
- HDU2176:取(m堆)石子游戏(Nim)
- HDOJ 2516 取石子游戏 Fibonacci Nim
- How WebKit Loads a Web Page
- cannot import name usrp解决方法
- 螺旋队列
- android MetadataRetriever
- xcode在调试时无法查看变量值
- Nim取子游戏
- FTP 命令模式下 PASV OR PORT
- windows 和 linux 互传文件
- Tomcat 报错:Exception starting filter struts2
- sql server 外键 更新(删除)规则
- jQuery 入门教程(2): Selectors
- 存储过程在sqlplus中的操作
- 查看端口命令
- 关于mysql函数GROUP_CONCAT