【发布时间】:2021-10-31 12:03:50
【问题描述】:
注意:我了解 min-max 的工作原理,并且了解 alpha beta 修剪
即使您只能回答以下我的一个问题,我也会无限感激
无论我如何尝试查看和研究,我都无法理解换位表,特别是为什么我们不能总是使用相同位置的确切值。
我这里指的是伪代码here
我读到我们也无法存储 UPPERBOUND 的移动。为什么会这样?我们已经探索了该节点的所有子节点,所以我们不能保证知道最佳移动吗?为什么我们不能存储最好的移动?
相反,我们可以为 LOWERBOUND 存储最佳移动?分支已被修剪,我们无法获得最佳响应,为什么会出现这种情况?
最后,我理解了为什么我们只能在比根更接近叶的深度使用表(因为我们从更深入的搜索中获得了更准确的信息)。我没有得到与先前计算的(相同哈希)节点相同的节点,为什么我们不能返回找到的值?至少在 UPPERBOUND 的情况下,我们不是已经有了我们将达到的最佳分数(因为我们探索了所有子节点)?
感谢您的帮助,这让我很沮丧很长时间,我似乎无法在网上找到任何可以为我澄清这些的东西
【问题讨论】:
-
您在哪里读到“我们无法为 UPPERBOUND 存储移动”?在您的链接中,每一个动作都被存储,无论其类型如何。
-
您可以在此处的答案点 (2) stackoverflow.com/a/30002765/7058803 中阅读有关它的信息,这也是有道理的,因为当 score
-
好的。这是我第一次看到这个(虽然我是新手)。这很有趣。但是,我不确定存储迄今为止最好的移动是一种损失,即使它是一个下限/上限,因为它仍然可能比已经检查过的其他移动更好。就像您在回答中所说的那样,它不会对移动顺序造成太大影响。
标签: algorithm artificial-intelligence chess alpha-beta-pruning minmax