围棋中的数学原理


围棋一向被誉为是人类大脑智慧的专利,围棋的走法,几乎和宇宙中原子数量相同,甚至更多,每回合有250种可能,一盘棋可以长达150个回合,共有1后面再加360个0种下法,这样的计算量,对计算机来说叫暴力计算,非常残忍而且很难实现(对数字不敏感的直接看下面的GIF图更直观。但正是因为这种深度和复杂,所以几乎每个中国人都听到的话就是,围棋可以锻炼数学思维和逻辑能力。别急,至少让我们先看看围棋中有哪些数学原理。很认真的。




围棋的思维图


围棋,起源于中国,可以说是最早产生的一种棋类。相传围棋为尧所造,已经有4000年的历史。最初围棋可能与天文有联系,后来逐步变为纯粹的策略游戏。围棋的规则很简单,可以理解为双方抢占棋盘上的空间,对弈双方谁围起的空间越大谁就获得胜利。这与如今的市场经济体系是有相似之处的。


博弈论是二人在平等的对局中各自利用对方的策略变换自己的对抗策略,从而达到取胜目的理论与方法。其最早期的研究对象就是象棋,桥牌,赌博等。所以也可以用博弈论中的方法来研究围棋。

在围棋的一些基本概念,如死活,围空,实地与势中都蕴含着数学的原理。我们来细细看过。


有一句棋彦叫“多子围空方胜扁”,其意思是用多颗棋子围空的时候,棋型要尽量走成方形,也就是要有立体感,要把棋子的效率最大化,这样能围城大空。扁的棋型所占目数少,子效很低,弹性小。这其实是一个约束条件下的最优化数学问题。


下棋时我们总是希望用尽量少的子围出尽量大的空。当所用的子数一样时,围空越大越好。可以近似的把这个问题抽象为一个条件极值问题:矩形周长C为定值,求矩形面积S的最大值。

即求:

构造拉格朗日函数,

则可以列出方程:

解得:

由于空的最大值在区间内一定存在,所以易得:

就是最大值取得的条件,也就是说矩形为正方形时围空的效率最高。有经验的棋手布局时就会注意这一点,将子下得高低错落有致,这样易于高效的围出空来,不至于下出扁平的臃肿的所谓“愚形”。


当然,关于围空效率的问题,还有很多的棋彦,比如“金角银边草肚皮”,“莫压四路,休爬二路”,“七子沿边活也输”等等,这些道理都较易明白,这里就不再赘述了。


死活棋中的数学原理


围棋的死活是最基本的一项规则,可能也是唯一的规则了,所以死活的研究对于每一个棋手都是非常重要的。在下围棋时的计算主要就是死活和目数。对于一块棋的死活的计算,最一开始我们利用较多的就是穷举法,将可能的走法试一遍,来判断棋的死活。当然这种方法最适用于简单的死活,比如一些初学者做的死活题,因为此时可能性不多,能够穷举出来。对于一些复杂的死活问题,化归的思想是非常有用和自然的,如果能够试法将复杂问题转化为自己已经知道结论的简单问题,就能对自己的分析起到指导意义。比如我们一看到若干步之后能够构造出经典的活棋形式,就可以断定这片棋是活棋。

在对杀的过程中往往要判断自己单个眼内的内气是否满足需求。眼中内气的求法可用数列通项的递推方法来计算。若大小为n的眼位有an口气,则大小为n+1的眼有an+1口气,an+1与an满足的关系是

通过逐项相消的方法,可求得an的通项公式为

我们可以将该结论进行验证,

结果均与人们平时所熟悉数据的一致。当然n≥7时的大眼是公活的,讨论其气数在实战中意义不大,但是,这样的分析问题的方法却是值得借鉴的,因为这种递推的方法有助于我们化繁为简,加快计算速度。



围棋盘上格点数为19×19的数学原理


纵横十九道,迷煞多少人。围棋的规则现在已经基本定型。围棋的发展经理了一个漫长的过程。如今棋盘为19×19,也是经历了历史的演变。当然,围棋盘为什么是现在这个样子一直还是有争议的。但我们可以通过实地与外势的平衡来分析这个问题。


围棋盘上三路线被称为地线,在地线上行棋容易将低路上的空地围住。四路线被称为势,虽然不能完全控制住低路,但是对高路的围空很有帮助。我们可以看一个极端的例子。对于N路棋盘(一般最小的棋盘为九路,即N≥9),若地线全部被黑棋占领,势线全部被白棋占领(如下图所示),

则双方的围空效率之差为

其中,

这一项当N≥9时单调递减,

这一项也单调递增,所以整个式子是单调递增的。将N=18和N=19代入式子中,我们得到

可见N=19时|△λ| 取得最小值,即在十九路棋盘上行棋,双方的效率基本一致,使得取地与取势没有明显的优劣之分,这大大的拓宽了围棋的战术。所以围棋使用十九路棋盘不是没有道理的。


围棋是异常复杂与有趣的。它本身就是双方博弈的一种典型情况。围棋的道理与现实生活其实是紧密相关的,比如弃子、脱先、以及取势取地。这些特殊境况下的决策其实我们都会遇到。当然,很多情况下每个人找到的“最大的一手棋”都是不一样的,或者更本就没有这样的一手棋,但是我们必须要通过仔细的推理,判断来进行下去。


对于围棋的研究还是挺有实际意义的。围棋中无论是大问题还是小问题,我们可以尝试将这些问题抽象成数学问题,看清它的本质,这样对我们理解棋理甚至理解这个世界都是有好处的。


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring boot 缓存_Spring Boot 集成 Redis 实现数据缓存

Spring Boot 集成 Redis 实现数据缓存,只要添加一些注解方法,就可以动态的去操作缓存了,减少代码的操作。在这个例子中我使用的是 Redis,其实缓存类型还有很多,例如 Ecache、Mamercache、Caffeine 等。Redis 简介Redi…

.md是什么文件_Element-UI源码阅读之md显示到页面

入口文件首先,看一个项目的入口,可以从package.json中去看它的运行命令 可以看到dev那行,执行了很多脚本: npm run bootstrap && npm run build:file && cross-env NODE_ENVdevelopment webpack-dev-server --con…

linux误删ssh不上,误删openssh-server删除,复原操作

在别的节点上寻找openssh的程序有哪些:而我的这个节点上只有一个openssh-clines,所以,就先利用了yum install openssh-server进行安装,但是这个安装的是最新的 openssh-server-5.3p1-122.el6.x86_64.rpm,担心集群节点之…

我用 MySQL 干掉了一摞简历

临近过年,疫情又趋于平稳,最近出来面试的人也多了起来,我们公司也在招人。我发现,不少候选人,对数据库的认知还处在比较基础的阶段,以为会写“增删改查”、做表关联就足够了,那些工作中经常出现…

为什么AI工程师成为当前薪资最高的技术岗位

今年无疑是“人工智能”话题火热指数最高的一年。从腾讯西雅图AI实验室,百度斥资超过200亿投入人工智能研发,再到最近 Google 打算在中国进行AI领域的市场扩张,其母公司 Alphabet 更是在7月便成立专注AI领域的风投机构...全球都在风生水起、将…

spring boot jar包_「Spring Boot 新特性」 jar 大小自动瘦身

自动分析瘦身Spring Boot 项目最终构建处理 JAR 包大小一直是个诟病,需要把所有依赖包内置最终输出可运行的 jar。当然可以使用其他的插件扩展 实现依赖 JAR 和 可运行 jar 分离可以参考 slot-maven-plugin[1], 但此种方法治标不治本并不能减少原有依赖的 JAR 的大小…

设计模式在项目中的应用案例_设计模式在项目中的应用(初学者版)

文章首发链接:设计模式在项目中的实际应用(应试版)​mp.weixin.qq.com本文适用于设计模式初学者。很多人学习了设计模式,但在项目开发中仍然不知道如何使用;很多小伙伴在课堂上跟着老师稀里糊涂的听了,懂了…

微创社001期:从0开始创作第一本技术书

互联网已经成为了人们生活中如饮水空气一般的基础设施,它不仅影响着当下我们的生活,也必将在更加普遍的领域影响着我们的未来。而在大浪潮中,坚守一个以自我为中心的知识体系,不仅有助于我们作为个体更好的从互联网汲取养分&#…

关于虚拟机下linux共享Windows文件的解决方案

先跟大家说一下在windows下装的vmware,就是又在vmware的系统里虚拟了一个Linux的系统的话,我们有些朋友就是想法把物理机的东西拷贝到Linux虚拟机里时很是伤神,当然windows就很简单了,直接拖进去(如果你安装了vmware t…

10分钟让你快速掌握Excel的16项重要技巧

大家在日常生活、工作使用Excel时,是不是总会遇到很多问题呢? 不小心将文件命名错了,要一个个改? 文件里只需要数据却不知道怎么提取? 工作汇报要做数据汇总、需要插入大量图片怎么办? 甚至在耗费相当多的时间与精力…

linux中wine yum安装,分享|在基于RedHat或Debian的系统上安装 Wine 1.7

Wine,Linux上最流行也是最有力的软件, 可以顺利地在Linux平台上运行Windows程序和游戏。这篇文章教你怎么在像CentOS, Fedora, Ubuntu, Linux Mint一样基于Red Hat和Debian的系统上安装最新的Wine 1.7。在Linux安装 Wine 1.7不幸的, 在基于Red Hat的系统上没有官方的 Wine 仓库…

还不知道这 11 个超酷的编程新工具你就 out 了!

工具对开发人员来说至关重要。工具可以让一个开发人员的日常工作更高效,并且只需要关注最重要的事情。对于开发人员来讲,寻找更好的替代工具往往比坚持使用熟悉过时的工具更困难。 在这篇文章中,我们将列出你在日常工作中能够使用的新的开发工…

Linux装多个apache,windows linux如何安装多个apache?

富国沪深Windows下安装多个Apache服务:1.安装好Apache以后,可以在浏览器中输入http://localhost测试;2.更改第一个站点的根目录:在文件Apache2.2\conf\httpd.conf中查找 DocumentRoot 属性,将后面的路径改为你的主站点…

[Abp 源码分析]DTO 自动验证

点击上方蓝字关注我们0.简介在平时开发 API 接口的时候需要对前端传入的参数进行校验之后才能进入业务逻辑进行处理,否则一旦前端传入一些非法/无效数据到 API 当中,轻则导致程序报错,重则导致整个业务流程出现问题。用过传统 ASP.NET MVC 数…

五分钟搞懂并查集

并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。来看一个实例,杭电1232畅通工程。首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问…

[Abp 源码分析]多语言(本地化)处理

点击上方蓝字关注我们0.简介如果你所开发的需要走向世界的话,那么肯定需要针对每一个用户进行不同的本地化处理,有可能你的客户在日本,需要使用日语作为显示文本,也有可能你的客户在美国,需要使用英语作为显示文本。如…

Kaggle 发布首份数据科学从业报告 | 不及美国同行1/3,中国数据科学家平均年薪约3万美元

Kaggle 是互联网上最著名的数据科学竞赛平台之一,今年 3 月 8 日,这家机构被谷歌收购,6 月 6 日又宣布用户数量超过了 100 万人。互联网创业方兴未艾,人工智能的浪潮又接踵而来,而贯穿其中的数据科学则在这更迭交替中显…

mysql设置表名字为占位符_这可能是把MySQL存储引擎讲解的最清楚的一篇文章了

存储引擎是MySQL的组件,用于处理不同表类型的SQL操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。使用哪一种引擎可以灵活选择,一个数据库中多个表可以使用不同引擎…

linux开发板显示横向彩虹,给 Linux 终端的输出添加彩虹特效的命令

原标题:给 Linux 终端的输出添加彩虹特效的命令正文如果认为Linux命令行很无聊并且没有任何乐趣,那么您错了,真实的Linux多么有趣和淘气。在本文,我将介绍一个名为“ lolcat ”的实用小工具,该实用工具在终端中产生彩虹…

Delphi 与 DirectX 之 DelphiX(46): TDIB.DoAntiAlias;

本例效果图:代码文件:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, DIB, StdCtrls;typeTForm1 class(TForm)DXPaintBox1: TDXPaintBox;Button1: TButton;Button2: TButton;procedure Button1Click(Sender: T…