Alpha-beta搜索

将Alpha-beta剪枝(详见词条“Alpha-beta剪枝” )应用在极小化极大算法中就形成了Alpha-beta搜索算法。在搜索过程中max节点的当前最大值称为alpha值,min节点当前最小值被称为beta值。算法刚开始时取alpha值为-∞,取beta为+∞,在搜索过程中max节点使alpha值递增,min节点则使beta值递减,两者构成一个区间[alpha, beta],这个区间被称为窗口(window),窗口的大小表示当前节点值得搜索的子节点的取值范围,向下搜索的过程就是缩小窗口的过程,一旦max节点得到其子节点的返回值大于beta值或min节点得到其子节点的返回值小于alpha值时,就会发生剪枝。

简介

将Alpha-beta剪枝(详见词条“Alpha-beta剪枝”)应用在极小化极大算法中就形成了Alpha-beta搜索算法。在搜索过程中max节点的当前最大值称为alpha值,min节点当前最小值被称为beta值。算法刚开始时取alpha值为-∞,取beta为+∞,在搜索过程中max节点使alpha值递增,min节点则使beta值递减,两者构成一个区间[alpha, beta],这个区间被称为窗口(window),窗口的大小表示当前节点值得搜索的子节点的取值范围,向下搜索的过程就是缩小窗口的过程,一旦max节点得到其子节点的返回值大于beta值或min节点得到其子节点的返回值小于alpha值时,就会发生剪枝。

窗口不断减小,搜索的效率就会不断提升,因此众多学者从窗口的角度对alpha-beta搜索算法进行了一系列的改进。主要可以分为以下几类:① Fail-soft alpha-beta算法;②渴望搜索(aspiration search);③极小窗口搜索(minimum window search);④MTD(n, f)算法(Memory-enhanced Test Driver with node n and value f)。接下来对这四类改进算法作简要介绍。

①Fail-soft alpha-beta算法:

这一算法在返回值上给出了一些启发信息,即当返回值value ≦ alpha,说明真实值小于等于value;若返回值 value ≧ beta则说明真实值大于等于beta。这个方法简洁明了,目前被很多博弈程序使用。

②渴望搜索(aspiration search):

渴望搜索就是渴望真实值在其猜想内的一种搜索,它通过缩小搜索范围以提高剪枝效率。在建立窗口时,我们先假设结果在X周围,然后令窗口的下界alpha=X-window,而上界的beta=X+window,这样会明显的提高效率。如果第一次假设的值没有命中,那么它的窗口就可能是-∞和+∞,效率就不会提高,但如果第一次就猜中,窗口会变小,效率就会明显提高,因此第一次对X的猜测是非常重要的。

③极小窗口搜索(minimum window search):

这一搜索算法也叫空窗口搜索(null window search),它首先假定搜出的第一个节点value值是最佳的,随后将(value, value+1)作为搜索窗口,对兄弟节点进行搜索。搜索一次结束后,如果得出的后续节点value值小于等于alpha值,则说明该节点不是最佳的;如果搜索出的后续节点的value 值大于等于beta值,则说明该节点比最佳节点更好,这个节点就被作为最佳节点,然后通过上述的方法继续搜索。

极小窗口搜索其实就是对Alpha-Beta搜索算法进行窗口探测的一种改进。假设最初的搜索窗口为(-∞, +∞),然后将搜索的第一个节点作为最佳节点,将其返回值 alpha1 形成一个新的窗口(alpha1, +∞)。我们再用空窗口(αlpha1, αlpha1 + 1)去测试后续节点的优劣,若某后续节点更好则又用其返回值形成(alpha2, +∞);然后再搜索,形成窗口(alpha3, +∞),重复此过程,直到搜索完毕。但是此算法的搜索效率和子节点的排列顺序关系密切,如果子节点的顺序是递增的,那么算法就又变成了Alpha-Beta 搜索。

④MTD(n,f)算法 (Memory-enhanced Test Driver with node n and value f)

MTD(n,f)算法是利用返回值修改MTD(n,f)的上边界或下边界,在搜索的过程中窗口不断缩小,直到下边界值大于或等于上边界。此算法在最初搜索的时候必须定义一个初始猜测值,当猜测值逼近真实值的时候,搜索的次数就会变少。此算法的效率与评估函数的精度紧密相关。估值越细,搜索的效率就会越高。

[描述来源:Allis, L. V. (1994). Searching for solutions in games and artificial intelligence. Ponsen & Looijen.

URL:http://www.aiexp.info/files/allis-thesis.pdf

描述来源:Hsieh, M. Y., & Tsai, S. C. (2007). On the fairness and complexity of generalized k-in-a-row games. Theoretical Computer Science, 385(1-3), 88-100.

URL:http://www.sciencedirect.com/science/article/pii/S0304397507004744

描述来源:Aske, Plaat. (1996). Search and Re-search. (Thesis, Erasmus University)

URL:http://www.top-5000.nl/ps/Research%20re%20search%20&%20re-search.pdf

描述来源:Yajing, L.(2012). The research and implementation of Computer Games which based on the Alpha-Beta algorithm. (Doctoral dissertation, Dalian Jiaotong University).

URL:http://cdmd.cnki.com.cn/Article/CDMD-10150-1013522983.htm]

发展历史

Alpha-beta剪枝的发展历程详见词条“Alpha-beta剪枝”。Alpha-beta搜索算法简洁明了,相应的改进算法也层出不穷。1994年,Allis提出Fail-soft alpha-beta算法,这一算法在返回值上给了一些启发信息。1996年Aske在其学位论文中创造了MTD(n,f)算法,利用返回值修改MTD(n,f)的上边界或下边界。2007年Hsieh和Tsai提出了渴望搜索和极小窗口搜索算法,从窗口这一角度对alpha-beta搜索算法作进一步提升。

主要事件

年份事件相关论文
1994Allis提出Fail-soft alpha-beta算法Allis, L. V. (1994). Searching for solutions in games and artificial intelligence. Ponsen & Looijen.
1996Aske在其学位论文中创造了MTD(n,f)算法Aske, Plaat. (1996). Search and Re-search. (Thesis, Erasmus University)
2007Hsieh和Tsai提出了渴望搜索和极小窗口搜索算法用于计算机博弈游戏Hsieh, M. Y., & Tsai, S. C. (2007). On the fairness and complexity of generalized k-in-a-row games. Theoretical Computer Science, 385(1-3), 88-100.

3. 发展分析

瓶颈

基于窗口的改进方法的基本思想是尽可能多地进行剪枝,这种方式的效率不稳定,较依赖于猜想值和真实值的大小差别

未来发展方向

针对以上不足,未来可以在博弈搜索过程中,除了应用以上方法外,还可以结合具体的对弈规则,使用诸如选择性延伸和空着剪枝(null move pruning)的方法。选择性延伸就是就是选择性的增加评价值高的节点的深度,因为在子节点动荡加剧时,选择性地延伸其深度,能够对一些混乱的局面做出更精确的估计。空着剪枝,就是假设人这一方不走棋,电脑连续的走棋,这样我们可以减少其搜索深度,加快搜索速度。

Contributor: Keyu Qi

简介