三棋先手必胜证明

目录

创作原因

游戏规则

初始状态图

证明过程

先手必胜的证明

失败的博弈树(三个多小时的成果)


创作原因

这个棋不是网上流行的成三棋,我也不知道这个棋叫什么。由于这个棋是(横竖斜)连成三个就获胜,所以我暂时给它起名叫三棋。至于为什么写这个博客,一是因为这个棋简单,是我见过的第二简单的棋,第一简单的是区字棋,二是这是我小时候赶大集时跟别人学的棋,现在想想也是一个美好的回忆,所以就暂时记录下来,代码实现后面有时间再写。

游戏规则

1、初始状态:棋盘为三乘三的棋盘,双方各三个棋子,分别摆在靠近棋手的一行上。

2、双方交替行子,每次棋子只能上下左右移动一个单位。

3、直至一方棋子连成三个获胜,横竖斜都算,不过不能是自己的初始状态。

初始状态图

XXX
OOO

证明过程

本来我还是想用区字棋的证明方法来证明这个问题,但算了算状态数目,感觉虽然很少,但只是相对于计算机而言,人力列举真的很困难。

状态数eq?C_9%5E3*C_6%5E3%3D84*20%3D1680,即便排除大量等效,状态数也在一百以上。但我代码能力很差,而且也没有学过博弈论相关知识,不知道该怎么解决这类问题。我想既然画状态图不现实,那我可不可以画博弈树呢?但需要代码。而且循环状态怎么解决,我还是不会。所以代码实现这个问题博弈树就算是我挖下的坑吧。

当时在高铁上无聊,就开始手搓博弈树。画了三个多小时,没有结果,状态越花越多,还要检验与之前的状态有没有重复。最后我放弃了,问我旁边的学长。学长说挺简单的,但不要手搓(大哭)。他了解了之后,想了想,说,我根据后手策略,认为这个棋永远和棋,因为可以阻碍对方连成三。先手策略他还没研究。这点倒是提醒了我,为什么不从棋手的角度来考虑问题呢?于是,我放弃了画博弈树,直接以先手的角度代入怎么下棋,结果突然发现原来先手有简单必胜的策略,证明如下。

先手必胜的证明

注:红\Delta为先手,蓝O为后手。先手为必下策略,后手为可能策略,相当于解象棋围棋五子棋的残局。第一和第二个照片是第一步不同。

第一步\Delta走中间:

f9f92eead63b43118ddb21c0c0906d53.png

第一步\Delta走两边:

01c3f3223c75456a9274f456452baab1.png

先手策略总结:前四步连续前冲就可以赢棋。

失败的博弈树(三个多小时的成果)

b0afe74cd77b441e89815b283ae40097.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/317446.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

程序员副业之AI文库项目(超详细完整全流程)

引言 大家好,我是小黑,今天给大家介绍一个特别简单的项目,用AI辅助咱们来编写各种word,PPT等资料上传到百度文库、原创力、道客巴巴、csdn等平台赚取被动的睡后收益。 但要注意,只是辅助,即便是用AI辅助&…

APP自动化测试(超详细)

在实习过程中,我接触到了一些SDL安全提测的工作。原来我是学web端渗透比较多的,移动端这块基本没怎么试过手,结果刚开始一直踩坑,连抓包都抓不到(T▽T)。 下面记录下我遇到的部分问题和解决方法&#xff0…

C++学习笔记——私有继承、多重继承、类模板

目录 一、私有继承 二、多重继承 三、类模板 四、一个使用私有继承的示例代码 4.1代码 4.2输出结果 五、多重继承案列 六、类模板案例 C中的继承和模板是非常强大和灵活的特性,它们可以帮助我们实现代码复用、抽象和泛化等目标。本文将着重介绍私有继承、多…

对快速排序思想的进一步理解,分而治之,欧几里得算法(常用求最大公约数的方法)

自己找到的最优的快排的代码 快速排序 思想 分而治之使用欧几里得算法(辗转相除法)来求解一个应用题 假设有一块地,现在用这个同样大小的正方形来铺满,求所可用的最大的正方形地砖的面积 这两个方法放在一起是因为这个欧几里得要…

MAVROS的进一步理解

