database - 可扩展哈希 : why does anyone use most significant bits?

标签 database algorithm hash

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

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

我想不通的是为什么 referencereference 之后在 reference 之后显示使用最高有效位完成的可扩展散列。据我所知,最高有效位产生的唯一优势是纸上(或屏幕上)没有交叉线的图表。为什么这么多源使用最高有效位而不是最低有效位,有什么充分的理由吗?

最佳答案

我终于回到了original source paper费金等人。阿尔。他们解决了这个问题:

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

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

关于database - 可扩展哈希 : why does anyone use most significant bits?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26854731/

相关文章:

database - 单元测试 Restful 网络服务

database - 限制用户只能访问 Oracle SQL Developer 中自己的表

algorithm - 在均匀网格上查找到点云中最近点的距离

ruby - 迭代散列中的键的最快方法

javascript - 如何跟踪 javascript 行为的起源,特别是 - 将哈希添加到我的 url

linux - 尝试以二进制形式输出 Openssl Hash 以比较位

php - 基于不同键的回显数组

python - 从 Django sqlite3 数据库中删除对象,减少数据库大小

java - 递归遍历HashMap?

python - 包装器的循环参数要求