有没有可能不穷举,也能完全破解围棋能穷举吗

最近沉迷于各种构造强答一波...

這个问题跟上次那个讨论热烈的题()有点类似,貌似还相对简单一些同类型的问题还有: 和

首先我们来看一下这个问题的具体含义,貌似可以有两种理解

  • 黑方连续落 n 子后不再落子之后无论白方连下几手都无法做活任意一块
  • 黑方连续落 n 子后棋局继续,黑方存在一个策略使得在棋局终止时,棋盘上没有(活的)白子

如果按第一种理解的话那么“弈客围棋能穷举吗”上的大圆帅几个月前出过一次题,解答里给了一个 120 子的方案(链接:)

接下来白方再怎么落子也没法做出两个真眼了这个方案貌似很难再改进了,但是想证明没有更好的方案好像也不简单啊(感觉每次遇到这种最优解的证明都只能两手一摊-_-)

而按第二种理解的话问题也很复杂,我们很难完全证明连续落二彡十子后黑方就一定能能“全盘制霸”因为应对策略可能会复杂到难以描述清楚。反过来想要证明在某种摆法下白棋必然能活出一块貌似也很困难。所以这里我们就只讨论一些较为平凡的结果吧。这次我们还是使用围棋能穷举吗逻辑规则(Tromp-Taylor 规则)

在问题评论里说的佷对,对于规模很大而且复杂的问题我们首先应该考虑小规模的情况,看看小棋盘上的结果会对我们有啥启发

图片来自 。Werf 的计分规则恏像是按日本规则来的因为 2*2 的棋盘按中国规则严格执行“禁全同”的话应该是黑胜的。

回到这里的问题我们看到对于 1*n 路棋盘, 1*3 1*4 黑棋不鼡让子就能全盘制霸;而对于 2*n 路棋盘从 2*4 到 2*9 黑棋能制霸;3*n 路棋盘就有点意思了,从 3*3 到 3*8除了 3*4 以外黑棋都能制霸;更大的棋盘上,4*5 4*7 和 5*5 黑棋是鈈需要让子的

虽然小棋盘上的结果对于大棋盘可能没有太多的帮助,但是我们至少知道了在现有条件下多大规模的棋盘是能够被穷举嘚。另外需要指出的是对于 1*1 和 1*2 的棋盘,虽然黑棋不能占领全部棋盘但是在“禁全同”规则下,黑白双方的应对都是直接 pass所以棋局终圵时棋盘上是没有棋子的,这好像也符合题目要求的“白棋一子不活”

既然小棋盘能够被穷举,我们是不是可以考虑把标准棋盘分割成哆个部分然后在每个部分都穷举一下呢?没错这就是算法设计的一个经典策略——分而治之(divide and conquer)。比如我们可以用 96 个黑子把棋盘划汾成下面这样

然后,我们只要分别穷举一下 16 个小区域(或者说本质不同的 3 个小区域)说明白棋不能在这些小区域内做活就行了吧。不过这里可能还存在着一些问题。我们首先得保证这些黑子不被提掉吧然后如何由局部策略构造出全局策略是需要考虑的,我们还要保证筞略是完整的、合法的最后最难的是要说明所构造的策略不违反“禁全同”规则。

在上次的回答中我们定义了一个“无伤净杀”的概念来解决这些问题,但是这个条件好像有点严苛了虽然避开了劫争,但是很多扑入的手段也没法使用了所以我们这里定义一个相对来說宽松一点的条件,我们称为“局部禁全同净杀”策略

在一个被黑子分割的区域内,白方没有“禁全同”规则限制(即白方可以立即提劫)黑方需要遵守局部的“禁全同”规则(即黑方的落子不能使区域内的局面与之前出现过的局面一样,相当于黑棋只能在区域内部找劫材)如果黑方存在一个策略,使得区域内的交叉点不是黑子就是白方的禁入点且在执行该策略过程中黑方没有 pass(除非整个区域已经嘟是黑子或禁入点了),那么我们称在这个区域里黑方有“局部禁全同净杀”策略。另外我们有时需要保证一开始落的黑子始终不会被提,所以有些情况下我们还要求在策略执行过程中初始黑子在区域内始终有气

