游戏简介

Chomp是一个双人游戏,有m x n块曲奇饼排成一个矩形格状,称作棋盘。

----两个玩家轮流自选一块还剩下的曲奇饼,而且还要把它右边和下边所有的曲奇饼都取走(如果存在)

----先吃到左上角(1,1)那块曲奇饼的玩家为失败

如图所示

------红方选择(3,3)--->------蓝方选择(1,4)---->

----红方选择(1,2)--->-----蓝方选择(2,1)-->

------------>红方玩家只能选左上角那一块,失败

分析

首先介绍一个重要定理——策梅洛定理(Zermelo)

策梅洛定理,表明在二人参与的游戏/博弈中,如果满足:
--------游戏的步骤数有限
--------信息完备(二人都了解游戏规则,了解游戏曾经所发生过的信息)
--------不会产生平局
--------确定性(游戏中不会加入随机因素)
则先行一方有必胜策略,或者后行一方有必胜策略。

下面证明:除去 1 x 1大小的棋盘外,其他大小的棋盘,先手存在必胜策略。

证明:(反证法)

假设棋盘规模为m x n。

首先,游戏不可能产生平局。

其次,由于每一步移动至少吃掉1块曲奇饼干,因此不超过 mn 步后游戏必定结束。

由策梅洛定理,这个确定性二人有限游戏信息完备,且不存在平局,则或者先行一方有必胜策略,或者后行一方有必胜策略。

如果后手有必胜策略,使得无论先手第一次取哪个石子,后手都能获得最后的胜利。

那么现在假设先手取最右下角的石子(m,n) ,接下来后手可以取某块曲奇(a,b) 使得自己进入必胜的局面。

事实上,先手在第一次取的时候就可以取曲奇 (a,b) ,之后完全模仿后手的必胜步骤,迫使后手失败。

于是产生矛盾。因此不存在后手必胜策略,先手存在必胜策略。

注意:这个证明是非构造性存在性证明,也即只是证明了先手必胜策略的存在性,但没有构造出具体必胜策略。而且目前还没有人给出Chomp一般性的必胜策略。

其中一些简单的情况,可以找到必胜策略:

1、棋盘只有一行,但多于一格

-------先手拿去除左上角的全部即可

2、棋盘是正方形,但多于一格

-------先手选取(2,2),之后无论后手做什么,先手只要模仿即可(即关于对角线对称选取)

3、棋盘只有两行

------先手取第二行最后一个,之后无论后手选什么,先手总能采取合适的选择,使得第一行比第二行多一个

类似问题

1、三维Chomp游戏

将曲奇排成 P x Q x R 的立方体,两个玩家轮流自选吃掉一块剩下的曲奇饼,若取走的曲奇饼为 (i,j,k) ,则也要取走所有满足 i ≤ a ≤ P,j ≤ b ≤ Q , k ≤ c ≤ R 的曲奇饼(a,b,c)(如果存在)。

可以类似地将Chomp游戏扩展到任意维,并可以类似地证明,先手都存在必胜策略。

2、有限偏序集上的Chomp游戏

Chomp游戏可以推广到在任意一个存在最小元 a 的有限偏序集(S,≤)上:两名游戏者轮流选择S中的元素 x ,移走 x 以及所有 S 中比 x 大的元素。失败者是被迫选择最小元 a 的玩家。

如果  (S,≤) 有最大元素 b ,那么在偏序集上的Chomp游戏存在一个获胜策略.

3、约数游戏

给定一个大于1的自然数 N ,两个游戏参与者轮流选择N的大于1的正约数,但不可选择之前被选择过的因子的倍数(例如 N = 72,有一方之前选择了4,则之后任一方都不可以再选择36)

4、删数游戏

给定整数集合 {1,2,...n} ,两个人轮流从中选择一个数字,并将它和它的约数从集合中删除,删除最后一个数的人获胜。

以上几个游戏,类似Chomp游戏,得到结论就是无论 n 是几,都是先手必胜。

转载自:Liu言杂记

参考链接:中国大学mooc 离散数学 刘铎

 

