minimax - alpha beta搜索迭代深化反驳表

标签 minimax alpha-beta-pruning

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

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

这就是你们所谓的反驳表吗?

反驳表的说明从这里link :对于每次迭代,搜索都会生成从根到叶节点的每次移动的路径,该路径会产生正确的极小极大分数或其值的上限。从 d - 1 ply 搜索开始的这条路径可以用作搜索到 d ply 的基础。通常,搜索前一次迭代的路径或反驳移 Action 为当前迭代检查的初始路径将足以反驳更深一层的移动。

如果不一样,你能解释一下反驳表到底是什么(因为对我来说,两者似乎相等,但我不确定)以及使用反驳表而不是我首先提到的方式有什么优势?

最佳答案

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

不过,我可能是错的,因为我以前从未使用过甚至听说过该技术。在当今世界,分配足够大的transposition tables是没有问题的。 ,与换位表的标准技术相比,我没有看到反驳表的任何优势,killer moves也许history tables (尽管许多引擎不再使用后者)。

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

关于minimax - alpha beta搜索迭代深化反驳表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16235923/

相关文章:

python - alpha-beta剪枝算法中的alpha值是如何使用和更新的?

java - TicTacToe minimax 算法在 4x4 游戏中返回意外结果

java - Negamax国际象棋算法: How to use final return?

javascript - 极小极大算法不适合国际象棋中的队友

artificial-intelligence - 我们如何确定 minmax 的时间和空间复杂度?

java - 尝试使用极小极大制作无与伦比的井字游戏

algorithm - 极小极大算法 : Cost/evaluation function?

java - Tic Tac Toe negamax 实现。

java - 使用二叉搜索树进行 Alpha Beta 修剪

minimax - 我的静态搜索有问题吗?