三棋先手必胜证明

2024-01-14 01:52
文章标签 证明 先手 必胜 三棋

本文主要是介绍三棋先手必胜证明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

创作原因

游戏规则

初始状态图

证明过程

先手必胜的证明

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


创作原因

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

游戏规则

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

这篇关于三棋先手必胜证明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

一种极简的余弦定理证明方法

余弦定理的证明方法有很多种,这里介绍一种极简的证明方法。该方法是本人在工作中推导公式,无意中发现的。证明非常简单,下面简单做下记录。   如上图为任意三角形ABC,以点C为原点,建立直角坐标系(x轴方向任意,y轴与x轴垂直),x轴与CB夹角为 θ 1 \theta_1 θ1​,x轴与CA夹角为 θ 2 \theta_2 θ2​。点B的坐标为 ( a c o s θ 1 , a s i n θ

零知识证明-ZK-SNARKs基础(七)

前言 这章主要讲述ZK-SNARKs 所用到的算术电路、R1CS、QAP等 1:算术电路 算术运算电路 1>半加器:实现半加运算的逻辑电路 2>全加器:能进行被加数,加数和来自低位的进位信号相加,并根据求和结果给出该位的进位信号 说明:2进制加,低位进位 相当于 结果S为 = A+B+C(地位进位) 高位进位 = A+B+C(地位进位) 三个中 有最少2个为1 高位就有进位了 【1】 方程转算

云WAF在安全审计和合规性证明方面起到什么作用?

云WAF在安全审计和合规性证明方面起到什么作用? 云WAF的基本功能 云WAF(Cloud Web Application Firewall)是一种部署在云端的网络安全解决方案,它能够为Web应用程序提供强有力的保护,通过检测和阻止恶意流量、攻击和漏洞,确保Web应用程序的安全性和可用性。云WAF具备访问控制、网络安全审计、漏洞检测、应用安全保护、数据安全监控和审计等功能,这些功能共同构成了一

安全多方计算 同态密文计算 零知识证明 是什么、对比、优缺点

基于计算困难性理论的安全多方计算可以进一步细分为基于混淆电路的方案或者基于秘密分享的方案。 基于混淆电路的方案将所需计算的函数表达成一个巨型的布尔电路,例如,目前表达一次 SHA-256 计算至少需要使用 13 万个布尔门。尽管学术界已经提供了大量优化方案,通用 电路转化的过程依旧很复杂。由于需要使用不经意传输技术来安全地提供电路输入,即便 在有硬件加速的条件下,这类方案的处理吞吐量和计算效率依

再次拿下品牌全球代言人,王鹤棣商业价值再度证明!

9月2日,FENTY BEAUTY品牌正式官宣王鹤棣为全球代言人,这也是该品牌创立至今官宣的中国首位全球代言人。 FENTY BEAUTY是由美国歌手Rihanna创立于2017年的高端美妆品牌,也是LV母公司LVMH集团联手RIHANNA一同孵化的品牌,因其产品具有强包容性,以及能满足消费者多元需求,获得了国际声誉和市场高度认可,品牌全球吸金力排在集团第一梯队,已连年被纳入LVMH集团

使用单个位来存放每个结点的颜色:证明与实现

使用单个位来存放每个结点的颜色:证明与实现 背景知识问题阐述BFS算法的伪代码修改后的BFS算法的伪代码证明过程C语言实现结论 在算法和图论中,染色问题是一个重要的话题,尤其是在处理诸如二分图检测、图的遍历等问题时。本文将探讨在使用广度优先搜索(BFS)算法时,为何仅使用单个位来存放每个结点的颜色即可,并通过详细证明及C语言代码实现来阐述这一点。 背景知识 在图论中,图的遍

【零知识证明】通读Tornado Cash白皮书(并演示)

1 Protocol description 协议描述有以下功能: 1.insert:向智能合约中存入资金,通过固定金额的单笔交易完成,金额由N表示(演示时用1 ETH) 2.remove:从智能合约中提取资金,交易由收款人发起,收款人应该有足够的以太币支付gas费,在这种情况下费用为0(无中继者) 在演示案例中,将实现存款功能和提款功能,无论谁调用提款函数都将是收款人 1.1 Setu

零知识证明-椭圆曲线(四)

前言 零知识证明(Zero—Knowledge Proof),是指一种密码学工具,允许互不信任的通信双方之间证明某个命题的有效性,同时不泄露任何额外信息 上章介绍了基础数字知识,这章主要讲 椭圆曲线 方程 2:椭圆曲线方程 y2+axy+by=x3+cx2+dx+e 式中,a、b、c、d、e均为实数,x和y在实数集上取值。 在加密领域一般采用如下简化后的数学形式: 有限域椭圆曲线 y2= x3+

【零知识证明】构建第一个zk

1 必要步骤 视频学习:5. Circcom 中的基本算术电路_哔哩哔哩_bilibili 文字学习:https://hackmd.io/@YlNLZS2ESI21OSqdTW_mPw/S1jqN-h80/edit 第五课,circom实践,需要安装 1 vscode 2 rust:Windows安装Rust环境(详细教程)-CSDN博客 安装rust出现问题解决方案:Wind

manim动画:利用极限的定义证明极限。

函数的证明 用极限的定义来证明下面的极限。  要用极限的定义证明 ,我们可以使用极限的定义:  设f(x)在包含a的开区间中对所有x≠a有定义,设L为实数。然后  如果,任意一个,存在一个 ,以至于如果对于所有x在f的定义域内,然后  用定义我们得到:,  同时  要用极限的定义证明 ,我们可以使用极限的定义:对任意的,存在 ,使得当 时,有 ,其中 和 。   证