对称、群论与魔术(八)——魔术《tic tac toe》中的数学奇迹

2023-10-15 14:10

本文主要是介绍对称、群论与魔术(八)——魔术《tic tac toe》中的数学奇迹,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

早点关注我,精彩不错过!

在上一篇文章中,我们着重说明了tic-tac-toe的奇迹这个魔术里,最终的平局结果为什么符合一个D4群的结构剖析,相关内容请戳:

对称、群论与魔术(七)——魔术《tic tac toe》的奇迹&Tally-Ho牌背秘密公开!

对称、群论与魔术(六)——经典魔术《对称找牌》

对称、群论与魔术(五)——真实扑克牌图案的对称性探索

对称、群论与魔术(四)——空白扑克卡片的对称性研究

对称、群论与魔术(三)——常见的几何对称性简介

对称、群论与魔术(二)——用群来描述对称性

对称、群论与魔术(一)——对称性本质探索

今天我们来继续研究tic-tac-toe这个游戏。

Tic-tac-toe的博弈树分析

当时还剩下最后一个问题,那就是,我们的策略一定能够得到平局结果吗?如果我们还想要得到C4范围内的棋局结果,还需要做哪些策略定制呢?

今天我们就来回答这个问题,先回顾一下视频:

视频1 tic-tac-toe的奇迹


除了这个平局所有可能情况所在的群的结构分析,我们并没有说清楚我们到底应该怎样下这个棋局能够保证赢,或者保证不输。关于这个问题所对应的策略,有一个非常好的工具叫决策树(在博弈论中也叫博弈树),因为每一步的状态都对应很多下法导致的不同结局,这恰好是状态到多个状态的一个没有环的关系(因为棋盘上棋子的数量一直在增加,不可能恢复),这恰好是DAG图的性质,不同的下法是可以到达同一个有马尔可夫性的状态的(即只关心目前的局面,不关心怎么下过来的)。若是以整个下法为状态而不作归并,那就是树了。用这个工具我们甚至可以去分析几乎所有的棋类游戏,复杂到围棋,简单到象棋,到我们今天讲的tic-tac-toe。

这是个复杂而庞大的议题,不过tic-tac-toe应该hai还是太简单了,以至于我们根据一下对称性,也就是叫等价棋局类的合并,可以在很有限的空间内,去穷举所有的棋局情况。

我们假设X,O两个符号是等价的,整个棋盘上D4群内的所有操作得到的棋盘结果等价,并且我们以靠左和上侧元素作为代表元素,剔除所有在对方听牌但是不堵以及有潜在成线不成的所有无效分支,多个可堵位置优先堵斜线以及左侧和上侧的原则(此时已经必输了)。于是我们有以下决策树的穷举结果:

图1 井字游戏先占中的所有可能下法

13608b68d98ec58c07fb546ed062cce3.png

图中,标号上第一个元素0和1分别表示右手定则下的从头到手和反向方向,第二个表示站立以后要逆时针旋转的90度个数,其实也就是D4群内元素的表达了。

怎么样,如果粗略估计有C(9, 4)或2 ^ 9种结局甚至9!种路径确实放缩得有点厉害的话,那情况居然少到这么可怜恐怕也是没有想到的吧。这就是对称的威力,它在思维上直接像学会了用数来代表任何事物的多少比之于每个对象都需要重新画的人的优势一样。

在第2步也就是图中第二层处,根据C4的对称性,仅有角位和边位两种等效选择,我们取代表元素的原则是优先取左侧和上侧的位置落子,得到图中第二行的情况。

接着第3步的每种情况里都各有3种下法,而且是排除了轴对称的情况,只算左侧和上侧那一种情况。这里的对称蛮明显的,因为中心点处在中间,任何一个位置都可以连成对称轴,形成对称的两个等价位置。

注意这时候,因为我们规定能堵必须堵,而且要优先堵斜线,左上位置,加上有听必听,于是接着就在很多棋局情况下有必下策略,最常见的就是那种必须去堵的那唯一一个位置。于是在第4行的第4步里,分别有4,2,4,4种可能情况,其中在第5行的第一种情况还存在一个镜像的重合,只花了一个代表。

整个棋局最多也就5步(其实是最多4个可选下法,占中和必堵必听没有算)就确定结束了(这没什么好证明的,事实都全部摆在那了),要么以圈的先手胜利而告终,要么就是所谓的平局,只有唯一一种情况是后手能够获得胜利,注意我是指的双方都按照最基本的策略下:逢听必听,有堵必堵,先斜线,先左上。这应该也是最朴素的可行的下棋的感性逻辑,不见得都是最优的,更不一定是满足纳什均衡的。但是有堵必堵这一条,至少如果不这样下,一定更坏,是个dominating的策略,而逢听必听并不是。

