这不是具体解决方案的具体问题;但这是对我无法找到任何关于如何为哈希表和类似任务选择一个良好的哈希函数的好的Stack Overflow问题的回应。
原来如此!让我们来谈谈哈希函数,以及如何选择哈希函数。如果编程菜鸟需要为他们的特定任务选择一个好的哈希函数,那么选择一个呢?简单快速的Fowler-Noll-Vo什么时候适合?他们什么时候应该在MurmurHash3中供应?在比较各种选项时,您是否有任何关于良好资源的链接?
答案 0 :(得分:4)
哈希表的哈希函数应具有这两个属性
出于哈希表的目的,所有加密函数都是 BAD 选项,因为计算成本是巨大的。因为此处的散列不是用于安全性而是用于快速访问。 MurmurHash被认为是适用于大型哈希表或哈希索引的最快且统一的函数之一。对于小表,一个简单的哈希函数应该没问题。一个简单的哈希是我们混合对象的值(通过乘法,加法和减法与一些素数)。
答案 1 :(得分:1)
如果您的哈希键是字符串(或其他可变长度数据),您可以查看Ramakrishna和Zobel的this paper。他们对几类哈希函数(速度和低碰撞)进行了基准测试,并展示了一个比通常的伯恩斯坦哈希更好的类。