algorithm - 特定数据结构的无碰撞散列函数

标签 algorithm data-structures hash-function

是否可以为具有特定属性的数据结构创建无冲突哈希函数。

  1. 数据结构为 int[][][]
  2. 它不包含重复
  3. 其中包含的整数范围已定义。假设它是 0..1000,最大整数肯定不大于 10000。

最大的问题是这个散列函数也应该非常快。 有没有办法创建这样的哈希函数?也许在运行时取决于整数范围?

补充:我应该说这个散列函数的目的是快速检查是否处理了特定的组合。所以当处理数据结构中的一些数字组合时,我计算哈希值并存储它。然后在处理数据结构中的另一个数字组合时,我将比较哈希值。

最佳答案

我认为你想要的是“完美哈希”甚至是“最小完美哈希”:

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/

相关文章:

algorithm - 打印(不检测)循环与拓扑排序

algorithm - PHP 中的 strlen() 有什么算法复杂性?

algorithm - 具有锁定和未锁定边的无向图中的最小路径

c++ - C++ 标准是否为 unordered_set 定义了桶的结构?

boost - 是否有 64 位版本的 boost::hash_value

objective-c - 根据经度和纬度找出日出时间

arrays - 从数组平均值计算数组元素平均差的有效方法

c - 指向不在C中的列表中的项目

java - Java 中的二叉搜索树

cryptography - 什么是 FreeBSD MD5,为什么它会生成非十六进制表示法的散列值?