与通用哈希相关的混乱

时间:2014-10-18 17:24:16

标签: math hash hashtable universal-hashing

我正在阅读与普遍哈希相关的video lecture。它显示了散列IP地址的示例。每个IP地址由4个32位整数组成,(x1,x2,x3,x4),其中任何xi的最大值为255.

教程说哈希表的大小应该大于255或任何xis。为什么会这样?

1 个答案:

答案 0 :(得分:0)

(对于那些没有看过视频的人来说,这会在20:45左右出现。)

以这种方式定义的函数类是

形式的函数
  

h a (x 1 ,x 2 ,x 3 ,x 4 )= a 1 x 1 + a 2 x 2 + a 3 x 3 + a 4 x 4 (mod n)

其中n是桶的数量,每个x i 的范围是0到n - 1,每个 i 的范围是0到n - 1 ,n是素数。

您的问题是为什么所有x i 都必须小于n。原因与此系列哈希函数是通用的证明有关。正如Tim在视频中解释的那样,你可以证明散列函数是通用的一种方法是考虑两个不同的输入(称为x和y)。这意味着它们必须在某些组件上有所不同,并且这个想法是在不失一般性的情况下假设它们在第四个组件中不同。也就是说,x 4 ≠y 4 。通过一些数学运算,在这个假设下,你可以证明你得到碰撞的概率等于这个陈述为真的概率:

  

a 4 (x 4 - y 4 )= a 1 (x 1 < / sub> - y 1 )+ a 2 (x 2 - y 2 )+ a 3 (x 3 - y 3 )(mod n)

这里,由于我们随机选择了散列函数,所有a i 都是随机的。关键的见解是,如果你将 1 2 3 视为固定值,那么右边的方程只是一些固定数k。然后你对

的可能性感兴趣
  

a 4 (x 4 - y 4 )= k(mod n)

因为我们假设n&gt; x 4 ,n> y 4 ,x 4 ≠y 4 ,并且n是素数。这告诉我们两个非常重要的事实:

  1. x 4 - y 4 ≠0 mod n。这是我们需要n大于x i &#39。我们会在一分钟内看到原因。

  2. x 4 - y 4 与n互质。为什么?好吧,我们知道n是素数。因为n> x 4 和n&gt; y 4 ,我们知道x 4 - y 4 必须严格地在n-1和 - (n-1)之间。因为我们假设n是素数,所以在该范围内存在n的非平凡除数,因此x 4 - y 4 和n是互质的。

  3. 为了解这些事实的重要性,让我们考虑k的两种情况。首先,可能k = 0.在这种情况下,在什么情况下 4 (x 4 -y 4 )= k(mod n)?由于x 4 - y 4 ≠0,我们知道只有当 4 = 0时才会发生这种情况。因为 4 取0到n-1范围内的均匀随机值,在这种情况下我们得到碰撞的概率是1 / n。

    接下来,假设k≠0。在这种情况下, 4 (x 4 - y 4 )必须发生什么= k(mod n)是真的吗?好吧,我们知道x 4 - y 4 ≠0,所以它必须有一个乘法逆模n,因为x 4 - y 4 与n互质。实际上,它只有一个乘法逆。唯一可能选择的 4 将导致这是真的是 4 是x 4 的乘法逆的选择 - y 4 modulo n乘以k。在0到n-1范围内,只有一个数字可供选择,因此选择它的概率为1 / n。

    请注意,如果x 4 - y 4 等于零模n,则上述推理不起作用。在第一种情况下, 4 的每个选项都会导致冲突,因此碰撞概率为1.在第二种情况下, no 选择 4 可能会导致碰撞,因此碰撞概率为0.这些条件会使证明无效。

    希望这有帮助!