游戏开始时有许多硬币任意分布在楼梯上,共n阶楼梯从地面由下向上编号为0到n。游戏者在每次操作时可以将楼梯j(1<=j<=n)上的任意多但至少一个硬币移动到楼梯j-1上。游戏者轮流操作,将最后一枚硬币移至地上的人获胜。

分析:
这个问题与nim游戏的区别在于移走的硬币不是被扔掉而是被放进了另一堆硬币之中,考虑能否将这一部分楼梯排除考虑范围。奇数号楼梯只能将硬币扔到偶数号楼梯之中,同样偶数号楼梯上的硬币也只会被扔上奇数号楼梯。只考虑奇数号楼梯nim,若偶数楼梯只作容器,那么游戏变为nim。当偶数号楼梯上的硬币可以将硬币移出时,我们是不是仍然可以用nim的方法判断必败状态?
将奇数台阶的硬币数nim和为0称作条件A,结束状态满足条件A;任何满足条件A的状态都到达满足条件A的状态;任何不满足条件A的状态都可以到达满足条件A的状态(nim)。因此一个状态为必败状态当且仅当它满足条件A

如果只考虑奇数位上,把奇数位上的硬币放入偶数位,看做nim的取石子游戏。
那么这是我们类似可以得到奇数位的SG函数。如果我们可以做到使SG=0.
那么如果对方在奇数位上取硬币,那么我们也类似nim在奇数位上取硬币使SG值回到0;
如果对方在偶数位上取硬币。那么我们就把他刚刚从偶数位上传到奇数位上的硬币数。
原封不动的再传回偶数位。这样就可以保持SG=0;
从而保证自己必胜~

Tips@USC:
由此可见单单是staircase nim就有多种变化
下面是给我启示的一段话:
由于只能向左移,而且不能相互交叉。我们把两个硬币之间的空间看作石子堆,一次左移相当于把某个石子堆(楼梯j)的石子移到了右边那个石子堆(楼梯j-1),最后的区间相当于最低的一层,题目实质就变成了阶梯博弈。
[Souce]http://blog.sina.com.cn/s/blog_6a6aa7830100p4nb.html
这样 对于POJ的这道题就很好理解了。
关键在于问题转化,为何可以把偶数对的转化成为Nim游戏?

台阶游戏类型1:每次移动1个,移动N位
下面模拟2个小石头的情况:
|_ _ _ _ o _ _ _ _ o _ _ _|
可以这样想,左边的石子跑到左边界,不就是单堆的Nim了?
上图可以转化成:
|o _ _ _ _ o _ _ _ _ _ _ _|
同样地对于下图,两堆的情况:
|_ _ o _ _ o _ o _ _ o _ _|
可以转化为:
|o_ _ o o _ _ o _ _ _ _ _ |
于是乎对于每两个石子之间的空隙数,可以作为Nim游戏中的石子数,简单的Nim大家都知道怎么做了.
WHY?
为何可以转换呢?我们可以知道,可以通过平移来转换成图。为何可以平移转换呢?
相当于A移动某组中左边的石子,则B移动同组中右边的石子相同距离。
同样A移动某组中右边的石子,则B移动同组中左边的石子相同距离。
这样就得到了平移的效果,于是乎,用Nim的方法就能把转化后的问题解决了。

台阶Nim游戏类型2:
在介绍的时就是类型2,移动N个石子,每次一位。这样以偶数号台阶为垃圾桶,A从奇数号(j)台阶拿走N个石子放于偶数号(j-1)台阶(相当于扔掉),B从中拿回来,放于奇数号(j-2)台阶;同理A从偶数号拿石子。在这种模型下转化成Nim游戏,对奇数号台阶异或操作。

类型3:
每次移动1个,每次1位.这不算博弈吧。我自己想的...

类型4:
每次N位,一次M个。不知道怎么做... 求解释....

转载于:https://www.cnblogs.com/yefeng1627/archive/2013/03/31/2991680.html

