完美的散列表

时间:2013-10-26 04:49:39

标签: hash hashmap hashtable hash-function

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

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

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

7有点武断。

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

1 个答案:

答案 0 :(得分:1)

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

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