Algorithm 散列时预期的空插槽数

Algorithm 散列时预期的空插槽数,algorithm,hash,hashtable,Algorithm,Hash,Hashtable,我有n个键和一个大小为n的哈希表 我正试图计算出预期的空插槽数 我知道统一散列假设指出,每个键都有可能进入任何插槽 到目前为止,我已经找到了n个键,每个键都有n个插槽,所以n^2个可能的组合 我不确定从这里走到哪里,任何正确方向的观点都将不胜感激! 谢谢 首先,可能组合的数量不是n^2,而是n^n,因为每个n键都有n可能落在插槽中 接下来,由于所有插槽都是对称的,因此空插槽的预期数量E=n*p,其中p是每个插槽最终为空的概率。这是因为即使随机值是相关的,它也会保持不变 现在,请注意单个密钥不在该

我有n个键和一个大小为n的哈希表

我正试图计算出预期的空插槽数

我知道统一散列假设指出,每个键都有可能进入任何插槽

到目前为止,我已经找到了n个键,每个键都有n个插槽,所以n^2个可能的组合

我不确定从这里走到哪里,任何正确方向的观点都将不胜感激!
谢谢

首先,可能组合的数量不是
n^2
,而是
n^n
,因为每个
n
键都有
n
可能落在插槽中

接下来,由于所有插槽都是对称的,因此空插槽的预期数量
E=n*p
,其中
p
是每个插槽最终为空的概率。这是因为即使随机值是相关的,它也会保持不变

现在,请注意单个密钥不在该插槽中的概率是
Q=(n-1)/n

由于存在
n
键,因此没有键落在固定插槽中的概率
p
Q^n


综上所述,我们得到了
E=n*((n-1)/n)^n
(n-1/n)^n
的限制是
1/e
(),因此空插槽的预期数量是
n/e

首先,您应该指定哈希表的类型(每个插槽可能有多个元素?如果没有,则采用哪种溢出处理,即确定替代插槽的策略或类似策略?)而实际的散列函数(包括元素的数据类型)。这个问题纯粹是基于理论的,这就是我要处理的所有问题。我不认为你会说“下一步,由于所有插槽都是对称的,预期的空插槽数E=n*P,其中P是每个插槽最终为空的概率。”只有当插槽为空时才是独立事件。我看不出他们是如何独立的。一个插槽为空显然会影响其他插槽为空的概率。还是我遗漏了什么?@Gene:事实上这是真的,因为预期是线性的。我在答复中澄清了这一点。非常感谢。