想了解人机大战背后的网络象棋算法吗?这篇棋子价值评估、棋局搜索策略以及电脑如何模拟高水平的棋局判断,是象棋爱好者和计算机科学爱好者的必读内容。
请搜索电子书
人机大战与网络象棋
在这里简单的介绍一下。(列举的数据不一定正确,主要的是介绍方法。但是现在的软件还无法脱离这个大框框)
1.固有能量。赋予每个棋子一个固定的价值。如车10,炮4.7,马4.5.相1.6士1.7兵0.6(软件根据棋局的进行有一些微调,如过河兵的价值升高了)
2控制占位评分。因为不同棋子在棋盘的不同位置有不同的价值,所以制定出棋子的评分表。如车在下二路的占位评分是分别是0.16,0.20.0.18,0.240.260.240.180.200.16。控制肋时候从上到下分别是0.18.0.240.180.220.180.200.140.140.160.14。
总体而言肋道,河线,卒林线。下二路都是分数比较高的
3棋子的活动能力。ek=a/b.a为棋子在棋盘上可以移动的点,b为棋子在无阻碍的情况下的最大移动点,是固定的。如车b=17,车在原位=2/17
4威胁能力。如车吃马=4.5/10=0.45
局面的分数就是上述价值的总和。有可能有的软件增加了一个棋子的灵活程度的分数,如马被蹩腿分数降低
====================================
因为有些局面很复杂,几步过后价值变化很大,所以软件一般是把十几步内的最大可能的走法都搜索评分一遍,然后把几步过后能够达到的局面的分数呈现给你看。
因为不可能所有的棋步都搜索到所以采取了一下几种方法
1剪裁选优法,,选择最好的。其他的就忽略。
2缓步选优法.。当对方没有按照1办法的棋路走的时候,退回来重新搜索评分
3多步选优法。对比棋路选好的
其中软件选择好坏的依据是
1极大极小法。自己的总分达到最大,别人的总分达到最小。
2αβ剪枝法.,把一些无用的计算删除掉,减少计算量,使得软件速度变快。如导致局面分数跌的厉害的败招。
a'a剪枝法实质上就是人们弈棋时常用的思维方式。如果我
们走出一步棋后,对方在几种可能的步法中选择了一步对我方很
不利的着法,则不论其他变化结果如何,皆不会比这更好,只能更
糟,所以我方就不再考虑那些变化了。
==================================
入局时如遇到连将杀的情况,则电脑中储存的杀手程序就起
作用。此时电脑只搜索叫将的着法与对方应将的着法,往深度方
向搜索到底,棋力颇高。
进行局面判断,主要靠审局函数。而各人设计不同
同。因此设计者棋力的高低影响到审局函数的准确性
,效果亦不
从计算机硬件来说提高运算速度,则在这个节点到每个节点
计算审局函数加快了,在同样时间内获得计算的节点数增多,即搜
索深度提高,于是电脑棋力亦会提高。还有一个办法是扩记忆容
从改进程序写法来说采用组合语言比单纯高阶语言,运算速
度快些,关于计算当前局面的审局函数时,可采用差值法,即
目前局面值二上步局面值+子力值变化+位置值变化+·
a-a剪枝法比极大极小穷举法已提高了效率,而剪枝法中又
有逐渐深人法、经验式剪枝法等可进一步提高效率。
从根点出发,先在少数层次进行广度搜索,然后对若干较有发
展前途的着法进行深度搜索,这样自然搜索得快,但也会漏掉佳
着。
在搜索节点前后顺序作些改进,也能提高效率。通常是应将、
解捉等着法优先考虑,叫将、吃子及其他有利着法先考虑,调运强
子车、马、炮等先考虑,优先搜索这些分支。
为了提高效率,适当简化审局函数也是必要的,例如突出子力
价值、位置、威胁等因素,计算起来很方便。