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

  • 数据结构是 int[][][]
  • 它不包含重复项
  • 定义了其中包含的整数范围。假设它是 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/

    10-14 11:08