围棋中的数学原理


围棋一向被誉为是人类大脑智慧的专利,围棋的走法,几乎和宇宙中原子数量相同,甚至更多,每回合有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 干掉了一摞简历

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

借用虚拟机在真机安装 ubuntu, 亦可安装至移动硬盘

说一下另一种硬盘安装的办法,借用虚拟机装在物理硬盘上,比较变态。0. 适用于机子里已经装了 windows 的朋友安装真正的 Ubuntu ,wubi 不在讨论之列。1. 下载并安装 vmware workstation for windows: [url]http://www.vmware.com/products/ws/…

为什么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 的大小…

linux应用与管理,Linux操作系统应用与管理

本书从实际应用的角度出发,以RedHat Linux 9为操作环境,介绍了使用和管理Linux的各种常规操作和技巧。主要内容包括Linux的安装配置、桌面应用、文件目录管理、用户管理、网络管理、安全管理、进程管理、软件包的安装使用、更新Linux内核以及Linux下Java…

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

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

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

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

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

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

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

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

android刷新时的圆形动画_Android自定义加载圈动画效果

本文实例为大家分享了Android自定义加载圈动画展示的具体代码,供大家参考,具体内容如下实现如下效果:该效果图主要有3个动画:1.旋转动画2.聚合动画3.扩散动画以上3个动画都是通过ValueAnimator来实现,配合自定义View的onDraw()方法实现不断的刷新和绘制界…

hashset默认长度是多少?_看看,这些细节上的坑,你犯了多少?

来源:http://1t.click/ata8# 前言代码优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样…

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 仓库…

C# 规则引擎RulesEngine

当编写应用程序时,经常性需要花费大量的时间与精力处理业务逻辑,往往业务逻辑的变化需要重构或者增加大量代码,对开发测试人员很不友好。之前在这篇文章说过,可以使用脚本引擎来将我们需要经常变化的代码进行动态编译执行&#xf…

Windbg设置条件断点

条件断点(condition breakpoint)的是指在上面3种基本断点停下来后,执行一些自定义的判断。在基本断点命令后加上自定义调试命令,可以让调试器在断点触发停下来后,执行调试器命令。每个命令之间用分号分割。语法格式如:…

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

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

thinkphp5 异步调用方法_thinkphp5 swoole 执行异步任务

目录结构:服务器端:/**author:hdj*/namespace app\Console;use think\console\Command;use think\console\Input;use think\console\Output;class Websocket extends Command{protected $server;protected function configure(){$this->setName(webso…

python单击url下载网页文件_使用不带url的python脚本从网页下载文件,调用onClick函数 - javascript...

有一个网页带有链接“单击下载”,单击该链接可以下载文件。 我可以通过转到网页并单击此链接来手动下载此文件,但是我需要通过python脚本下载此文件。 如果我看到源代码,则可以看到锚标记将运行js函数 Download in csv 但是我不知道csv文件的…