国际象棋:从转置表中提取主要变体

时间:2016-06-13 05:04:11

标签: algorithm chess alpha-beta-pruning

早些时候,我遇到了一个涉及我的主要变体被alpha-beta搜索截断的问题。实际上,这似乎是一个普遍的问题。来自Crafty的作者:

  

具有更差特性的另一种解决方案是提取完整的PV   从转置表中,避免使用三角形数组   完全。如果换位表足够大,那么   什么都没有被覆盖,这几乎可以工作。但是还有   一个隐藏的“陷阱”。搜索PV后,继续搜索   树的其他部分,你会经常遇到一些   那些相同的立场,但哈希草案将不够深入   允许使用该条目。你继续搜索,现在必须   覆盖该条目(确切的哈希签名匹配需要这个)和   你现在将转置“跟踪”留给另一个端点,一个   这与原来的分数不符。或任何一个trans / ref   根和实际PV端点之间的条目被覆盖   完全不同的位置,你现在无法搜索   转置表,用于查找要显示的实际端点。   有几种使用这种方法来生产PV,并且抱怨是   一般频繁和响亮,因为评价配对   无关的PV对于调试或分析都不是很有用   你自己的游戏。

这很有道理。

考虑主要变体是ABCDEF,但AB将棋盘返回到原始位置。然后,后面检查的替代线可能是CDEFGH,这导致与早期的CDEF搜索不同的评估。因此,AB之后的电路板状态的转置表条目被覆盖,可能是一个将被alpha-beta(!!)切断的节点,并且ABCDEF的PV将永远被破坏。

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

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

0 个答案:

没有答案