【问题标题】:What is the name for this hash table optimization?这个哈希表优化的名称是什么?
【发布时间】:2016-08-29 18:56:30
【问题描述】:

在实现具有开放寻址的自定义哈希表时,我发现对于我的应用程序,如果我将一行已填充插槽中的探测元素与第一个探测位置中的元素交换,它会提高性能。 (优化表格以更快产生经常访问的元素)

这个优化有名字吗?

【问题讨论】:

  • 通常这种方法称为 MRU 缓存。但它并不特定于哈希表。
  • 谢谢。我用谷歌搜索了“缓存”和“移到前面”,但只找到了关于用于实现缓存的哈希表的文章......我想知道是否有更多的变体用于优化读取访问以及它们(和这个)在文献中被称为, 以 - 如果可用 - 在我的应用程序中试用它们。

标签: algorithm hashtable addressing


【解决方案1】:

您的问题与online-competitive algorithms 字段中的list update problem 非常相似。

您使用的解决方案称为MTF (move to front)。众所周知,这种解决方案是 2 竞争的,这意味着它的表现最多会是提前知道未来的假设对手的两倍。

请注意,您可以比 bit algorithm 做得稍好,后者需要另一个位 + 随机操作,但具有 7-4 的竞争力。

【讨论】:

  • 谢谢,列表更新问题 看来确实合适!我查找了与 hash table 相关的链接,但应该认为一系列填充的探测位置当然可以被视为 list ...
  • 不客气。 FWIW,我认为这也是一个有趣的问题。请注意,如果您使用了碰撞链接,那就是这个问题。探测略有不同 - 将最后一项移动到某个位置,将所有内容移回的成本不像列表中那样恒定。不过,我认为这是最接近您的问题。
【解决方案2】:

这种优化最通用的说法大概是self-organization

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-01-14
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 2013-03-24
  • 2016-03-27
  • 2017-12-22
相关资源
最近更新 更多