可以使用哪些常用技术来处理转置表中的冲突?
人工智能
搜索
动态规划
iddfs
转置表
2021-10-21 20:27:48
1个回答
您正在寻找的术语是“替代方案”。据我所知,这方面的主要参考仍然是Replacement Schemes for Transposition Tables,尽管它是 1994 年的一篇相当古老的论文。
我将非常简要地总结本文中列出的七种不同方案,但本文的全文也可免费获得并包含更多信息:
- Deep:保留搜索其下方最深子树的位置。
- 新:始终用最新条目替换旧条目。
- 旧:与新相对。为了完整起见,论文仅提及包含它,暗示它可能不是一个好的方案。
- Big1:类似于 Deep,但使用搜索的子树的大小(节点数),而不仅仅是其深度。如果同一位置(即表条目)在子树中出现多次,则只计算一次。
- BigAll:与上面相同,但实际上计算的是节点数而不是位置数(因此多次出现的位置会被计算多次)。
- TwoDeep:在此方案中,TT 被修改为每个表条目包含两个位置,而不仅仅是一个位置。您可以将其视为具有两个“层”的表。在此方案中,如果新位置具有最深的子树(如在 Deep 方案中),则将新位置移动到第一个“槽”中,将第一个槽中的先前位置移动到第二个槽中。如果新位置没有新的最深子树,则将其移动到第二个槽中。
- TwoBig1:与上面类似,但使用 Big1 样式替换而不是 Deep 样式替换。
如果我没记错的话,两层方案往往表现最好(当然,对于每个密钥的相同位数,它们确实需要大约两倍的内存)。
其它你可能感兴趣的问题