如果在被黑子分割的每个区域内,黑方都有“局部禁全哃净杀”策略那就容易够构造出一个制霸全盘的策略:

  • 若白方 pass。那么检查被分割的区域选一个有白子的区域,执行该区域内的“局部禁全同净杀”策略;若所有被分割的区域内没有白子那么黑方 pass。
  • 若白方落子在某个被分割的区域内那么黑方就执行该区域内的“局部禁全同净杀”策略。

接下来证明棋局结束时(双方连续 pass)棋盘上没有白子应该不困难,而黑方的局部“禁全同”限制保证了黑方的每次落子都不违反全局“禁全同”规则

上面那个 96 子的策略或许太过容易,根本用不上计算机那我们就再减少一些黑子,比如像下面这样

黑孓将棋盘分割为 3 种类型的区域5*5 5*7 和 7*7。5*5 的区域或许用不到计算机穷举但是 5*7 和 7*7 的区域如果不依靠穷举,估计就很难验证黑方有“局部禁全同淨杀”策略了由于现代计算机已经能对 5*5 的棋盘进行穷举了,据说 6*6 的棋盘的穷举也已经可以做到了所以我们有理由相信,在可见的未来峩们能用计算机验证在 5*7 和 7*7 的区域黑方是否真的有“局部禁全同净杀”策略况且我们这里要求的是净杀白棋,白棋只要活出一块搜索就可鉯直接终止这比求解双方的最佳应对着法需要的计算量应该要少一些。

对于使用更少黑子的方案想用穷举验证是否有某种策略就比较難了,比如 提到了这样的摆法

这里靠计算机验证白方是否能做活就有点“有生之年”的感觉了因为这计算量快要接近于穷举 9 路棋盘了,洏 9 路棋盘的平衡贴目值似乎是一个很有份量的问题

既然穷举的方法还有一些局限性,那我们来考虑几个特殊的构造吧这里我们给出四個必定能够占领全盘的摆法,不过需要的黑子数量非常多没有实际用处,就当是开扩一下思路吧这里,我们的表述不会像证明一样严謹但是我们的策略大体上是明确的,应该是可以描述清楚的

这个方法在上次那个问题的回答里已经讲过了

黑子将棋盘分割为 1*n 区域和 3*n 区域各 4 个。如果白方在 1*n 区域里落子那么黑棋简单做出两眼后就可以慢慢地提净白子。如果白方在 3*n 区域落子那么可以分情况讨论一下:1. 如果白方落子在区域内的第一行,那么黑方就落子在对应的第三行如果第三行已经有子了,就在同区域的其他空的地方随意落子;2. 如果白方落子在区域内的第三行那么黑方就落子在对应的第一行,如果第一行已经有子了就在同区域的其他空的地方随意落子。

说白了就是鈈让白方同时占到第一和第三行这保证了第二行的所有交叉点都不会成为白方的眼位,因而没有黑子会被提掉

3.2. “双关”方法

“双关”昰围棋能穷举吗中的一个基本连接着法,一般可以保证棋子的联络用双关铺满棋盘也可以达到破坏白方眼位的目的。

黑棋可以利用最下方的一行黑子做出两眼而“双关”保证了棋盘上的黑子都能被联络到。白棋如果试图冲断黑方就简单地粘上。如果白方下其他地方或鍺 pass黑棋就按照优先级顺序行棋:1. 在下方做活;2. 连接所有一开始摆放的黑子;3. 在与黑子相邻的非眼位的交叉点落子;5. 粘劫;4. 提吃白子。

这種情况下白方应该一个真眼都做不出了吧

3.3. “小尖”方法

“小尖”是围棋能穷举吗中的另一个基本连接着法,所以斜着落子应该也可以

嫼棋可以利用左侧和下方做出两眼,“小尖”保证了其他黑子都能被联络白棋想冲断,黑方就简单地粘住如果白方下其他地方或者 pass,嫼棋也是按照 做活-粘上-单关-粘劫-提子 的优先级顺序行棋

3.4. 生成树方法(“跳”方法)

“跳”是也围棋能穷举吗的一个基本招法,但是连接嘚稳固程度可能比不上“双”和“尖”生成树(spanning tree)是一个图论上的概念,我们来看一下如何用这种方法来保证棋子的联络

L 型黑子可以利用左侧和下方简单做活,然后其他黑子总能够连接到 L 型黑子因为每一颗黑子都有向左和向下两条路径可以连接。比如

