Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 可扩展散列:为什么有人使用最重要的位?_Database_Algorithm_Hash - Fatal编程技术网

Database 可扩展散列:为什么有人使用最重要的位?

Database 可扩展散列:为什么有人使用最重要的位?,database,algorithm,hash,Database,Algorithm,Hash,在对可扩展散列进行编码时,可以选择使用散列值的最高有效位或最低有效位来确定要散列到哪个bucket。使用最低有效位有许多优点: 当你翻倍目录时,你可以复制所有的指针, 而不必创建一个新的目录来交错它们 您可以通过根本不谈论位来简化对算法的讨论,而只使用模块化算法,就像您在一般情况下使用散列一样。使用3个最低有效位选择存储桶与h(x)=x mod 2^3相同 您不需要预先指定二进制数的宽度;如果您使用的是最高有效位,则需要记住特定的位长度 我不明白的是为什么after显示了用最重要的位进行的可

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

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

我不明白的是为什么after显示了用最重要的位进行的可扩展散列。据我所知,最大有效位产生的唯一优势是纸上(或屏幕上)没有交叉线的图表。有什么好的理由可以解释为什么这么多的数据源都是最重要的比特而不是最不重要的比特?

我最后回到了费金等人的研究。他们解决了这个问题:

“我们注意到,如果我们使用了伪密钥的后缀而不是前缀,那么 将目录加倍的算法将特别简单:基本上 包括制作目录非标题部分的第二份副本, 在第一次拷贝之后。然而,我们选择使用前缀 直观简单(因此,通过使用前缀,可以在 伪密钥顺序,而不是反向伪密钥顺序)。”


我不明白为什么他们认为这种方法更直观,因为你可以省去整个比特概念,转而使用模块化算法,但这似乎至少是他们的基本原理。

可能是你提到的原因:图表更整洁,因为所有这些参考都是为了解释。例如,在第一次参考中提供的实际实现使用LSB。