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

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

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

Chomp!游戏

问题:有一个n*m的棋盘,每次可以取走一个方格并拿掉它右边和上边的所有方格。拿到左下角的格子(1,1)者输,那么谁会赢呢?

先给结论:除了(1, 1)先手必败外,其他都是先手必胜。

证明如下:

根据策梅洛定理,这个问题至少有一方存在必胜策略。

如果后手必胜,也就是说无论先手取哪个石子,后手都能获得必胜策略。那么假设先手取得最右上角得石子,接下来后手通过某种方法让自己进入必胜局面。但事实上,先手在第一次取得时候就可以和后手这次取得一样,抢先进入必胜局面,与假设矛盾。

类Chomp游戏

例1:

有n张卡片,第i张纸片上写着数字i,每次可以取走一张纸片和数字是该纸片因数的纸片,那么谁会赢呢?

solve:除了n=1的情况,先手必赢。

例2:

现在有一颗含n个节点的有根树,根节点是1,每个点初始时都为白色。每次可以把任意一个白色节点到根节点经过的所有的点(包括该节点)变成黑色。谁最后把整棵树染黑了,谁就输了。

solve: 除了n=1的情况,先手必赢。

参考链接;https://blog.csdn.net/TSY_1222/article/details/83277648

原文地址:https://www.cnblogs.com/lfri/p/11626187.html

时间: 2024-10-10 17:06:21

Chomp类游戏——必胜策略分析的相关文章

Chomp游戏(必胜策略分析)

游戏简介 Chomp是一个双人游戏,有m x n块曲奇饼排成一个矩形格状,称作棋盘. ----两个玩家轮流自选一块还剩下的曲奇饼,而且还要把它右边和下边所有的曲奇饼都取走(如果存在) ----先吃到左上角(1,1)那块曲奇饼的玩家为失败 如图所示 ------红方选择(3,3)--->------蓝方选择(1,4)----> ----红方选择(1,2)--->-----蓝方选择(2,1)--> ------------>红方玩家只能选左上角那一块,失败 分析 首先介绍一个重要

(算法)游戏必胜策略

题目: 1.游戏1: 有两堆硬币,数量不定(大于0),两个人进行游戏,每个人每次可以从任意一堆取任意数量的硬币(大于0),谁拿走了最后的硬币即为胜者. 2.游戏2: 一个盒子,里面有一定数量(大于0)的巧克力和一根辣椒 ,两个人进行游戏,每个人每次可以从中拿出1或2或3颗巧克力,辣椒只能最后拿,谁最后拿走了辣椒就得吃掉她,也即输了. 思路: 先提供一下答案: 游戏1: 如果两堆硬币数量相等,则让对方先取,然后再自己取,取出数量多的那一堆的硬币,使得两堆硬币数量相等,依次进行. 如果两堆硬币数量不

网狐6603 cocos2dx 棋牌、捕鱼、休闲类游戏《李逵捕鱼》手机端完整源码分析及分享

该资源说明: cocos2d 棋牌.捕鱼.休闲类游戏<李逵捕鱼>手机端完整源码,网狐6603配套手机版源码,可以选桌子,适合新手学习参考,小编已亲测试,绝对完整可编译手机端,下载后将文件考到projects文件下面直接编译运行. 引擎版本:cocos2dx-2.2.6 资源下载:http://www.zccode.com/forum.php?mod=viewthread&tid=618&page=1&extra=#pid9095    

【Game】找出游戏必胜态

//两人取硬币游戏 hard coins game int solve() { int win[MAX]; //定义轮到自己,当剩下j个时为必胜OR必败态/****j=0时,必败.对于某个a[i], j-a[i]为(对手)必败态,则 j 个时自己可以有必胜态对于任意a[i], j-a[i]为(对手)必胜态,则自己没机会胜利了******/ memset(win,false,sizeof(win)); win[0]=false;//a[] 是每次取硬币数应等于 a[i]. for(int j=1;

对弈类游戏的人工智能(3)--博弈树优化

前言: 对弈类游戏的智能算法, 网上资料颇多, 大同小异. 然而书上得来终觉浅, 绝知此事要躬行. 结合了自己的工程实践, 简单汇总整理下. 一方面是对当年的经典<<PC游戏编程(人机博弈)>>表达敬意, 另一方面, 也想对自己当年的游戏编程人生做下回顾. 承接上两篇博文: (1). 评估函数+博弈树算法 (2). 学习算法 这篇博文回归到博弈树这边, 具体阐述下博弈树的优化手段, 为了游戏性添加的合理技巧. 启发搜索: 博弈树本质是极大极小的求解过程, 而alpha+beta剪枝

unity3d游戏开发经验之对于关卡类游戏的技巧

过关类游戏在单机类游戏中出现会比较多,但多以休闲为主,比如<Candy Crush>.<Angry Birds>.<P V Z>.<小鳄鱼顽皮爱洗澡>.<Tiny Thief>等经典休闲游戏,鉴于很多圈内人士预测2014年是手游爆发年,且重点在ARPG类型,似乎会冒出很多横版过关或者全3D的过关动作类游戏,我们就针对此类型的游戏进行分析. 首先,此类型的游戏需要关注的是每关卡的独立玩家数量,即玩家ID数量,目的是为了监测玩家主要集中在哪个阶段.比

cocos2dx[3.2]实战篇——《三消类游戏》学习心得

[唠叨] 源码教程请移步:http://cn.cocos2d-x.org/tutorial/show?id=815 注:本节仅仅记录博主自身学习<三消类游戏>的心得体会. [游戏截图] [学习心得] 1.屏幕适配策略 手机和平板电脑的屏幕比例主要为16:9.16:10.4:3.3:2. 这就说明使用16:9的比例是比较好的选择.那么我们使用一张高宽比例为16:9的背景图片,然后将适配模式设置为:ResolutionPolicy::FIXED_WIDTH(让宽适配屏幕). 注:宽适配只使用本游戏

对弈类游戏的人工智能(一)

前言: 对弈类游戏的智能算法, 网上资料颇多, 大同小异. 我写这篇文章, 并非想做互联网的搬运工. 而是想对当年的经典<<PC游戏编程(人机博弈)>>表达敬意, 另一方面, 也想对自己当年的游戏编程人生做下回顾. 这边我们以黑白棋游戏为例, 从博弈和学习两方面来阐述游戏AI的编写要点. 本文侧重于讲述博弈(评估函数+博弈算法). 博弈: 以前看围棋比赛, 常有人评价棋手水平高: 大局观强(评估局面好), 算路精准(计算步数深, 实战效果好). 他山之石可以攻玉, 对弈类游戏的AI

多版本软件构建策略分析

原文:多版本软件构建策略分析 主要分析存在多个版本特性时的软件构建策略.多个版本特性在有些情况下仅仅对应于软件的本地化,复杂的情况就是不同版本中模块的业务逻辑.呈现策略都不相 同.这不仅在产品开发过程中增加成本,更多的成本将在维护阶段体现出来.因此,选择一个合适的构建策略对降低开发与维护成本都是非常重要的. 一.传统软件构建策略 不同的版本采用不同的代码,通过派生或直接使用不同的代码实现.每个版本都会对应到一份的这个版本相关的代码.在代码发布成产品时,我们还需要一个build过程,将源码打包发布