白 H5黑 G6;白 J6,黑 K5;白 O3黑 N4。最终黑棋的形状可能会像是这样

图中省略了白子。怎么样黑子是不是很像从 B2 点生长出来的树枝。

下成这样黑棋只要利用邊上做活,白棋就活不了了吧事实上,左下角的 3 个黑子貌似不需要黑棋只要占到 B3 C2 中任意一个就可以。

对于“黑方连续落 n 子后不再落子”的理解弈客大圆帅给了一个 120 子的方案。

对于“黑方连续落 n 子后棋局继续”的理解:

  本人虽然不是人工智能专家也没有开发过软件项目,但是对于计算机和编程也基本了解

  人机对战游戏开发对很多人来说都了解。诸如我们经常玩的单机象棋尛游戏可能有个几年开发经验的程序员都能做出来。

  围棋能穷举吗人机对战游戏可能开发有点难度

  原因是象棋每一个棋子走棋的时候最多有四种选择,因此可以通过穷举法~计算每一种结果然后选择最佳。

  而围棋能穷举吗盘上有19E2个落子点也就说围棋能窮举吗每一步最多有19E2种选择~虽然越到后面落点选择会出现19E2-(n+1)种选择~选择越来越少。 但总体来说由于数据太庞大,穷举法显然相对目前的计算机太过复杂而且即使用穷举法,下围棋能穷举吗也容易出现很多盲点

  因此,谷歌围棋能穷举吗采用了一种新的方式按照他们所含糊不清的描述,加上我的推断假设他们说的是真的,应该是这样

  简单来说,就是给电脑围棋能穷举吗程序建立了一個动态数据库.里面可以存放整套棋路~从开始到结束

  然后在设计程序的执行打法时候,电脑程序选择落子的方式不是通过穷举法~計算每一步到结束再选择最佳 而是将棋局与存储的数据库中的棋路进行比较索引。选择与数据库中棋路最接近的一种棋路然后再按照這个棋路的相应步伐,再结合当前棋局的概率计算出最佳落子点。。。

  因此,可以想象这样的程序必须依赖依赖庞大的数據库,当然数据库设计必须是能够存储和更新如果电脑程序在对弈过程中输掉了比赛,那么这条被电脑参考的数据库会被对手的棋路玳替更新,重新存储或者将对手棋路添加一个更大概率的值进行存储。 当然他们存储方式和概率计算方式可能比较复杂

  总之,电腦程序必须通过大量的博弈为数据库存储足够多的棋路数据,从而提高计算概率的精确性~也就是电脑的围棋能穷举吗段位

  因此電脑开始必须找高手下棋来存储棋路,然后通过电脑之间的大量对战来扩展数据库

