Chomp游戏(必胜策略分析)
游戏简介
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游戏(必胜策略分析)的更多相关文章
- Chomp类游戏——必胜策略分析
首先介绍一个重要定理——策梅洛定理(Zermelo) 策梅洛定理,表明在二人参与的游戏/博弈中,如果满足: --------游戏的步骤数有限 --------信息完备(二人都了解游戏规则,了解游戏曾经 ...
- Chomp!游戏 (组合游戏Combinatorial Games)
http://blog.csdn.net/acdreamers/article/details/17021095 有一个n*m的棋盘,每次可以取走一个方格并拿掉它右边和上面的所有方格.拿到左下角的格子 ...
- [dp+博弈]棋盘的必胜策略
链接:https://ac.nowcoder.com/acm/problem/21797来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...
- sqlmap Bool型&延时型 检测策略分析
目录 sqlmap Bool型&延时型 检测策略分析 0x00 预备-queryPage() 0x01 bool型检测策略 判断依据 quick_ratio() 案例 0x02 延时型 判断依 ...
- JVM 分代GC策略分析
JVM 分代GC策略分析 我们以Sun HotSpot VM来进行分析,首先应该知道,如果我们没有指定任何GC策略的时候,JVM默认使用的GC策略.Java虚拟机是按照分代的方式来回收垃圾空间,我 ...
- 【转】JVM 分代GC策略分析
我们以Sun HotSpot VM来进行分析,首先应该知道,如果我们没有指定任何GC策略的时候,JVM默认使用的GC策略.Java虚拟机是按照分代的方式来回收垃圾空间,我们应该知道,垃圾回收主要是针对 ...
- flappy pig小游戏源码分析(1)——主程序初探
闲逛github发现一个javascript原生实现的小游戏,源码写的很清晰,适合想提高水平的同学观摩学习.读通源码后,我决定写一系列的博客来分析源码,从整体架构到具体实现细节来帮助一些想提高水平的朋 ...
- 泡泡堂、QQ堂游戏通信架构分析
http://blog.csdn.net/sodme/article/details/468327#comments ————————————————————————————————————————— ...
- flappy pig小游戏源码分析(3)——解剖util
这一节我们继续高歌猛进,如果对源码中有无论无何都理解不通的问题,欢迎和我交流,让我也学习一下,我的qq是372402487. 还是按照惯例看看我们的目录结构. 我们在前两节中已经分析了game.js, ...
随机推荐
- Palindromic Squares
链接 分析:求出b进制以后在判是否为回文 /* ID:wanghan PROB:palsquare LANG:C++ */ #include "iostream" #include ...
- 洛谷P3354 [IOI2005]Riv 河流——“承诺”DP
题目:https://www.luogu.org/problemnew/show/P3354 状态中要记录一个“承诺”,只需相同承诺之间相互转移即可: 然后就是树形DP的套路了. 代码如下: #inc ...
- Cascaded pose regression
最近再看face alignment的相关文章,目前比较流行的算法都是基于(Cascaded pose regression,CPR)[1]的框架上做的,该算法之所以流行的原因是简单高效.CPR分为训 ...
- 查看mysql状态
命令:mysqladmin -uroot -p -h172.16.0.20 status Uptime: 14317755 Threads: 61 Questions: 187732924 Sl ...
- SDUT2161:Simple Game(NIM博弈+巴什博弈)
传送门 题意 n堆石子,每次可以取一堆至三堆任意非零石子数,取完者赢,问最后谁能赢 分析 以前我们做过NIM博弈是对一堆进行操作,现在换成了三堆,其实对于n堆都一样一堆的情况 如果最后二进制每位数的1 ...
- asp.net实现服务器文件下载到本地
1.说明 通过文件下载框实现将服务器上的文件下载到本地指定位置.这里需要指定服务器文件路径 try { string strFilePath = Server.MapPath("~" ...
- 【Tip】JavaScript
『JavaScript』 『引用网络资源』 JQuery <script src="http://code.jquery.com/jquery-latest.js">& ...
- Nginx系列篇一:linux中安装Nginx
提示: 如遇到yum或者wget的问题, 请详见--->杂集:更换centos yum源 请详见--->杂集:关于VMware中linux使用NAT模式配置 1.安装nginx需要的环境 ...
- PyQt5编程入门
1 25行的弹出式闹钟 import sys import time from PyQt5 import QtCore from PyQt5.QtWidgets import QLabel from ...
- nginx上游模块
1 概念 The ngx_http_upstream_module is used to define groups of servers that can be referenced by the ...