Chomp 游戏与偏序关系

2024-01-12 20:48
文章标签 关系 游戏 chomp 偏序

本文主要是介绍Chomp 游戏与偏序关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Chomp 游戏与偏序关系

一、游戏介绍

Chomp是一个双人游戏,有 m X n 块曲奇饼排成一个矩形格状,称作棋盘。两个玩家轮流自选吃掉一块还剩下的曲奇饼,而且要把它右边和下面所有的曲奇饼都被取走(如果存在)。如果不吃左上角的那一块曲奇饼(位置记为(1, 1))就没有其他选择的玩家为失败。

下图展示了一个棋盘为 4 X 6 的Chomp游戏的完整过程:

  • (a)是初始情况;
  • (b)表示玩家一吃掉位置为(3, 3)的曲奇饼;
  • (c)表示玩家二吃掉位置为(1, 4)的曲奇饼;
  • (d)表示玩家一吃掉位置为(1, 2)的曲奇饼;
  • (e)表示玩家二吃掉位置为(2, 1)的曲奇饼;
  • (f)表示玩家一在游戏中落败。

 


分析这个游戏的“策略”之前先“插播”一个重要结果——

 

策梅洛定理(Zermelo's theorem)

1913年,恩斯特·策梅洛(Ernst Zermelo)在论文《Über eine Anwendung der Mengenlehre auf die Theorie des Schachspiels》中证明了策梅洛定理(Zermelo's theorem),定理表明在二人参与的游戏中,如果满足

  • 游戏步骤有限;
  • 信息完备(可以理解为参与者知道所有与游戏相关的信息以及本次游戏中已发生所有步骤和结果);
  • 不会产生平局;
  • 确定性的(即运气因素并不牵涉在游戏中),

则或者先行一方有必胜策略,或者后行一方有必胜策略。

 

策梅洛定理的另一种表述是:在二人参与的游戏中,如果满足游戏步骤有限、信息完备、每一步骤都是确定性,则或者先行一方有必胜策略,或者先行一方有必和策略,或者后行一方有必胜策略。


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

证明

假设棋盘规模为 m X n 。

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

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

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

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

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

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

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

 

注意:这个证明是非构造性存在性证明,也即只是证明了先手必胜策略的存在性,但没有构造出具体必胜策略。

虽然对于一些特殊的情况,比如棋盘是正方形、棋盘只有两行,可以找到必胜策略;但一般情况,还没有人能具体给出Chomp的一般性必胜策略。


(Ⅰ) 棋盘只有一行,但是多于一格。先手只要只剩下左上角的一块即可。

(Ⅱ) 棋盘是正方形,但是多于一格。先手只要只剩下左上角的一块、最上一行、最左一列即可。

之后,无论后手怎么做,先手只要对称地模仿就可以。

(Ⅲ) 棋盘只有两行,就先拿去右下角的一块。

之后 根据后手的选择,主要有三种可能,总体来说就是保持上行比下行曲奇饼多一,或者干脆对方取走下面一行全部曲奇饼。(其实下图中后两种可以合并)


 

Chomp游戏的变形:

(a) 三维Chomp游戏。将曲奇排成 p x q x r 的立方体,两个玩家轮流自选吃掉一块剩下的曲奇饼,若取走的曲奇饼为 (i, j, k),则也要取走所有满足 p \geqslant a \geqslant  i ,  q \geqslant b \geqslant  j,  r  \geqslant c \geqslant  k的曲奇饼(如果存在)。

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

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

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

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

(d) 有限偏序集上的Chomp游戏。

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

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

而且

  1. 传统Chomp游戏与偏序集 (S, | ) 上的Chomp游戏相同,其中 S 是 p^{m-1}q^{n-1} 的所有正因子组成的集合,这里 p 和 q 是两个不同的素数。
  2. 假设 (A, \leqslant ) 和 (B , \leqslant ) 都是全序集,证明:传统Chomp游戏与积偏序集 (A x B, \leqslant ) 上的Chomp游戏相同。

这篇关于Chomp 游戏与偏序关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/599122

相关文章

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

python安装whl包并解决依赖关系的实现

《python安装whl包并解决依赖关系的实现》本文主要介绍了python安装whl包并解决依赖关系的实现,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、什么是whl文件?二、我们为什么需要使用whl文件来安装python库?三、我们应该去哪儿下

MYSQL关联关系查询方式

《MYSQL关联关系查询方式》文章详细介绍了MySQL中如何使用内连接和左外连接进行表的关联查询,并展示了如何选择列和使用别名,文章还提供了一些关于查询优化的建议,并鼓励读者参考和支持脚本之家... 目录mysql关联关系查询关联关系查询这个查询做了以下几件事MySQL自关联查询总结MYSQL关联关系查询