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

时间:2014-01-31 22:38:18

标签: math hash probability hash-collision birthday-paradox

你有一个空的冰块托盘,里面有 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 估算 k 的通用公式是什么(给定 c < ñ)?

1 个答案:

答案 0 :(得分:0)

目前的问题是不合适的。

设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 / n k-1 * P(X = k))/ P(Y = 1)

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

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

例如,这里有两个我可以选择的先验:

  1. 我先前的看法是,对于k> P,X(X = k)= 1/2 k 。 0
  2. 我先前的看法是,对于k> P,X(X = k)= 1/2 k - 100 。 100。
  3. 两者都是有效的先辈;第二个假定X> 100.两者都会对X给出截然不同的估计:先前1估计X约为1或2;先前2将估计X为100。

    如果你继续追问这个问题,我建议你继续选择先前的问题。像这样的东西可以很好地运作:WolframAlpha。这是支持k>的几何分布。 0并且意味着10 ^ 4.