【问题标题】:Extendible hashing: why does anyone use most significant bits?可扩展散列:为什么有人使用最高有效位?
【发布时间】:2015-01-07 09:38:56
【问题描述】:

在编码可扩展散列时,可以选择使用散列值的最高有效位或最低有效位,以确定要散列到哪个桶。使用最低有效位有许多优点:

  • 当你将目录翻倍时,你可以复制所有的指针, 而不必创建一个将它们交错的新目录。
  • 您可以通过根本不讨论位来简化对算法的讨论,而只需像使用散列一样使用模运算。使用 3 个最低有效位选择存储桶与 h(x) = x mod 2^3 相同。
  • 您不需要预先指定二进制数的宽度;如果您使用的是最高有效位,则需要考虑特定的位长度。

我无法理解的是为什么referencereference 之后reference 之后显示使用最高有效位完成的可扩展散列。据我所知,最高有效位产生的唯一优势是纸上(或屏幕上)没有交叉线的图表。有什么好的理由为什么这么多的来源如此重要而不是最重要的位?

【问题讨论】:

  • 可能是您提到的原因:图表更整洁,因为所有这些参考都是出于解释目的。例如,您在第一个参考资料中提供的实际实现使用 LSB。

标签: database algorithm hash


【解决方案1】:

我终于回到了 Fagin 等人的 original source paper。人。他们解决了这个问题:

“我们注意到,如果我们使用伪键的后缀而不是前缀,那么 将目录加倍的算法将特别容易:它本质上是 包括制作目录的非标题部分的第二个副本, 在第一个副本之后立即。但是,为了方便起见,我们选择使用前缀 直观简单(因此,通过使用前缀可以轻松访问键 伪键顺序,而不是倒置的伪键顺序)。 "

我不明白为什么他们认为这种方法更直观,因为您可以放弃整个想法并改用模数运算,但似乎这至少是他们的基本原理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2019-07-12
    相关资源
    最近更新 更多