【问题标题】:Perfect hashtable for完美的哈希表
【发布时间】:2023-03-03 14:07:02
【问题描述】:

我正在寻找一个利用以下要求的哈希函数:

  • N 个不同的整数值将存储在哈希表中
  • 在任何给定时间点,哈希表中存在的值不会超过 M 个
  • 哈希表在多个查询中保持静态(即在某些时候整个哈希表将被初始化,以下调用仅从哈希表中读取)
  • 在哈希表初始化时已知最大可能的键值 K (K >> N)
  • 每个查询的键值对都存在于哈希表中

到目前为止,我使用的哈希函数如下: h(k) = 7 * k % M 其中 M = PRIME_CLOSE_TO(7*N)

7 有点随意。

您对如何改进有什么建议吗?

【问题讨论】:

    标签: hash hashmap hashtable hash-function


    【解决方案1】:

    这是一个起点:http://en.wikipedia.org/wiki/Perfect_hash_function

    实际上,任何普通的散列函数都可以。但是如果你出于某种原因想要一个最小的完美散列,你可以研究一个做完美散列的库,例如:CMPH - C Minimal Perfect Hashing Library

    【讨论】:

      猜你喜欢
      • 2010-11-26
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多