Math 发生哈希冲突后计算原始集大小

Math 发生哈希冲突后计算原始集大小,math,hash,probability,hash-collision,birthday-paradox,Math,Hash,Probability,Hash Collision,Birthday Paradox,你有一个空的冰块托盘,里面有n个小冰块桶,形成一个自然的散列空间,很容易想象 你朋友有k便士,他喜欢放在冰块托盘里。他反复使用随机数发生器来选择每一分钱放在哪个桶里。如果由随机数确定的桶已经被一个便士占据,他会把这个便士扔掉,再也看不到它了 假设您的冰块托盘有100个桶(即,可以制作100个冰块)。如果你注意到你的托盘上有c=80便士,那么你的朋友最有可能从多少便士(k)开始 如果c很低,碰撞的几率就足够低,以至于最可能的k==c。例如,如果c=3,那么k最像是3。然而,发生碰撞的可能性越来越大

你有一个空的冰块托盘,里面有n个小冰块桶,形成一个自然的散列空间,很容易想象

你朋友有k便士,他喜欢放在冰块托盘里。他反复使用随机数发生器来选择每一分钱放在哪个桶里。如果由随机数确定的桶已经被一个便士占据,他会把这个便士扔掉,再也看不到它了

假设您的冰块托盘有100个桶(即,可以制作100个冰块)。如果你注意到你的托盘上有c=80便士,那么你的朋友最有可能从多少便士(k)开始

如果c很低,碰撞的几率就足够低,以至于最可能的k==c。例如,如果c=3,那么k最像是3。然而,发生碰撞的可能性越来越大,比如说k=14,那么发生碰撞的可能性应该是1次,所以如果c=14,那么k=15的可能性最大

当然,如果n==c,那么就没有办法知道,所以我们把它放在一边,假设c
给定n和c(给定c目前的问题是不适定的

设n为信盒数。
设X为您的朋友开始使用的便士数的随机变量。
设Y为填充托盘数量的随机变量

您要求的是分布p(X | Y=c)的模式。
(或者期望值E[X | Y=c]取决于你如何解释你的问题。)

让我们来看一个非常简单的例子:分布p(X | Y=1)。然后

p(X=k | Y=1)=(p(Y=1 | X=k)*p(X=k))/p(Y=1)
=(1/nk-1*P(X=k))/P(Y=1)

由于p(Y=1)是归一化常数,我们可以说p(X=k | Y=1)与1/nk-1*p(X=k)成正比

但p(X=k)是先验概率分布。你必须假设你的朋友从硬币数量开始的概率分布

例如,我可以选择以下两个先验:

  • 我先前的信念是,当k>0时,P(X=k)=1/2k
  • 我先前的信念是,当k>100时,P(X=k)=1/2k-100
  • 两者都是有效的先验;第二个假设X>100。这两种方法都会给出非常不同的X估计值:之前的1估计X大约为1或2;先前的2估计X为100

    我建议,如果你继续追问这个问题,你可以选择一个优先权。像这样的东西会很好地工作:。这是一个几何分布,支持度k>0,平均值为10^4