Hashing有两个函数vs一个

时间:2017-09-28 09:49:33

标签: string algorithm data-structures hash

哪个最好有两个散列函数,每个结果是n / 2位或者有一个散列函数,最终结果是n位。我们甚至可以编写任何一个语句,或者性能完全取决于用例:我试图散列的字符串类型。

示例:假设我正在散列可能很长(10 ^ 5)的普通字符串, 使用两种方法检查碰撞:

  1. 使用两个散列函数h1(x)和h2(x),结果为两个 int 类型,并将它们分别与猜测相等进行比较。
  2. 使用单个哈希函数,结果为 long int
  3. 这两种方法是否更好(碰撞概率低),另一种方法?

1 个答案:

答案 0 :(得分:1)

没有更好的'

尽可能少碰撞,重要的是什么。如果你可以使用一个哈希函数来实现这一点,那么就像在使用多重哈希函数时获得类似的低冲突次数一样好。

顺便说一下,组合多个哈希函数的方法又是一个稍微复杂的哈希函数。

因此,如果您需要哈希函数,您可以考虑:

  • 我有什么数据可以执行哈希函数?我是否可以使用这些知识来创建最有可能导致视图冲突的哈希函数?
  • 我的哈希函数有多贵(内存,计算时间)。即使碰撞多一点,也许更快更合适。

我建议始终使用实际数据分析不同方法的表现,以确定哪种方法最适合这项工作。