我目前在使用置换表进行移动排序。 使用迭代加深搜索,我存储先前迭代的极小极大值,以便为下一次迭代排序移动。这一切都很好。
以下是我的困惑:
如果我在置换表中找到某个位置,则会使用先前计算的得分进行移动排序(来自迭代加深的先前迭代)。 但是,如果此位置的得分已更新(在极小极大返回后),并且在另一个子树中再次找到该位置(迭代加深的同一次迭代)-我不想仅将其用于移动排序……我应该能够返回该值,因为该值现在已经计算出来,并且是绝对的。
这是我的问题:是否有两个置换表是标准的? 一个用于先前的迭代,一个用于当前的迭代加深。 因此,我首先会检查当前迭代的表,看是否已经计算了极小极大值,然后简单地返回此值。 如果不在该表中,则会使用先前迭代的表进行移动排序。 如果在两者中都不存在,则是我在这次搜索中尚未见过的新位置。
这种思路正确吗? 还是有更有效的方法?