迭代加深还是反复试验?

时间:2012-06-07 14:59:59

标签: performance depth processing-efficiency iterative-deepening alpha-beta-pruning

我正在编写棋盘游戏。我使用alpha-beta修剪生成了一个游戏树,并有两个选项:

  1. 使用迭代深化来优化alpha-beta,以便在时间结束前不断生成一层。
  2. 通过反复试验,我知道在没有事先检查较低层数的情况下,时间限制内每个电路板配置的最大深度可达。
  3. 哪种方法更好,会使搜索更深入?我知道,例如,一开始我可以生成一个深度为X的树,消耗所有可用的时间......迭代加深可以增加更多的深度吗?

    让我知道我是否可以更清楚......

1 个答案:

答案 0 :(得分:1)

如果您的分支因子和评估函数的所需时间在不同轮次之间保持大致相同,您可以使用选项2.但听起来可能非常困难。

如果您没有完美的移动排序,则选项1能够显着提高alpha-beta的性能。您可以保存每个节点的最佳移动,在上一次搜索期间找到d-1,然后告诉alpha-beta先搜索。它被称为转置表,如果可以在您的情况下实现这一点,则选项1将主导选项2。

我第一次听说换位表时我认为它不会产生太大影响,但它将我的最大搜索深度提高了50%。