Math 与通用哈希相关的混淆

Math 与通用哈希相关的混淆,math,hash,hashtable,universal-hashing,Math,Hash,Hashtable,Universal Hashing,我在读这篇关于通用哈希的文章。它显示了散列IP地址的示例。每个IP地址由4, 32位整数组成,(X1,X2,X3,X4),其中席的最大值为255。 本教程指出,哈希表的大小应大于255或任意XI。为什么会这样?(对于那些没有看过视频的人来说,这将在20:45左右出现) 以这种方式定义的函数类是以下形式的函数 ha(x1,x2,x3,x4)=a1-x1+a2-x2+a3-x3+a4-x4(模块n) < n >桶的数目,每个席在0到1的范围内,每个AI在0到1到1的范围内,n是素数。 你的问题是为什

我在读这篇关于通用哈希的文章。它显示了散列IP地址的示例。每个IP地址由4, 32位整数组成,(X1,X2,X3,X4),其中席的最大值为255。 本教程指出,哈希表的大小应大于255或任意XI。为什么会这样?

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

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

ha(x1,x2,x3,x4)=a1-x1+a2-x2+a3-x3+a4-x4(模块n)

< n >桶的数目,每个席在0到1的范围内,每个AI在0到1到1的范围内,n是素数。 你的问题是为什么所有的xi都必须小于n。原因在于证明了这个哈希函数族是通用的。正如提姆在视频中解释的那样,你可以证明哈希函数是通用的一种方法是考虑两种不同的输入(称为X和Y)。这意味着它们必须在某些部分有所不同,我们的想法是在不丧失普遍性的情况下假设它们在第四部分有所不同。即x4≠ y4。通过一点数学运算,在这个假设下,你可以证明你得到碰撞的概率等于这个陈述为真的概率:

a4(x4-y4)=a1(x1-y1)+a2(x2-y2)+a3(x3-y3)(模块n)

这里,因为我们随机选择了散列函数,所以所有ai都是随机的。关键在于,如果将a1、a2和a3视为固定值,那么这个等式的右侧就是某个固定数字k。你会对这种可能性感兴趣

a4(x4-y4)=k(模数n)

因为我们假设n>x4,n>y4,x4≠ y4,n是素数。这告诉我们两个非常重要的事实:

  • x4-y4≠ 0模n.这是我们需要n大于xi的主要原因。我们马上就知道原因了

  • x4-y4是与n的互质。为什么?我们知道n是质数。由于n>x4和n>y4,我们知道x4-y4必须严格介于n-1和-(n-1)之间。因为我们假设n是素数,在这个范围内有n的非平凡因子,所以x4-y4和n是互质

  • 要知道这些事实为什么重要,让我们考虑两种情况。首先,有可能k=0。在这种情况下,a4(x4-y4)=k(mod n)在什么情况下会发生?自x4-y4起≠ 0,我们知道只有当a4=0时才会发生这种情况。由于a4在0到n-1(包括0到n-1)的范围内具有一致的随机值,因此我们在这种情况下获得碰撞的概率为1/n

    接下来,假设k≠ 0在这种情况下,a4(x4-y4)=k(mod n)为真需要发生什么?嗯,我们知道x4-y4≠ 所以它必须有一个乘法逆模n,因为x4-y4是与n的互质。事实上,它正好有一个乘法逆。a4唯一可能的选择是a4是x4-y4模n乘以k的乘法逆。在0到n-1的范围内,只有一个数字可以选择,所以选择它的概率是1/n

    注意,如果x4-y4等于零模n,上述推理将不起作用。在第一种情况下,选择a4都会导致碰撞,因此碰撞概率为1。在第二种情况下,选择a4不会导致碰撞,因此碰撞概率为0。这些条件将使证据无效


    希望这有帮助

    不知道这与通用哈希有什么关系。最好问问讲师。