完美的哈希时间复杂度

时间:2018-11-02 01:11:29

标签: algorithm hash

一个完美的散列会在0(1)时间内删除并搜索吗?如果是这样的话,那为什么计算机科学家们不一直都使用完美的散列呢?如果不是的话,那么时间的复杂度又如何呢?

1 个答案:

答案 0 :(得分:1)

  

一个完美的散列会在0(1)时间内删除并搜索吗?

是的,因为您只会得到一个元素的存储桶。因此,您可以获得与元素数量一样多的存储桶。

  

如果是这样,那么为什么计算机科学家不一直使用完美的哈希算法呢?

原因之一是理论。 完美的哈希函数具有内射性,即使不是不可能,也很难定义该函数。

考虑以下琐碎的结构:

{
  int x;
  int y;
}

基本上,您希望使用hash()函数为x和y的每个可能值提供唯一的结果,这可能是不可能的。基本上,对于诸如x + yx * yx ^ y之类的琐碎输入,您始终可以创建另一个输入,以产生相同的结果。

另一方面,有可能(如|N^2| = |N| = aleph-null-参见Cantor pairing function

另一个原因是实用-您的return函数必须具有返回类型。返回类型必须能够存储所有可能的注入结果-因此,对于两个32位值的散列,对于三个3 * 32等,它将需要64位。(比较上述配对函数有效地将参数相乘) / p>