Universal family of hash functions只是为了防止敌人攻击吗?

Is Universal family of hash functions only to prevent enemy attack?

如果我的意图只是拥有一个好的散列函数,将数据均匀地分布到所有桶中,那么我不需要想出一系列散列函数,我可以只用一个好的散列函数,就是那对吗?

拥有一系列哈希函数的目的只是为了让敌人更难建立病态数据集,因为当我们随机选择一个哈希函数时,he/she没有关于哪个哈希函数的信息被雇用。我的理解对吗?

编辑: 由于有人试图关闭不清楚;这个问题是为了了解使用通用哈希函数族的真正目的。

I could just do with one good hash function, is that correct?

正如您稍后在问题中指出的那样,"enemy" 知道您使用的是哪个哈希函数可以准备病理数据集。

此外,散列只是将数据存储到 table 存储桶中的第一步 - 如果您正在实施开放寻址/封闭散列,您还需要 select 替代存储桶来碰撞后探测:像线性和二次探测这样的简单方法通常可以提供足够的碰撞避免,并且在数学上可能更简单,因此比重新散列更快,但它们不会保持下一个探测在负载因子下找到未使用的桶的概率。使用另一个 good 散列函数(包括来自此类函数系列的另一个)重新散列,所以如果这对您很重要,您可能更愿意使用一系列散列函数。

还要注意,有时内存中的哈希值 table 用于说明磁盘数据存储在 offsets/sectors 的位置,因此对内存中的数据进行额外的重新哈希计算可能会很远比在磁盘上等待 I/O 只是为了找到另一个碰撞的更高概率(使用 linear/quadratic 探测)更具吸引力。