Algorithm 如何将换位表与MTD(f)一起使用

Algorithm 如何将换位表与MTD(f)一起使用,algorithm,language-agnostic,artificial-intelligence,Algorithm,Language Agnostic,Artificial Intelligence,我正在为一个纸牌游戏编写一个AI,经过一些测试,我发现在我的alpha-beta算法上使用MTD(f)——一系列零窗口搜索——比单独使用alpha-beta要快 这里很好地描述了MTD(f)算法 我的问题是,对于MTD(f)搜索中的每个过程(对于每个猜测),我都不会重复使用以前存储的任何位置,即使链接上的记录表明我应该这样做(事实上,在迭代之间清除表会加快算法) 我的问题是,当我在转置表中存储一个位置和一个值时,我还存储了它有效的alpha和beta值。因此,第二次使用不同的猜测(以及alpha

我正在为一个纸牌游戏编写一个AI,经过一些测试,我发现在我的alpha-beta算法上使用MTD(f)——一系列零窗口搜索——比单独使用alpha-beta要快

这里很好地描述了MTD(f)算法

我的问题是,对于MTD(f)搜索中的每个过程(对于每个猜测),我都不会重复使用以前存储的任何位置,即使链接上的记录表明我应该这样做(事实上,在迭代之间清除表会加快算法)

我的问题是,当我在转置表中存储一个位置和一个值时,我还存储了它有效的alpha和beta值。因此,第二次使用不同的猜测(以及alpha和beta)遍历树不可能重用任何信息。这是人们所期待的还是我在这里遗漏了一些基本的东西


例如,如果对于alpha=3,beta=4,我们得到的结果是7(显然是一个截止值),我应该将其存储在表中,作为alpha=3到beta=6的有效值吗?或者beta=7?

您的问题归结为如何在alpha-beta搜索旁使用换位表的概念理解。这也是我遇到的一个大问题,环顾四周后,我发现这比我读过的任何关于这个主题的论文都更自然地解释了这个概念

基本上,您不能对所有alpha-beta结果一视同仁,因为当发生截断时,结果只表示一个界,而不是真正的minimax值。事实证明,使用边界仍然会始终为您提供相同的最佳下一个状态,但可能没有准确的分数。当存储截止状态时,需要将其视为一个边界,并在下一次传递时尝试对其进行改进。这通常会对同一节点进行多次评估,但会根据需要不断改进实际分数


更完整地实现前面链接的文章中列出的概念。滚动到第14页。

谢谢,这正是我一直在寻找的,并且填补了我理解中的一些漏洞。我认为还需要以某种方式证明,使用更深入搜索的tt值不会使α/β假设无效。至少如果你想要全功率的话。