作者:蒋萍
小M接触棋软1年有余,看过一些参考书籍,不过在一次处理旧书中误将有用的书损失殆尽,记得比较好的一本叫<<象棋对策论>>(黄少龙编著),那本书可以说是开象棋理论数字化的先河,书中将我们平时经验化的形势判断完全数值化,为以后的软件引擎的制作思路提供了理论指导。当然,我没有看过其他国际著作,也许在黄老出这本书以前,国际象棋就有类似著作了。
下棋的思路是怎么回事呢,其实说起来也不复杂。比如说面对一个局面,该我走子了,我会首先对形势作一个分析:
第一步:对比子力,双方子力在您的心目中大概应该有个数值,如车7分,马、炮3.5分等,而王的值无穷大(暂时打100分吧 )会有子力相当或者强、弱3种情况。
第二步:对比子力位置,这就是所谓的子力的势能和动能了,动能就是子力的活动性,边角上的马和中心区域的马动能自然不同;还有就是势能,比如都是过河兵,那么靠王越近势能当然越大。
第三步:其实是最重要的一步了,通常前辈棋手叫作先后手,国际惯例叫作主动性,这样的说法都不是很便于理解,其实应该归类于着法估算。举例来说,假如我走1步就绝杀了,那么前面两个步骤就不用看了。这是极端的说法,大多数情况并非如此,而是通常说的红有先手,或者黑有先手,这是一种什么能量呢,其实就是主动性,也就是迫使对方应着,一种威胁的能力,我暂时叫它胁能,这样好理解了,先手原来是一种胁能!那么这样的胁能有什么用呢?其实在有先手的一方,撇开直接杀王的特殊情况不谈,总是试图通过逼迫对方应着将胁能转化为势能,动能或者吃子而转化为子力。举个最简单情况,照将抽车——将胁能转化为子力;通过叫吃子迫对方让开重要战略位置——胁能转化为动能、势能。所以胁能是最重要的也是最难掌握的,初学者往往爱兵如命,只管自己的子力,对方一吃就跑,诚不可取。及至小有进步,又走到另外一个极端,只要先手,不要子力,往往连弃双车而杀不死对方,风光一阵以后无兵可用,自刎乌江。这些都是形势判断不足的表现,所以古书中将先手说得神秘,也不过是强调其重要性,其实质并不足以致命,也不是先手一方形势就好,如果先手不能转化为子力或其他优势,不足以弥补子力缺损,也是要输棋的。先手好是指子力,动势能都相当的情况下,是一个相对的概念,由于其具有难以掌握的特点,所以前辈将其神话了。
综上所述,子力、动能、势能、先后手四方面的能量是相互依存的,同时在一定条件下必然相互转化。
那么软件的引擎又是如何进行形势判断呢,小M幸于前月淘得一个至宝——盗版V4,就以此为例谈谈理解。
大家是很喜欢说“层”的概念的,什么叫做层。首先从初始静止局面开始,双方未走子,子力相当,动势能一样,红方先手,根据经验,第一步走棋大约是一个兵(静止兵,3路或7路)的价值,红走以后轮黑走,如果双方不犯错,形式曲线不会超过一个兵的波动,假设这个值为0.5吧,大家都知道,一个兵的优势一般都不足以致命,那么走来走去,双方和棋。
要理解“层”的概念,先要理解一个棋路树的概念,想象一棵树在您的面前,数根为0节点,该点为计算出发点,分值(双方差值)为0,软件会考虑所有着法,假如有2种,此为第1层,从0节点上伸出2个分支,这2个分支均为1层节点,标注为1(a)、1(b),那么1(a)、1(b)后,软件又各考虑到2步(此处软件会考虑所有着法,因此专业称法是搜索),那么形成第2层,就是2打头的a,b,c,d四种着法,以此继续,假如搜索到8层,软件会在第8层考虑2的8次方的着法,根据几何级数计算,这层的着法当然比前面所有着法的总和还多,这也就是朋友们问为什么自己的盗版V4跑10层只需要20秒,跑11层需要40秒甚至更多的原因。当然,软件会随时优化自己的计算,在形成棋路树的过程中删除很多分值明显不合门槛值的着法,使计算速度加快,专业称法为剪枝。
比如设定为8层,那么软件会把每步搜索到的着法作形势判断,随时剪枝,最后以回馈到的最佳分值作法的第一步作为出步。后台思考原理一样,只不过是帮对方思考罢了。形势判断近称审局,审局就需要考虑前面讲的子力、动能、势能、先后等方面因素,审局越准,那么棋力越强。剪枝门槛值也是一个因素,人类棋手甚至会走出负值为一个马的着法而取得胜利,那么这个门槛越宽,审局越可靠(注意没用“准”字)。但是计算量越大,耗时越多。改进软件速度的一个有效方法可以简单缩小这个门槛值而基本不影响棋力,因为特例比较很少。那么这些特例是如何出现的呢,和大师下的时候,大师有时会弃车取势,经过很多步以后取得确立优势,而软件早就把这样的着法排除,因为门槛设定负值太多而进不来嘛。这样的问题,一个是软件审局的问题,另一个就是计算深度的问题,假设放宽门槛值并计算到20层,那么这样的“人类”招法也会被软件发现。
有的人抱怨,我的V4老是计算并不好的那步,怎么办?那么其实另外一步较好的他也考虑了,只是分值不高而没显示,这样的问题就是纯审局的问题。怎样修正提高?其实软件引擎发展到一定程度,大砍大改是不可能了,就是结合大量的高端对局,然后请大师级棋手(而且要懂点计算原理)来配合修正,日积月累,就会不断提高。
从之前的帖子中发现,poor喜欢网友贴局分析,可能也修正数千次了吧,而软件棋力提高很慢,这是为什么呢?因为贴局大多是岛9关,楼10关什么的,至多是华山快棋,而最高级别慢棋却很少,那样的对局质量很差,只会使修正失去方向,今天修对了,明天又修错了,周而复始,不得安宁。道理很简单,跟臭棋下也就臭棋了,怎么长进?不过明显的bug还是被POOR,小叶发现了,修改得欢天喜地,取得了一些效果。
那么有人问,纵马奔流怎么那么厉害?其实它的引擎起点就高,不能和V4相比,V4如果能坚持在华山慢局的基础上修改,那么假以时日,也足可与其争雄!到时,v4也可能是Vn也就是最好的象棋引擎了。
好了,今天就聊到这里吧,小M下午还要到酒店打工端盘子,恕不奉陪了,以后再写。其实小M学的是计算机专业,有几次在棋缘论坛回答计算机问题,大猩猩跳出来说:“这个不象蒋萍”,西西,搞得小M不好发表正儿八经的文章了,筛边打网的倒写了不少,今日再作冯妇,写点正经东西,真是愉快!
8懂~~