【问题标题】:Am I right with this Double Hashing?我对这个双重哈希是否正确?
【发布时间】:2013-06-03 08:16:22
【问题描述】:

我正在学习 Double Hash,但我很难理解它的工作原理。我做了一个例子,但我不知道它是对还是错。如果有人可以帮助我,那就太好了。 这是输入:


m = 13


k = { 5, 14, 29, 25, 17, 21, 18, 32, 20, 9, 15, 27 }


h1(k) = k mod 13


h2(k) = 1 + (k mod 11)

【问题讨论】:

    标签: algorithm hashtable double-hashing


    【解决方案1】:

    只要m 是素数,它就可以工作。

    否则h2(x) 的计算结果可能是m 中的non-relative-prime,这可能会使算法在仍有空间容纳更多项目时失败。

    例如:

    • m = 36
    • h1(x) = 1
    • h2(x) = 30
    • 如果table[1]table[31]table[19]table[13]table[7]都被使用;那么下一个要检查的槽又是table[1]

    如果h2(x)m 互质,则循环将始终在返回起点之前访问所有槽。如果m 是质数,则所有数字都是互质数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-13
      • 2011-12-15
      • 2012-01-21
      • 2014-03-24
      • 2020-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多