Chomp游戏(必胜策略分析)的更多相关文章

  1. Chomp类游戏——必胜策略分析

    首先介绍一个重要定理——策梅洛定理(Zermelo) 策梅洛定理,表明在二人参与的游戏/博弈中,如果满足: --------游戏的步骤数有限 --------信息完备(二人都了解游戏规则,了解游戏曾经 ...

  2. Chomp!游戏 (组合游戏Combinatorial Games)

    http://blog.csdn.net/acdreamers/article/details/17021095 有一个n*m的棋盘,每次可以取走一个方格并拿掉它右边和上面的所有方格.拿到左下角的格子 ...

  3. [dp+博弈]棋盘的必胜策略

    链接:https://ac.nowcoder.com/acm/problem/21797来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...

  4. sqlmap Bool型&延时型 检测策略分析

    目录 sqlmap Bool型&延时型 检测策略分析 0x00 预备-queryPage() 0x01 bool型检测策略 判断依据 quick_ratio() 案例 0x02 延时型 判断依 ...

  5. JVM 分代GC策略分析

    JVM 分代GC策略分析   我们以Sun HotSpot VM来进行分析,首先应该知道,如果我们没有指定任何GC策略的时候,JVM默认使用的GC策略.Java虚拟机是按照分代的方式来回收垃圾空间,我 ...

  6. 【转】JVM 分代GC策略分析

    我们以Sun HotSpot VM来进行分析,首先应该知道,如果我们没有指定任何GC策略的时候,JVM默认使用的GC策略.Java虚拟机是按照分代的方式来回收垃圾空间,我们应该知道,垃圾回收主要是针对 ...

  7. flappy pig小游戏源码分析(1)——主程序初探

    闲逛github发现一个javascript原生实现的小游戏,源码写的很清晰,适合想提高水平的同学观摩学习.读通源码后,我决定写一系列的博客来分析源码,从整体架构到具体实现细节来帮助一些想提高水平的朋 ...

  8. 泡泡堂、QQ堂游戏通信架构分析

    http://blog.csdn.net/sodme/article/details/468327#comments ————————————————————————————————————————— ...

  9. flappy pig小游戏源码分析(3)——解剖util

    这一节我们继续高歌猛进,如果对源码中有无论无何都理解不通的问题,欢迎和我交流,让我也学习一下,我的qq是372402487. 还是按照惯例看看我们的目录结构. 我们在前两节中已经分析了game.js, ...

随机推荐

  1. 微信小程序wxml和wxss样式

    对于css不熟悉的android程序员来说,开发微信小程序面临的一个比较困难的问题就是界面的排版了.微信小程序的排版就跟wxml和wxss有关了,它们两者相当于android的布局文件,其中wxml指 ...

  2. 杂项-公司:Aspose

    ylbtech-杂项-公司:Aspose Aspose 于2002年3月在澳大利亚悉尼创建,旗下产品覆盖文档.图表.PDF.条码.OCR.CAD.HTML.电子邮件等各个文档管理领域,为全球.NET ...

  3. EasyUI 表格点击右键添加或刷新 绑定右键菜单

    例1 在HTML页面中设置一个隐藏的菜单(前提是已经使用封装的Easyui) 代码: <div id="contextMenu_jygl" class="easyu ...

  4. git切换分支保存修改的代码的方法(转载)

    转自:http://www.tonitech.com/2344.html 最近在一个原有的项目上做一次非常大的改版,底层的数据库做了很大的变化,跟现在的版本无法兼容.现在的工作除了开发最新的版本之外还 ...

  5. Cannot call value of non-function type 'UITextView'报错

    iOS里面的开发,类写到一半就报错这个.后来发现是因为重名的时候召唤对象不明确的问题.先贴代码,晚点再说 出错点 //ヒントをクリアするためのイニシャライザ init (clearStr: UITex ...

  6. lightoj1231【背包】

    题意: 有n种货币,已知每种货币的价值和数量. 给出一个k,问最多能组成k的方法.这个数量很大,需要mod 1e8+7. 思路: 额....这一题和上一篇的差不多,直接传送门: (此题很棒) 这里的话 ...

  7. linux 问题二 查看系统是32位还是64位

    方法: 1.uname -a 2.uname -m 3.file /sbin/init 4.arch 5.Settings -> Details 说明: 1. i386 适用于intel和AMD ...

  8. bzoj 3676: [Apio2014]回文串【回文自动机】

    回文自动机板子 或者是SAM+manacher+倍增,就是manacher求本质不同回文串(让f++的串),然后在SAM倍增查询对应点出现次数 #include<iostream> #in ...

  9. notepad++插件选项没有plugin manager解决

    在 https://github.com/bruderstein/nppPluginManager/releases 下载最新的PluginManager_vXXXX_UNI.zip 解压,将里面的p ...

  10. git 保存文件目录

    Ubuntu中git clone就保存在你命令行现在所在的目录里 所以最好推荐 先用cd这个命令去自己想保存的目录 之后再git clone