国际象棋:从转位表中提取主要差异

之前,我遇到了一个涉及我的主要变体被alpha-beta搜索截断的问题。 事实上,这似乎是一个常见问题。 从Crafty的作者:

另一个性能更差的解决方案是从转置表中提取完整的PV,并避免完全使用三角阵列。 如果换位表足够大以至于什么都不会被覆盖,这几乎可以工作。 但是有一个隐藏的“陷阱”。 一旦搜索到PV,您将继续搜索树的其他部分,并且您将再次遇到其中一些相同的位置,但散列草案不会足够深以允许使用该条目。 您继续搜索并现在必须覆盖该条目(确切的哈希签名匹配需要此条目),现在您将转移“路径”留给不同的端点,而该端点与原始分数不匹配。 或者根和实际PV端点之间的任何一个trans / ref条目完全被另一个位置覆盖,现在您无法搜索转置表来查找要显示的实际端点。 有几个人使用这种方法来生产PV,并且投诉通常频繁且响亮,因为与无关PV配对的评估不是非常有用,无论是用于调试还是用于分析自己的游戏。

这很有意义。

考虑到主要变化是ABCDEF,但是AB将板重新返回到原来的位置。 然后,稍后检查的另一条线可能是CDEFGH,这会导致与之前对CDEF的搜索不同的评估。 因此,AB之后的电路板状态的换位表条目被覆盖,可能具有将被α-β(!!)截断的节点,并且ABCDEF的PV被永久销毁。

有没有办法解决这个问题,还是我必须使用外部数据结构来保存PV?

具体来说,当且仅当新条目更深更精确时,更换有什么问题? 这似乎不起作用,但我不知道为什么。

链接地址: http://www.djcxy.com/p/56335.html

上一篇: Chess: Extracting the principal variation from the transposition table

下一篇: Beta search truncating my principal variation