一、Mavros简介 顾名思义, mavros就是mavlinkros。mavros是PX4官方提供的一个运行于ros下收发mavlink消息的工具,利用mavros可以发送mavlink消息给飞控(可以控制飞机),并且可以从飞控中接受数据(例如:飞控的位置速度 IMU数据等等…

30 树的定义

树的定义 树的度?叶节点? 注意:k为叶节点 孩子/双亲/子孙/祖先 树的高度? 有序树 森林 树的一些操作: 粗略的框架代码: 省略。。。 小结: 树是线性表的扩展

全新加密叙事,以Solmash为代表的 LaunchPad 平台如何为用户赋能?

铭文市场的火爆带来“Fair Launch”这种全新的代币启动方式,Fair Launch 的特点在于其为所有人参与 Launch 带来了公平的机会,所有链上玩家们都需要通过先到先得的方式 Mint 资产,VC 在 Fair Launch 中几乎没有话语权,不同的投资者…

基于蚁群算法的TSP问题建模求解(Python)

基于蚁群算法的TSP问题建模求解 一、蚁群优化算法(Ant Colony Optimization,ACO)1.1 蚁群算法的起源——“双桥实验”1.2 蚁群优化算法思想1.3 蚁群算法应用于求解组合优化问题 二、基于蚁群算法的TSP问题建模求解2.1 旅行商问题(…

软件测试|web自动化测试神器playwright教程(三十八)

简介 在我们使用selenium时,我们可以获取元素的属性,元素的文本值,以及输入框的内容等,作为比selenium更为强大的web自动化测试神器,playwright也可以实现对元素属性,文本值和输入框内容的抓取&#xff0c…

Mysql事务的处理

1、事务,就是一组命令的操作。 不过这一组命令,我们有时候需要使用手动提交; 1、使用这组命令可以查询出来现在的提交方式:自动提交(就是命令输入,点击enter后,会不会直接对表格产生修改&#x…

重温经典struts1之自定义全局异常处理类处理异常以及<exeception>标签的配置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 前面的文章,我们学习了,Action类中调用Service,通过try…catch代码块,catch自定义异常类,通过ActionMessage…

metrics安装异常原因【doesn‘t contain any IP SANs】

1、问题背景 安装好k8s后,安装metrics-server后发现对应的pod一直无法启动。 apiVersion: v1 kind: ServiceAccount metadata:labels:k8s-app: metrics-servername: metrics-servernamespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: Cl…

05.neuvector网络学习与管控实现

原文链接,欢迎大家关注我的github 一、网络的策略学习 1.1.非主机模式的网络连接学习 agent进程侧: 调用taskAddContainer->taskInterceptContainer->programDP->DPCtrlAddTapPort为所有非host模式的容器向dp传送 DPAddTapPortReq对象数据.&…

成就动机测试

成就动机测试广泛应用在职业发展领域,如:企业Hr人力资源管理部门,用于评估分析员工的潜能和价值,适用场景有人才招聘,岗位晋升,绩效考评等等。在大学生做职业规划,求职应聘中,应用成…

数据结构与算法(十一) 排序算法一

int nArray[] { 8,5,3,2,7 };如下一个数组,现对其进行从小到大排序 选择排序 选择排序:将小的依次放在前面 具象化如下: void swap(int *nSValue,int *nDValue) 交换函数 { int nTempValue 0; nTempValue *nSValue; *nSVal…

Spring Boot 整合支付宝实现在线支付方案(沙箱环境)

文章目录 1.理解沙箱环境2.沙箱环境接入准备2.1 访问开发者控制台2.2 获取重要信息2.3 处理秘钥 3.接入支付宝支付的流程4.实现支付4.1 添加 SDK 依赖4.2 创建配置类4.3 支付宝订单管理接口实现流程4.4 支付宝支付接口实现流程 5.支付宝支付功能演示7.总结 TIP:对于…

分享一个好用的免费在线扣图网址

具体效果 附地址 https://cutout.aiwave.cc/

【python】基础知识类的语法功能讲解

Python代码定义了一个名为Calculation的类,用于执行基础的数学运算(加法、减法、乘法、除法和取模)。下面我将详细解释各个部分的功能,并以列表形式总结: 类定义: class Calculation: 定义了一个名为Cal…

iOS Universal Links(通用链接)详细教程

一:Universal Links是用来做什么的? iOS9.0推出的用于应用之间跳转的一种机, 通过一个https的链接启动app。如果手机有安装需要启动的app,可实现无缝跳转。如果没有安装,会打开网页。 实现场景:微信链接无…

Flink窗口(2)—— Window API

目录 窗口分配器 时间窗口 计数窗口 全局窗口 窗口函数 增量聚合函数 全窗口函数(full window functions) 增量聚合和全窗口函数的结合使用 Window API 主要由两部分构成:窗口分配器(Window Assigners)和窗口函…