1

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

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

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

7有点随意。

您对如何改善这一点有什么建议吗?

4

1 回答 1

1

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

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

于 2013-10-26T05:37:50.120 回答