先看看先手输的唯一情况。后手先占了角位,然后先手卡在了相邻的边位,最后选择了一一条虽然报听但是在一条边上听死的左下角位,才最终输掉。要防止这种情况,先手需要在被占角位以后,作死占同边位,再占同边的角位,这些条件都满足,才会真的输,不得不说,下得真菜。

那先手想赢有没有必胜策略呢?没有,因为可以看到,图中标有win的先手胜的结果都在第2层的第2个分支下,也就是说,只要第2步后手完成了占角,就可以保证不输了。而如果第一次没有占角,那么先手就存在像图中3行6列里占右上角后的必胜策略。如果错过,仍然还有两种必胜策略可供选择。总之,要保证必胜策略,得每一层往下对手可选路径内,都一直存在着必胜策略,直到到达叶子的胜局节点。而先手如果想赢,就只能期待对手会在第2步犯没有占角的错误,否则,只能是平局,下不好还有可能输。

而对于后手来说,是没有必胜策略的,因为只要按照图中的路线来走,只要先手在路径中某一避开了那唯一输的情况就好了。但是显然有必不输的策略,在第2步就能发现,只要占角就行了。

所以无论对于先手还是后手,要保证保平争胜,先下中间以后的策略都是优先占角,后手占角可以不输,先手占角在后手没有占角时有必胜策略,如果后手占了角,也能至少保证平局。

注意在最后的无论平局还是胜负的结果,都有很多完全重合的结果,最后的呈现相同,但是他们处在不同的分支路径下就代表不同的下法,只是关于结局对称而已。

还有一点是,我们这里只考察了先手会先下中心的下法。如果不这样下,那么假设后面任意步下了中心位,可以得到等效的棋局结果,但是前面的步骤略有不同。但是,占中是一个直觉上有先手优势的人必选的策略,讲不清道理,但是直觉上它能占据最多的优势,这里我就不详细分析不占中的下法了,那样情况较多,而且看起来都是一些很傻的下法,虽然符合规则,但繁琐一点也很容易分析清楚,这样下在博弈上是明显被另外策略统治的。

在matric67在果壳上的文章所说的,井字棋的最优策略是占角。哪怕是先手,不过这倒是可以看作是下棋风格和如何与人对抗了,在先占角的下法里,如果后手不占中就有必胜策略。如果占中后继续占角,尔后先手又占角了,那此时后手有必胜策略;否则,就是必然的平局。这看起来好像陷阱会比先占中好,不过也差不多,只是对抗和博弈的时候看对方在哪种下法中处于劣势,我们去对抗攻击就好了。

如果这里的议题是去研究先手和后手的必胜下法是否存在和怎么下的话,用到的数学理论则是纳什均衡以及逆向的状态固定倒推的思路,算法描述为min-max算法,这里不再展开,有机会我再单独写文章分享。

Tic-tac-toe的平局是怎么必现的?

最后我们来看下我们必然得到平局的游戏是怎么进行的。如果我们只是要D4的平局,那很简单,避开输的方法,剩下的再可赢的时候选择不赢即可。但是如果我们必须要平局而且是C4内的平局呢?这时候就要精挑细选下下棋的策略了。不必完备,只需要找到一组可行,且容易记忆的策略即可。

这个在商业道具井字游戏里有详细说明,这个我就不说了,说下我的记忆策略。我把最后平局的结果看做一个向前挥舞拳头的小人,竖直水平两条是头和手,另外两条是两只脚,我们以视线为法线方向看过去,用右手定则,规定我们想要的C4结果,是从头到手符合右手定则规定的。也就是上面元素标号第一个为0的情况。那具体要怎么下到这里呢?

我们选取的是1,1,3路径结果的镜像(0, 1),这个策略最简单,对应的就是当观众第一步下在角位的时候,我们下在相邻边的边位上,并且使得从中心指向下到位置的向量左侧为观众的棋子,正好和图中的(1, 1)呈镜像关系。当观众第一步下在边位的时候,我们同样选择下在相邻边位上,并使得观众的棋子在新形成向量的右侧。这时候,对应图上,1,1,2路径的镜像结果,此时继续把右侧的两个子填满即为所求。中间可能出现可赢策略,但是我们选择放水。

综上,我的公式是:视线法向,右手头手,首次相邻,角左边右,右者继续。

以上。

