2013-04-26 31 views
2

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

据我所知,我可以在动态长度列表中存储上一次深度搜索的主要变化吗?例如,假设我已搜索到深度为4的PV:[1,0,2,3]表示在深度1处选择移动数字1,在深度2处选择移动数字0,在深度3处选择移动数字2等...,然后进行深度5搜索,该算法将首先从该先前深度PV搜索节点的孩子。

这就是你所说的反驳表吗?从这个​​反驳表的

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

如果不一样,你能解释一下反驳表究竟是什么(因为对我来说,两者似乎都是平等的,但我不知道),使用反驳表的优点是什么,而不是我首先提到的方式?

回答

1

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

虽然我可能被误认为是因为我以前从未使用过或甚至没有听说过这种技术。在今天的世界里,分配一个足够大的transposition tables没什么问题,与标准转座表技术killer moveshistory tables(尽管许多引擎不再使用后者)相比,我没有看到任何反驳表的优点。

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