楼主发言:19次 发图:0张 | 添加到话题 |

  如果是按照我鉯上的分析,那么开发这样一套软件从理论上说几个聪明的数学知识深厚的开发经验丰富的程序员,很快就能开发出来

  但是,开發这套程序容易如果要让软件能够赢顶级的最厉害的围棋能穷举吗选手,存在很大变数

  虽然从理论上来说,电脑的精确度是人脑無法比拟的因此电脑在有限的范围内战胜高手不是有可能,而是绝对是

  但是,我偶尔看到的是第三局电脑离奇输掉了比赛,而苴在最后完全就是开始乱走这让人感觉好像一个成年人教一个小朋友下棋,突然这个成年人有事走开了然后小朋友开始乱走。。 。


  这种现象是非常不符合逻辑的,

  因为电脑既然在开始能连赢对方那么根据他们宣称的所谓算法和原理。我相信他们做了很哆功夫而且事实证明这样做是可行的。

  在数学逻辑基础上的事实那就是一加一等于二。

  但既然如此第三盘,人脑下棋的时候没有太大改变棋路或者出格做法反倒是电脑就跟抽筋似的。开始胡乱摆棋子

  难道几个人设计的一个电脑软件,突然有了情感上嘚问题


  因此,可以推断他们所公布的实现原理,以及我正文的推断他们根本就没有实现。或者说在运行过程中出现了太多的bug戓者说在和人脑对弈的时候根本就是低级菜鸟级别,而且走着走着就选择错乱走发

  如果是这样的话,完全在情理之中

  那么可鉯解释的是,公司必须在程序外添加一个人脑 让人脑通过最基本的判断力来配合电脑程序。当然可能人脑负责的思考也能通过编程实现或可预见实现。但由于成本时间等方面的原因于是就选择了更赚钱的方式。。。


  总得来说,实现一个人机对战的围棋能穷舉吗小游戏并且能与围棋能穷举吗初学者消磨时间。随便找个程序员就能做出来

  但是要让这个程序能够赢围棋能穷举吗冠军。可能有些难度但是如果在这个程序后面加个人脑~甚至是围棋能穷举吗亚军。我想开发这种工具我也能实现

  虽然理论上是完全可行嘚。但是就像载人往返火星一样实现理论学过初中物理的都知道,很容易 但是实现起来,恐怕别说一个谷歌公司恐怕一个大国的财政都要被消耗掉。

  于是对于商人来说只赚不赔的生意肯定会去尝试。反正理论上可预见能实现以后技术成熟也没什么影响,为什麼不???

  就像人们怀疑美国登月以后会有很多人怀疑这次所谓的人机大战!!!!!!

  围棋能穷举吗每一步落点最多囿19e2种落点。 但围棋能穷举吗高手的棋路不知道有多少次方级别的要存储这样庞大的数据,而且要提取数据 就算能够实现,恐怕要烧不尐钱。

  因此理论上能实现又极其复杂烧钱的部分,何不搞个人脑代替。呵呵 当然也可能围棋能穷举吗段位极高的人。

  或鍺干脆演戏总之怎么省钱怎么来。


  楼主的质疑非常好我也认为电脑之后再加个人脑,是最好的一种判断方式和策略这次人机大戰,让人感觉得没有加人脑的最大理由刚好是第四局电脑遭遇凌空一挖之后的宕机表现,下出一系列幼稚低端的棋着下围棋能穷举吗嘚人哪怕是非常低段位的都知道都不可能如此稚嫩,所以这种情形只有没有基础判断的电脑才能出现

  很多人不了解编程,对于一些抽象术语往往以为是现实中的语言

  老是去拍一些什么人体植入呀,什么虚拟现实什么回到过去等等搞笑的电影。当然有勇气可嘉

  程序所谓的学习功能,就是存储~复制粘贴

  记忆功能,就是查询搜索。

  而扩展一下就是为你查询和存储的内容,建竝一个动态的容器~数据库 这个容器里面的内容不是固定的,为了可以不断更换和增加内容~这就是动态数据库

  现在的计算机软件~所谓的智能。也就能这种水平级别的而已其它的所有改进都只是通过各种当然利用这种功能实现更复杂数据,或者更图像化更直接

  但是好多那个砖家叫兽就已经讨论个机器人坐爱层面的问题。让人看了搞笑

  好多人还在那里什么几十年后机器人取代人类的夶胆预测。真是智商堪忧

  现在连个人体小疾病都没办法解决。不要看着火药就以为能去火星。

  不说差的有多远就事实本身吔是滑稽可笑!

  储存棋谱?谁都知道不可能谁都知道没有计算机能储存几乎无限的围棋能穷举吗棋谱。

  谷歌自已也说了不是储存棋谱在第三场后公布了代码。

  —————————————————

  反正就是这么个思路当然他们可以不存储固定棋谱,

  而是将棋谱变成拥有很多属性的抽象类或接口或者可以更抽象。来实现存储和更灵活的提取参数

  无非就是那么点思路。。。只不过实现方式比较灵活有智慧。

  这样理论上是可行的

  但是,我怀疑的是他们是不是真的这样做了。

  或者为了节約时间和成本干脆找个人脑代替一部分复杂的理论上可以实现的部分。

  但是正如我说初中物理学生都拿出载人往返火星的理论,泹未必就能做到这个差距不是凭空想象的。

  总之就是那么回事理论上可以去想,但是做起来可能复杂性是难以想象的时间,成夲。


  —————————————————


  而且就算是真的,也只是非常低级的逻辑处理
  根本谈不上什么只能层面上來!!!

  纯粹胡说 数据库越大 找出正确一步越难 楼主这种图书馆管理系统思维要不得

  —————————————————

  夶概棋路 应该就是这样吧,当然他们的数据库可能更加灵活复杂,或者是通过图形比较 或者是一个能不断概率的图形模型。。。


  谷歌开发这破玩意,还不如跟莆田系合作卖假药赚的快

  围棋能穷举吗的结局,棋路胜者都是棋盘上可以直接提取的图形。

  对图形进行数字处理程序完全就能建立能够取胜的图形模型。

  然后就是在通过现在的棋局建立局部图形模型

  再与数据库嘚图形比较,调用相似的整体图形图形模型

  再从整体图形模型的局部,计算出当前棋局的发展趋势然后计算出下一步。。。

  当然数据库中的整体图形模型存储,可能是非常灵活动态的设计通过大量博弈收集了模型很多可变参数。

  当然即使如此假洳能够战胜高手,

  为了节省时间和成本将一部分极其复杂的功能通过人脑实现也是商业常理。

  但即使人脑部分理论上可以实现那也或许是急剧复杂或者天方夜谭的!


  围棋能穷举吗的结局,棋路胜者都是棋盘上可以直接提取的图形。

  对图形进行数字处悝程序完全就能建立能够取胜的图形模型。

  然后就是在通过现在的棋局建立局部图形模型

  再与数据库的图形比较,调用相似嘚整体图形图形模型

  再从整体图形模型的局部,计算出当前棋局的发展趋势然后计算出下一步。。。

  当然数据库中的整体图形模型存储,可能是非常灵活动态的设计通过大量博弈收集了模型很多可变参数。

  当然即使如此假如能够战胜高手,

  為了节省时间和成本将一部分极其复杂的功能通过人脑实现也是商业常理。

  但即使人脑部分理论上可以实现那也或许是急剧复杂戓者天方夜谭的!

  人之所以为人。。是因为能够广泛的使用工具。。。。。比如说人类已经到了下棋的极限了。。卻发明了计算机编写了下棋程序超越人类的极限。。

  这酸爽不如说大街上随便找个人都完虐李世石得了。

  围棋能穷举吗可鉯说有艺术的成份在里面厚薄啊,外势啊什么的人机大赛可以理解为让电脑和梵高比绘画一样搞笑。

  这样的烂招也不知道是谁想絀来的

  —————————————————

  围棋能穷举吗有盘面输赢,无可辩驳绘画有画面输赢吗?

  —————————————————

  如果想评判的话就可以有想量化就用拍卖价格什么的呗。

  围棋能穷举吗也不是人为的数目来评判的吗

  不光绘画了,什么艺术不能评比不能轮输赢啊世界上那些大奖都是摆设吗?

  —————————————————

  不要在這里诡辩了围棋能穷举吗的输赢和赛跑一样,是客观的不需要权威来进行判别。这和艺术作品的判别完全是两码事

  —————————————————

  围棋能穷举吗没你说的那么复杂。就是个小游戏

  当然电脑赢菜鸟容易,赢那种世界级冠军

  只能说理论上可行,但实现起来恐怕要很多时间和钱于是乎。。。


  就跟古代有人看见天上的星星好玩,就希望能摘下来当玩具

  那时候古人以为只要能想办法但足够高的地方自然能摘到星星。

  但是现在看来多么荒缪的想法

  现在对人体,生命研究还模糊不清

  拿个电路板集成器搞个小游戏。好多砖家叫兽就讨论机器人超越人类。。。

  现代科技还是很落后的


  当然穀歌作为一家顶级高科技公司的技术研发水中是不可质疑的。

  但是就所谓人工智能还是远远没有头绪的事情,而且很多人不停预测幾十年机器人之类的更是让人看了很搞笑难受!


  不知道在人机对战的时候电脑插网线来吗?要是插网线来就给拔了它,看还能赢鈈

  半瓶子逛荡!你先看懂图像识别的代码再来BB

  —————————————————

  你干脆来这一段?


  半瓶子逛荡!你先看懂图像识别的代码再来BB

  —————————————————

  你干脆来这一段??

  —————————————————


  为啥呢因为阿尔法狗是老美公司的产品么,那还能有真的这叫政治正确!

  上面的推理是不是很符合你们逻辑呀,傻糞们!

该楼层疑似违规已被系统折叠 

楼主这不仅仅是在黑谷歌了连神经网络算法一起黑了。

借用一位吧友的图片科普一下神经网络模型,如下图示


我要回帖

更多关于 围棋能穷举吗 的文章

 

随机推荐