其实,真正道具商卖的那个能够在背后拼出一个给定图案的下法,又是这些下法中的又一个更小的子集,因为你不能把拼图当成可以自由翻转的二面体啊,只能在C4的范围内的结果内变动。另外,每个棋子下哪个位置,落子顺序也是有讲究的,而且完全不能出错,因此最后其实就变成了,也只能变成了,一个我们下了中间位置以后,根据观众想下的位置我们选择对应的拼图块以及规划好后续的目标形状(C4中的一个)然后在后面的下法中,观众其实是没有任何自由度的。因为从第3块开始,每一块都必须方向和位置完全要固定才是,观众有任何真的位置选择,势必可能影响初始方向,哪怕调整好了正确的拼图块也无济于事,除非每个拼图块都本身就是C4图形,但那又何必自寻烦恼呢?

Bonus

这个魔术几乎可以看作是一个自动化魔术了,因为所见即所得,没有任何操作在观众的脑海里的推断是和真实发生不同的,只不过这个对象的数学结构较为复杂,也是没有这样的模型能力的人所不能够迅速反应的,这种差别才构造出如此的神奇效果。

因此我们就可以尝试着结合机器人技术来让机器完成这个表演了。下面这个视频是一个demo,其实并没有完全成型,不过也算是一个机器人变魔术的小成就吧!

视频2 icub机器人井字游戏魔术

下期的魔术表演先奉上,精彩下期继续!

视频3 五边形的奇迹

33d4f7f98d214a250991c84d241bc565.gif

我们是谁:

MatheMagician,中文“数学魔术师”,原指用数学设计魔术的魔术师和数学家。既取其用数学来变魔术的本义,也取像魔术一样玩数学的意思。文章内容涵盖互联网,计算机,统计,算法,NLP等前沿的数学及应用领域;也包括魔术思想,流程鉴等魔术内容;以及结合二者的数学魔术分享,还有一些思辨性的谈天说地的随笔。希望你能和我一起,既能感性思考又保持理性思维,享受人生乐趣。欢迎扫码关注和在文末或公众号留言与我交流!

4b7001701f91f76467841f2a2647fbb6.gif

f803ba57bcea7fea05bc28758b7ab1c4.png

3fb3d3d556de0161355cbfc1d1546b32.png

扫描二维码

关注更多精彩

对称、群论与魔术(七)——魔术《tic tac toe》的奇迹&Tally-Ho牌背秘密公开!

魔术表演的核心秘密(六)——从障眼法到错误引导和案例分享

信息——人类现代文明的奇迹

对称与魔术初步(六)——魔术《4选1的诅咒》等

你眼中的魔术,也是美的吗?

337a1b5cc268ce0ccfc05431406fb06f.gif

点击阅读原文,往期精彩不错过!

这篇关于对称、群论与魔术(八)——魔术《tic tac toe》中的数学奇迹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

uva 11044 Searching for Nessy(小学数学)

题意是给出一个n*m的格子,求出里面有多少个不重合的九宫格。 (rows / 3) * (columns / 3) K.o 代码: #include <stdio.h>int main(){int ncase;scanf("%d", &ncase);while (ncase--){int rows, columns;scanf("%d%d", &rows, &col

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

CSP-J基础之数学基础 初等数论 一篇搞懂(一)

文章目录 前言声明初等数论是什么初等数论历史1. **古代时期**2. **中世纪时期**3. **文艺复兴与近代**4. **现代时期** 整数的整除性约数什么样的整数除什么样的整数才能得到整数?条件:举例说明:一般化: 判断两个数能否被整除 因数与倍数质数与复合数使用开根号法判定质数哥德巴赫猜想最大公因数与辗转相除法计算最大公因数的常用方法:举几个例子:例子 1: 计算 12 和 18

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

魔术方法介绍

目录 一、基本介绍 1、什么是魔术方法 2、常见的魔术方法 二、__str__ 1、基本介绍 2、应用实例:请输出Monster对象的属性信息 三、__eq__ 1、基本介绍 2、应用实例 四、其它几个魔术方法 1、其它魔术方法 2、应用实例 参考文档:3. 数据模型 — Python 3.12.5 文档 一、基本介绍 1、什么是魔术方法 1)在Pyth

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数(开口向下),如下: 因为要使得其存在正解,必须满足,那么。 上述函数的最优结果为:,。 对应的mathematica代码如下: Clear["Global`*"]f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)Maximize[{f0[x, a, b,

2024年高教社杯数学建模国赛最后一步——结果检验-事关最终奖项

2024年国赛已经来到了最后一天,有必要去给大家讲解一下,我们不需要过多的去关注模型的结果,因为模型的结果的分值设定项最多不到20分。但是如果大家真的非常关注的话,那有必要给大家讲解一下论文结果相关的问题。很多的论文,上至国赛优秀论文下至不获奖的论文并不是所有的论文都可以进行完整的复现求解,大部分数模论文都为存在一个灰色地带。         白色地带即认为所有的代码均可运行、公开