图3.10 α-β搜索过程的博弈树
图3.10给出一个d=4的博弈树的α-β搜索过程,其中带圆圈的数字表示求静态估值及倒推值过程的次序编号。该图详细表示出α-β剪枝过程的若干细节。初始节点的最终倒推值为1,该值等于某一个端节点的静态估值。最好优先走步是走向右分枝节点所代表的棋局,要注意棋局的发展并不一定要沿着通向静态值为1的端节点这条路径走下去,这要看对手的实际响应而定。
下面分析一下剪枝的效率问题。若以最理想的情况进行搜索,即对MIN节点先扩展最低估值的节点(若从左向右顺序进行,则设节点估计值从左向右递增排序),MAX先扩展最高估值的节点(设估计值从左向右递减排序),则当搜索树深度为D,分枝因数为B时,若不使用α-β剪枝技术,搜索树的端节点数枝技术.可以证明理想条件下生成的端节点数最少,有
(D为偶数)
(D为奇数)
比较后得出最佳α-β搜索技术所生成深度为D处的端节点数约等于不用α-β搜索技术所生成深度为D/2处的端节点数。这就是说,在一般条件下使用α-β搜索技术,
;若使用α-β剪
在同样的资源限制下,可以向前考虑更多的走步数,这样选取当前的最好优先走步,将带来更大的取胜优势。
5.其他改进方法
使用α-β剪枝技术,当不满足剪枝条件(即
)时。若β值比α值大不了多少
或极相近,这时也可以进行剪枝,以便有条件把搜索集中到会带来更大效果的其他路径上,这就是中止对效益不大的一些子村的搜索,以提高搜索效率。 其他改善极小极大过程性能的基本方法有:
(1)不严格限制搜索的深度,当到达深度限制时,如出现博弈格局有可能发生较大变化时(如出现兑子格局),则应多搜索几层,使格局进入较稳定状态后再中止,这样可使倒推值计算的结果比较合理,避免考虑不充分产生的影响,这是等候状态平稳后中止搜索的方法。
(2)当算法给出所选的走步后,不马上停止搜索,而是在原先估计可能的路径上再往前搜索几步,再次检验会不会出现意外,这是一种增添辅助搜索的方法。 (3)对某些博弈的开局阶段和残局阶段,往往总结有一些固定的对弈模式,因此可以利用这些知识编好走步表,以便在开局和结局时使用查表法。只是在进入中盘阶段后,再调用其他有效的搜索算法,来选择最优的走步。
α-β剪枝过程是二人博弈问题的一般搜索方法,实践证明,该方法可以有效地减少在搜索过程中生成的节点数,提高搜索效率。IBM公司研制的\深蓝\国际象棋程序,采用的就是这样的一种搜索算法,该程序曾经战胜了国际象棋世界冠军卡斯帕罗夫。
以上介绍的各种博弈搜索技术可用于求解所提到的一些双人博弈问题。但是这些方法还不能全面反映人们弈棋过程实际所使用的一切推理技术,也未涉及棋局的
表示和启发函数问题。例如一些高明的棋手,对棋局的表示有独特的模式,他们往往记住的是一个可识别的模式集合,而不是单独棋子的具体位置。此外有些博弈过程,在一个短时期内短兵相接,进攻和防御的战术变化剧烈,这些情况如何在搜索策略中加以考虑。还有基于极小极大过程的一些方法都设想对手总是走的最优走步,即我方总应考虑最坏的情况,实际上再好的选手也会有失误,如何利用失误加强攻势,也值得考虑。再一点就是选手的棋风问题。总之要真正解决具体的博弈搜索技术,有许多更深入的问题需要作进一步的研究和探讨。