是否可以为具有特定属性的数据结构创建无碰撞哈希函数。
大问题是这个哈希函数也应该非常快。
有没有办法创建这样的哈希函数?也许在运行时取决于整数范围?
附加:我应该说这个哈希函数的目的是快速检查是否处理了特定组合。因此,当处理数据结构中的某些数字组合时,我会计算哈希值并将其存储。然后在处理数据结构中的另一个数字组合时,我将比较哈希值。
最佳答案
我认为您想要的是“完美散列”甚至“最小完美散列”:
http://en.wikipedia.org/wiki/Perfect_hash_function
编辑:也就是说,如果您确定并且确定您永远不会超过 [0...1000],并且根据您需要做什么,您可能可以简单地将结果直接“存储”到一个数组中。如果您没有很多元素,那么该数组将是稀疏的(因此有点浪费),但最多 1001 个元素来自 [0...1000] 和 Object[1001](或 int[1001] 或无论如何)可能会做。
关于algorithm - 特定数据结构的无冲突散列函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2686341/