staircase nim 经典组合游戏相关推荐

  1. 组合游戏(分石子,nim游戏,sg)

    一.最近在学习组合游戏方面的知识,我们可以考虑这类组合游戏: (1)两个人轮流操作 (2)游戏状态有限,总能走到最终状态,且都不会出现以前的状态.即给定初始状态,游戏的胜负是可以预见的. (3)规定谁 ...

  2. 组合游戏(Nim游戏)——SG函数

    SG为0的点(必败点)能到达的肯定都是SG不为0的点(必胜点): SG不为0的点(必胜点)一定能通过某种方式到达SG为0的点(必败点). 组合游戏典型例题: 给定n堆石子以及一个由k个不同正整数构成的 ...

  3. 博弈论 1.Introduction(组合游戏基本概念、对抗搜索、Bash游戏、Nim游戏)

    1.博弈 博弈论是研究具有斗争或竞争性质现象的数学理论和方法. 每个玩家都有一个偏好,A一般是希望A赢,如果不可以的话就倾向于 平局,B一般倾向B赢,达不到的话就倾向于平局.他们的每一步组成了一个&q ...

  4. POJ 2068 Nim 组合游戏

    题目大意:有一堆石子,两伙人,围在一起坐,坐的顺序是ABABABAB....每一个人最多能取a[i]个石子,取走最后一个石子的就输了.问谁能赢. 思路:朴素的组合游戏判定问题,这个题给了数据范围,可以 ...

  5. SG函数SG定理游戏的和公平组合游戏

    公平组合游戏(Impartial Combinatorial Games) 条件: 1.两名选手交替进行操作 2.两名选手局面移动的权力相同 3.当前选手的合法移动集合至于当前的局面有关,与轮到哪名选 ...

  6. [算法] 2-4 组合游戏

      1.Nim游戏:有3堆火柴,分别为a,b,c根,记为状态(a,b,c).每次一个游戏者可以从任意一堆中拿走至少一根火柴,也可以整堆拿走,但不能从多堆火柴中同时拿走.无法拿火柴的游戏者输.   2. ...

  7. 高僧斗法--Staircase Nim

    古时丧葬活动中经常请高僧做法事.仪式结束后,有时会有"高僧斗法"的趣味节目,以舒缓压抑的气氛. 节目大略步骤为:先用粮食(一般是稻米)在地上"画"出若干级台阶( ...

  8. Poj1704:staircase nim【博弈】

    题目大意:有一个无限长的一维的棋盘,棋盘上N个格子放置着棋子.两个人轮流操作,每次操作能选择其中一个棋子向左移动,但不能越过其它棋子或者两枚棋子放在同一格中,最后不能操作的人算输,问先手是否必胜? 思 ...

  9. (组合游戏)SG函数与SG定理详解

    文章目录 前言 什么是组合游戏 必胜点和必败点的概念 Sprague-Grundy(SG)定理 SG函数 前言   好久没写博客了,上一篇博客还是去年实训写的,一是因为寒假,二是因为随着难度的加深,学 ...

最新文章

  1. vue实现动态css,Vue中如何动态绑定CSS
  2. 机器学习(二)——广义线性模型、生成学习算法
  3. 15. 三数之和 golang
  4. with open的使用
  5. 均值滤波器类型_均值滤波适用于处理什么样的噪声
  6. matlab r2010a教程,MATLAB教程R2010a(十二五)
  7. 【Flink】Flink SQL 自定义 Source format
  8. 目标检测——知识蒸馏的学习笔记
  9. php最新版本6,PHP实用函数6
  10. 分布式系统关注点(8)——99%的人都能看懂的「熔断」以及最佳实践
  11. 【2(2N+1)魔方阵 】
  12. HTML 变形(transform)、转换(transition)和动画(animation)
  13. 易语言html代码解释器,易语言执行javascript
  14. 海康威视多监控集成到同一页面
  15. apple登录服务端验证
  16. 玩转curl指令—测试简单的HTTP接口
  17. linux 拼图游戏,2020经典宝石拼图
  18. 【模式识别与机器学习】模式识别中的一些基本概念
  19. Form表单及模板引擎
  20. 【istioctl】multicluster mesh 管理源码走读

热门文章

  1. 【钉钉-场景化能力包】会展入场
  2. Mysql分页Limt
  3. Sicily2000——Toy Shopping
  4. 恒峰祥可信讲述拼多多电商店铺推广和商品推广有什么不同
  5. 直播实录|百度大脑EasyDL·NVIDIA专场 部署专家
  6. PHP内核之SAPI:Apache2 SAPI分析
  7. PHP学习之SAPI
  8. Emacs 安装配置使用教程
  9. html页面如何拉长,HTML可以拉长的logo
  10. NAO学习第二周——NAOqi Audio