alpha beta搜索迭代加深反驳表

时间:2013-04-26 12:00:32

标签: minimax alpha-beta-pruning

我已经实现了迭代加深的alpha beta搜索,我已经阅读了几种技术,通过搜索先前从深度搜索得到的最佳移动来进一步优化算法。

据我了解,我可以在动态长度列表中存储先前深度搜索的主要变体吗?例如,假设我用PV搜索到深度4:[1,0,2,3]表示在深度1处选择移动编号1,在深度2处选择移动编号0,在深度3处选择移动编号2等...,然后对于深度5搜索,算法将首先从该先前深度PV搜索节点的子节点。

是你所谓的反驳表吗?

来自此link的反驳表的描述:对于每次迭代,搜索产生从根到叶节点的每次移动的路径,该路径导致正确的极小极大分数或其值的上限。来自d-1层搜索的该路径可以用作搜索的基础。通常,搜索前一次迭代的路径或反驳移动作为当前迭代检查的初始路径将证明足以反驳这一移动的深度。

如果它不相同,你能解释一下反驳表是什么(因为对我而言,两者似乎相等,但我不确定)使用反驳表而不是我先提到的方式有什么好处?

1 个答案:

答案 0 :(得分:1)

根据链接提供的描述,我假设反驳表或多或少地将三角形PV-Table的概念扩展到所有根移动。换句话说,不仅最佳根移动,而且所有根移动都与三角形PV表相关联。

但是,我可能会弄错,因为我之前从未使用或甚至没有听说过这种技术。在今天的世界中,分配足够大的transposition tables没有问题,与转换表的标准技术killer moveshistory tables相比,我认为反驳表没有任何优势。 (虽然许多引擎不再使用后者)。

我的建议:如果你还没有实现换位表和杀手动作,我强烈建议从那里开始改进移动顺序。