围棋
引
陪女儿来上围棋课,女儿在教室里上课,而则我坐在另一间围棋教室里,眼睛盯着面前的竖放大棋盘发呆。就写写围棋吧。
天圆地方
围棋棋盘为方,为 19*19 可着点;棋子为圆,有黑白二色。这种设计在现在看来甚为精妙,透露着一种哲学气息的存在。天圆地方,为人刚正不阿但却不失圆滑世故;黑白二色则似有无相生,难易相成,长短相形,高下相盈,音声相和,前后相随,恒也 ,辩证的哲学存在。因此,大家又常称围棋为黑白棋。
落子
我并不擅黑白棋之道,只对其规则略懂一二:将一颗棋子的上下左右全都围住,则该颗棋子便被判为吃 ,而在最后,悉数清点场上所剩各色棋子的数量,以判输赢。
对弈
对弈开始时,一般由执黑子一方先行落子,而白子一方次之。接着双方交替落子,便为主要的规则了。这个规则,看起来简单得不能再简单,但为何围棋会被誉为世界上最为复杂的棋盘游戏呢?这我们可以先看看看其他类似棋盘游戏的对弈。
中国象棋
中国象棋在棋盘上,共有 90 个交叉点,双方以河界为限,双方各有 45 个交叉点。马走日相飞田这样的规则,也都是在这 45 个交叉点内进行。这里,我们如果按照高中数学里的知识来思考简单 思考一下,我们每一步,可能出现的落子的可能性。假设我们现在是在开局之时,所以一方的 45 个交叉点内,最下一排的车马象士将士象马车 一定是存在的,所以会使得这 9 个交叉点无法落子。加上 5 个兵 和两个炮 ,那就有 45-9-5-2 = 29 个可能的落子点。
当然,事实上这样计算显得非常地不专业 ,为何?因为可以一开始就使用我方的炮 将对方的马给打了,用送死的玩法开局。这类我们就另当别论,这里我们尽量简化它的计算。
基于以上 29 个一方落子点,double 一下就是 58 个落子点(简化版 ,读者暂不必较真)。假设,每次我们都以 58 个落子点来计算每次需要计算的量,那会是 58 种可能性 乘以 58 种可能性 乘以 58 种可能性 ······ 一直乘下去。但其实中国象棋并不会每次都产生这么多的可能性,因为车马炮,都有各自限制的行走可能,如前面提到的象飞田,一个象就只会有两种可能的落子点。象棋,使用了不同的角色 ,将一些限制性条件加了上来,进一步降低了计算的空间。
围棋
再来看看围棋的玩法。围棋与象棋有这么几点不同:
没有角色的区分。只有一种角色,那就是棋子
棋盘共 19 * 19 位 361 个落子点
除了已经有的落子点和一些禁着点,其他都可为
从以上可以看出一些端倪:没有任何限制 ,想落哪里就可以落哪里 。这极大地增加了棋盘的解 空间,因为上一颗子放在左上角,而下一颗棋子甚至可以放到完全与之无关的右下角,而只要下棋人脑子里有自己的‘棋阵’,这是完全可行的。
这也正因为如此,所以在很长一段时间内,我们其实比较难以给出围棋游戏 中的 NPC,也就是人工智能 AI。记得小时候我们有电脑中国象棋可以玩,里面的对手有小孩儿、青年人和老头儿。对手的区别在于,小孩儿下得很快,老头儿思考 的时间很长。再到后来,自己读了计算机的研究生后才知道,这里面其实和数学的求解空间和深度有关。小孩儿下得快,因为计算的深度进行了限制以便快速得到结果,而老头则为了得到更优 解,将求解深度加深了若干层,只为能赢 了你。
那,放到围棋上来说,在 AlaphGO 出现之前,似乎没有太见过围棋 AI(可能是我孤陋寡闻),因为其求解深度太深。这里,先给一些概念:P 问题 ,NP 问题 ,NP-Hard 问题 ,NPC 问题 ,这些都是计算理论中的一些问题。具体的含义在这里我们不进行赘述,有兴趣的读者可以翻翻《计算理论》,相比一定非常的头疼。
象棋和围棋的解空间,我们有两张著名的动图:
![](https://static001.geekbang.org/infoq/aa/aa04c43d0e9f695085a9d0836895c64d.gif)
![](https://static001.geekbang.org/infoq/54/54eaf3211c14d744b83d0689eca20408.gif)
上面的是象棋的求解深度,下面是围棋的求解深度。这也就不难理解,为何 AI 人工智能在围棋上,出现得如此之晚。
结
叮,下课了,先写到这吧。
于辛丑年冬月十五
版权声明: 本文为 InfoQ 作者【圣迪】的原创文章。
原文链接:【http://xie.infoq.cn/article/093ddc9c318e15130cdd9e58f】。文章转载请联系作者。
评论