2017-09-28 32 views
0

哪一个更好,有两个散列函数,每个结果都是n/2位,或者有一个散列函数,最终结果是n位。我们甚至可以在一般情况下做出任何一种语句,或者性能完全取决于用例:我尝试对哪些类型的字符串进行哈希处理。使用两个函数进行散列与一个

实施例:可以说,我散列使用两种方法正常字符串可以是长(10^5), 检查碰撞:

  1. 使用两个散列函数H1(x)和H 2(x)的有结果是两个int类型,并单独比较它们以猜测是否相等。
  2. 使用单个散列函数,结果为long int

或者哪种方法更好(碰撞概率低)那么其他?

+1

你如何定义“更好”?碰撞概率低?计算速度?或者什么是你的重要属性?什么使用散列函数?创建一个哈希表?检查文件是否相等? –

回答

1

没有“好”

什么是重要的,你必须尽可能少的冲突成为可能。如果您可以使用一个散列函数来实现这一点,就像在使用多散列函数时碰到类似的低数量的散列函数一样。

顺便说一句,组合多重散列函数又是一个稍微复杂的散列函数。

所以如果你需要一个散列函数你可能会考虑:

  • 什么数据我必须执行散列函数?我可以使用这些知识中的任何一种来创建一个最有可能导致查看冲突的散列函数吗?
  • 多么昂贵(内存,计算时间)是我的散列函数。也许更快的一个更合适,即使碰撞更多一点。

我建议始终使用现实生活中的数据来描述不同方法的性能,以确定哪种方法最适合这项工作。

相关问题