构建更好的 Bloom Filter——布隆过滤器优化算法double—hashing论文翻译(一)

引言

本论文来自leveldb源码中bloom.cc下布隆过滤器实现的代码注释中推荐的论文。论证了一种布隆过滤器的优化方式,带有详细的证明。是不可多得的好文章。其中的许多公式会对布隆过滤器相关的文章有所帮助。**所以博主将论文和其中的海量公式转化为了可编辑的markdown和Latex,并在机翻的基础上,通读论文并对翻译的不足进行修改和润色。**方便大家引用。如有转载,望注明论文出处和本文出处,谢谢!

论文原文出处:论文原文

本文作者:csdn账号个人空间 - AcWing

受平台字数限制,只好将论文分成多段,望理解

构建更好的 Bloom Filter

概述

哈希文献中的一种技术是使用两个哈希函数 h 1 ( x ) h_{1}(x) h1(x) h 2 ( x ) h_{2}(x) h2(x) 来模拟 g i ( x ) = h 1 ( x ) + i h 2 ( x ) g_{i}(x)=h_{1}(x)+ih_{2}(x) gi(x)=h1(x)+ih2(x) 形式的其他哈希函数。我们证明了这种技术可以有效地应用于 Bloom 过滤器和相关数据结构。具体来说,只需要两个哈希函数即可有效实现 Bloom 过滤器,而不会在渐近误报概率中造成任何损失。这会让计算次数减少,并且在实践中可能减少对随机性的需求。

1. 介绍

Bloom 过滤器是一种简单的节省空间的随机数据结构,用于表示一个集合以支持成员资格查询。尽管 Bloom 筛选器允许误报,但相比于节省的空间,这些极少的误报显得微不足道。布隆过滤器及其许多变体已被证明对许多应用程序越来越重要(例如,参见 [3])。对于那些不熟悉数据结构的人,我们将在下面的第 2 节中对其进行回顾。在本文中,我们表明应用哈希文献中的标准技术可以显著简化 Bloom 过滤器的实现。

这个想法是这样的:**两个哈希函数 h 1 ( x ) h_{1}(x) h1(x) h 2 ( x ) h_{2}(x) h2(x) 可以模拟两个以上的哈希函数,形式为 g i ( x ) = h 1 ( x ) + g_{i}(x)=h_{1}(x)+ gi(x)=h1(x)+ i h 2 ( x ) ih_{2}(x) ih2(x) 。在我们的上下文中, i i i 的范围从 0 到某个数字 k − 1 k-1 k1 以给出 k k k 个哈希函数,并且哈希值取相关哈希表大小的模数。**我们证明了这种技术可以有效地应用于 Bloom 过滤器和相关数据结构。具体来说,只需要两个哈希函数即可有效实现 Bloom 过滤器,而不会增加渐近误报概率。这导致更少的计算,并且在实践中可能减少对随机性的需求。这种改进在 Dillinger 和 Manolios [5, 6] 的工作中得到了实证发现;在这里,我们提供了对该技术的完整理论分析。在回顾了 Bloom filter 数据结构之后,我们从一个具体的例子开始。

重点在一个有用但有点理想化的 Bloom filter 结构上,它提供了主要的见解。然后,我们转到一个更通用的设置,该设置涵盖了实践中可能出现的几个问题。例如,当哈希表的大小是 2 的幂而不是素数时。最后,我们通过展示如何使用它来减少 [4] 的 Count-Min Sketch 所需的哈希函数数量,展示了这种方法在简单的 Bloom 过滤器之外的实用性


2. 标准 Bloom 过滤器

我们首先根据调查的介绍回顾 Bloom 过滤器的基础知识 [3],我们参考该调查了解更多详细信息。一个布隆滤波器,用于表示来自一个大型集合 U U U 的一组 S = { x 1 , x 2 , … , x n } S=\{x_{1},x_{2},\ldots,x_{n}\} S={x1,x2,,xn} 7 L 7L 7L 个元素,由一个 7712 位的数组组成,最初都设置为 0 。过滤器使用 k k k 个独立的哈希函数 h 1 , … , h k h_{1},\ldots,h_{k} h1,,hk,范围为 { 1 , … , m } \{1,\ldots,m\} {1,,m} ,其中假设这些哈希函数将集合中的每个元素映射到在该范围内均匀的随机数。虽然哈希函数的随机性显然是一个乐观的假设,但它在实践中似乎是合适的 [8, 13]。对于每个元素 x ∈ S x\in S xS ,位 h i ( x ) h_{i}(x) hi(x) 设置为 1 ≤ i ≤ k 1\leq i\leq k 1ik 的 1 。(一个位置可以多次设置为 1。为了检查项目 y y y 是否在 S 中,我们检查是否所有 h i ( y ) h_{i}(y) hi(y) 都设置为 1。如果不是,那么显然 y y y 不是 S 的成员。如果所有 h i ( y ) h_{i}(y) hi(y) 都设置为 1 ,我们假设 y y y 在 S 中,因此布隆过滤器可能会产生误报。不在集合中的元素出现假阳性的概率,或假阳性概率

可以以简单的方式估计,因为我们假设哈希函数是完全随机的。在将 S 的所有元素哈希到 Bloom 过滤器中后,特定位仍为 0 的概率为

p ′ = ( 1 − 1 m ) k n ≈ e − k n / m . p'=\left(1-\frac{1}{m}\right)^{kn}\approx\mathrm{e}^{-kn/m}. p=(1m1)knekn/m.

在本节中,为了方便起见,我们一般使用近似值 p = e − k n / m p=\mathrm{e}^{-kn/m} p=ekn/m 代替 p ′ p^{\prime} p 如果 μ \mu μ 是表中所有 7 L 7L 7L 个元素都插入后 0 位的比例,那么条件

μ \mu μ 上,误报的概率为

( 1 − ρ ) k ≈ ( 1 − p ′ ) k ≈ ( 1 − p ) k = ( 1 − e − k n / m ) k . (1-\rho)^k\approx(1-p')^k\approx(1-p)^k=\left(1-\mathrm{e}^{-kn/m}\right)^k. (1ρ)k(1p)k(1p)k=(1ekn/m)k.

这些近似值是由于 E [ ρ ] = p ′ \mathbf{E}[\rho]=p^{\prime} E[ρ]=p ,而 μ \mu μ 可以使用标准技术显示高度集中在 p ′ p^{\prime} p 附近。很容易证明,当 k = ln ⁡ 2 ⋅ ( m / n ) k=\ln2\cdot(m/n) k=ln2(m/n) 时,表达式

( 1 − e − k n / m ) k \left(1-\mathrm{e}^{-kn/m}\right)^k (1ekn/m)k

被最小化,给出假阳性概率 f f f

f = ( 1 − e − k n / m ) k = ( 1 / 2 ) k ≈ ( 0.6185 ) m / n . f=\left(1-\mathrm e^{-kn/m}\right)^k=(1/2)^k\approx(0.6185)^{m/n}. f=(1ekn/m)k=(1/2)k(0.6185)m/n.

在实践中, k k k 必须是一个整数,并且可能首选较小的 k k k,因为这减少了必须计算的哈希函数的数量。此分析为我们提供了单个项目 z ∉ S z\notin S z/S 给出 false 的概率阳性。

我们想做一个广义的证明,事实上这给出了假阳性率。也就是说,如果我们选择大量不在 S S S 中的不同元素,则产生假阳性的元素比例约为 $f $ 。但这个结果的紧凑性是因为 μ \mu μ 高度集中在 p ′ p^{\prime} p 附近,因此,假阳性概率有时被称为假阳性率。

在继续之前,我们注意到有时 Bloom 过滤器的描述略有不同.其中每个哈希函数都有一个 m / k m/k m/k 个连续位位置的不相交范围,而不是一个 7712 位的共享数组。重复上面的分析,我们发现在这种情况下,特定位为 0 的概率为 0

( 1 − k m ) n ≈ e − k n / m . \left(1-\dfrac{k}{m}\right)^n\approx\mathrm e^{-kn/m}. (1mk)nekn/m.

渐近地,性能与原始方案相同,尽管因为对于 k ≥ 1 k\geq1 k1

( 1 − k m ) n ≤ ( 1 − 1 m ) k n , \left(1-\frac{k}{m}\right)^n\leq\left(1-\frac{1}{m}\right)^{kn}, (1mk)n(1m1)kn,

此修改永远不会降低假阳性概率


3. 使用两个哈希函数的简单构造。

作为一个具有指导意义的示例案例,我们考虑了引言中描述的一般技术的以下具体应用。我们设计了一个 Bloom 过滤器,它使用 k k k 个哈希函数,每个函数的范围为 { 0 , 1 , 2 , … , p − 1 } \{0,1,2,\ldots,p-1\} {0,1,2,,p1} 作为素数 $P $。我们的哈希表由 m = k p m=kp m=kp 位组成;每个哈希函数在过滤器中都分配了一个 P P P 位的不相交子数组,我们将其视为编号 { 0 , 1 , 2 , … , p − 1 } \{0,1,2,\ldots,p-1\} {0,1,2,,p1} 。我们的 k k k 哈希函数将是这样的

g i ( x ) = h 1 ( x ) + i h 2 ( x )   m o d   p , g_i(x)=h_1(x)+ih_2(x)\bmod p, gi(x)=h1(x)+ih2(x)modp,

其中 h 1 ( x ) h_{1}(x) h1(x) h 2 ( x ) h_{2}(x) h2(x) 是集合中两个独立的、统一的随机哈希函数,范围为 { 0 , 1 , 2 , … , p − 1 } \{0,1,2,\ldots,p-1\} {0,1,2,,p1} ,在整个过程中,我们假设 i i i 的范围从 0 到 k − 1 k-1 k1

在此设置中,对于任意两个元素 $JL $ 和 y y y ,恰好出现以下三种情况之一:

  1. g i ( x ) ≠ g i ( y ) g_{i}(x)\neq g_{i}(y) gi(x)=gi(y) 对于所有 x ^ ˙ \dot{\hat{x}} x^˙ ;或

  2. g i ( x ) = g i ( y ) g_{i}(x)=g_{i}(y) gi(x)=gi(y) 恰好是一个 i ˙ \dot{i} i˙ ;或

  3. 所有 i ˙ \dot{i} i˙ g i ( x ) = g i ( y ) g_{i}(x)=g_{i}(y) gi(x)=gi(y)

也就是说,如果 g i ( x ) = g i ( y ) g_{i}(x)=g_{i}(y) gi(x)=gi(y) 至少有两个值 i i i ,那么很明显我们必须有 h 1 ( x ) = h 1 ( y ) h_{1}(x)=h_{1}(y) h1(x)=h1(y) h 2 ( x ) = h 2 ( y ) h_{2}(x)=h_{2}(y) h2(x)=h2(y) ,所以所有的哈希值都是相同的。正是这个属性暗示了分析,并使它成为一个有启发性的例子;在第 4 节中,我们考虑了可能发生其他重要冲突的更一般情况。

第一步,我们考虑一组 S = { x 1 , x 2 , … , x n } S=\{x_{1},x_{2},\ldots,x_{n}\} S={x1,x2,,xn} U U U中的 7t 个元素和 z ∉ S z\notin S z/S 中的元素,并计算 Z 产生假阳性的概率。假阳性对应于事件 F \mathcal{F} F,对于每个 i i i,(至少)有一个 j j j,使得 g i ( z ) g_{i}( z) gi(z) = g i ( x j ) g_{i}( x_{j}) gi(xj) 显然,发生这种情况的一种方式是,如果 h 1 ( x j ) = h 1 ( z ) h_{1}(x_{j})=h_{1}(z) h1(xj)=h1(z) 并且 h 2 ( x j ) = h 2 ( z ) h_{2}(x_{j})=h_{2}(z) h2(xj)=h2(z) 对于某些 j j j 。此事件 ξ \xi ξ 的概率为

P r ( E ) = 1 − ( 1 − 1 p 2 ) n = 1 − ( 1 − k 2 m 2 ) n . \mathbf{Pr}(\mathcal{E})=1-\left(1-\frac{1}{p^2}\right)^n=1-\left(1-\frac{k^2}{m^2}\right)^n. Pr(E)=1(1p21)n=1(1m2k2)n.

请注意,当某个常数 C C C k = c m / n k=cm/n k=cm/n 时,按照布隆滤波器的标准,我们有 P r ( E ) = o ( 1 ) \mathbf{Pr}(\mathcal{E})=o(1) Pr(E)=o(1) 。现在因为

P r ( F ) = P r ( F ∣ E ) P r ( E ) + P r ( F ∣ ¬ E ) P r ( ¬ E ) = P r ( E ) + P r ( F ∣ ¬ E ) P r ( ¬ E ) = o ( 1 ) + P r ( F ∣ ¬ E ) ( 1 − o ( 1 ) ) , \begin{aligned}\mathbf{Pr}(\mathcal{F})&=\mathbf{Pr}(\mathcal{F}\mid\mathcal{E})\mathbf{Pr}(\mathcal{E})+\mathbf{Pr}(\mathcal{F}\mid\neg\mathcal{E})\mathbf{Pr}(\neg\mathcal{E})\\&=\mathbf{Pr}(\mathcal{E})+\mathbf{Pr}(\mathcal{F}\mid\neg\mathcal{E})\mathbf{Pr}(\neg\mathcal{E})\\&=o(1)+\mathbf{Pr}(\mathcal{F}\mid\neg\mathcal{E})(1-o(1)),\end{aligned} Pr(F)=Pr(FE)Pr(E)+Pr(F¬E)Pr(¬E)=Pr(E)+Pr(F¬E)Pr(¬E)=o(1)+Pr(F¬E)(1o(1)),

考虑 P r ( F ∣ ¬ E ) \mathbf{Pr}(\mathcal{F}\mid\neg\mathcal{E}) Pr(F¬E) 即可获得渐近假阳性概率,当 m / n m/n m/n k k k 为常数时,该概率为常数

¬ E \neg{\mathcal E} ¬E ( h 1 ( z ) , h 2 ( z ) ) (h_{1}(z),h_{2}(z)) (h1(z),h2(z)) 为条件,对 ( h 1 ( x j ) , h 2 ( x j ) ) (h_{1}(x_{j}),h_{2}(x_{j})) (h1(xj),h2(xj)) 均匀分布在 V = { 0 , … , p − 1 } 2 − ( h 1 ( z ) , h 2 ( z ) ) V=\{0,\ldots,p-1\}^{2}-(h_{1}(z),h_{2}(z)) V={0,,p1}2(h1(z),h2(z)) p 2 − 1 p^{2}-1 p21 值上。其中,对于每个 i ∗ ∈ { 0 , … , k − 1 } i^{*}\in\{0,\ldots,k-1\} i{0,,k1} 中的 p − 1 p-1 p1

V ′ = { ( a , b ) ∈ V   :   a ≡ i ∗ ( h 2 ( z ) − b ) + h 1 ( z )   m o d   p ,   b ≢ h 2 ( z )   m o d   p } V'=\{(a,b)\in V\::\:a\equiv i^*(h_2(z)-b)+h_1(z)\bmod p,\:b\not\equiv h_2(z)\bmod p\} V={(a,b)V:ai(h2(z)b)+h1(z)modp,bh2(z)modp}

是这样的值,如果 ( h 1 ( x j ) , h 2 ( x j ) ) ∈ V ′ (h_{1}(x_{j}),h_{2}(x_{j}))\in V^{\prime} (h1(xj),h2(xj))V ,则 i ¨ ∗ \ddot{\boldsymbol{i}}^{*} i¨ i i i 的唯一值,使得 g i ( x j ) = g_{i}(x_{j})= gi(xj)= g i ( z ) g_{i}(z) gi(z)。因此,我们可以将条件概率视为 balls-and-bins 问题的变体。有 7 l 7l 7l 的球和 k k k 的桶。概率为 k ( p − 1 ) / ( p 2 − 1 ) = k / ( p + 1 ) k(p-1)/(p^{2}-1)=k/(p+1) k(p1)/(p21)=k/(p+1) 一个球落在箱子里,剩下的概率被丢弃;当球落入 bin 时,bin 会将其

Lands In 是随机均匀选择的。所有 bin 都至少有一个球的概率是多少?

这可以用多种方式表达。首先,我们可能还记得,从一组大小为 U . U. U. 到一组大小为 b b b 的射门数是由 b 给出的! S ( a , b ) b 给出的!S(a,b) b给出的!S(a,b) ,其中 S ( a , b ) S(a,b) S(a,b) 是指第二类的斯特林数。然后我们直接有

P r ( F ∣ ¬ E ) = ∑ a = k n ( n a ) ( k p + 1 ) a ( 1 − k p + 1 ) n − a k ! S ( a , k ) k a . \mathbf{Pr}(\mathcal{F}\mid\neg\mathcal{E})=\sum\limits_{a=k}^n{n\choose a}\left(\dfrac{k}{p+1}\right)^a\left(1-\dfrac{k}{p+1}\right)^{n-a}\dfrac{k!S(a,k)}{k^a}. Pr(F¬E)=a=kn(an)(p+1k)a(1p+1k)nakakS(a,k).

可以将此表达式的极限设为 T l → X Tl\rightarrow\mathbf{X} TlX(例如,参见 [2] 的讨论)。

或者,我们可能会注意到,对于标准的 Bloom filter,我们也有类似的问题。假设元素 z ∉ S z\notin S z/S 的每个 k k k 哈希值都是不同的(这种情况发生的概率很高),在这种情况下,有 n k nk nk 个球(每个项目的每个哈希一个),每个球都有 k / m k/m k/m 的概率落入箱子,这对应于 z z z 的哈希值。很明显,在限制中为 711。并且 7 l 7l 7l 变大并且 k k k 保持为固定常数,那么在这两种情况下,落入 bin 的球数的分布都会收敛到相同的分布,因此误报的概率会收敛到
f = ( 1 − e − k n / m ) k f=\begin{pmatrix}1-\mathrm{e}^{-kn/m}\end{pmatrix}^k f=(1ekn/m)k

在这两种情况下。正如我们已经说过的,第 4 节将给出一个更正式和一般的论点。现在,就像第 2 节一样,我们必须论证 f f f 不仅仅是渐近假阳性概率

但它也像假阳性率。与标准 Bloom 滤波器的情况类似,这归结为一个集中论点。一旦对集合 S S S 进行哈希处理,就会有一个集合

B = { ( b 1 , b 2 ) : h 1 ( z ) = b 1 and h 2 ( z ) = b 2 implies z 给出假阳性 } . B=\{(b_1,b_2):h_1(z)=b_1\text{and}h_2(z)=b_2\text{implies}z\text{给出假阳性}\}. B={(b1,b2):h1(z)=b1andh2(z)=b2impliesz给出假阳性}.

∣ B ∣ \left|B\right| B 中, U − S U-S US 中任何元素出现假阳性的概率为 ∣ B ∣ / p 2 |B|/p^{2} B∣/p2 ,并且这些事件是独立的。如果我们显示 ∣ B ∣ \left|B\right| B 集中在它的期望附近,那么很容易得出,一组不在 S 中的不同元素中的假阳性分数集中在 f f f 附近

一个简单的 Doob 马丁格尔论点就足够了。 S S S 的每个哈希元素可以在任一方向上更改 B B B 中的对数最多 k p kp kp。从 [12, Section 12.5] 中,对于任何 ϵ > 0 \epsilon>0 ϵ>0
P r ( ∣ B − E [ B ] ∣ ≥ ϵ p 2 ) ≤ 2 exp ⁡ [ − 2 ϵ 2 p 2 n k 2 ] . \mathbf{Pr}(|B-\mathbf{E}[B]|\geq\epsilon p^2)\leq2\exp\left[\frac{-2\epsilon^2p^2}{nk^2}\right]. Pr(BE[B]ϵp2)2exp[nk22ϵ2p2].

现在很容易得出所需的结论。我们将细节推迟到第 7 节,在那里我们对更一般的结果提供更严格的证明。

4. 一般框架

在本节中,我们介绍了一个用于分析非标准 Bloom filter 方案的通用框架,例如 Section 3 中研究的框架。我们表明,在非常广泛的条件下,方案的渐近假阳性概率与标准 Bloom 滤波器相同。在深入研究细节之前,我们必须引入一些符号。对于任何整数 ℓ \ell ,我们定义

集合 [ ℓ ] = { 0 , 1 , … , ℓ − 1 } [\ell]=\{0,1,\ldots,\ell-1\} []={0,1,,1} (请注意,这个定义有点不标准)。对于随机变量 X X X ,我们用 Supp ⁡ ( X ) \operatorname{Supp}(X) Supp(X) 表示 X X X 的支持,如果 Y Y Y 是另一个随机变量,那么 X ∼ Y X\sim Y XY 表示 X X X Y Y Y 具有相同的分布。此外,我们使用 P o ( λ ) Po(\lambda) Po(λ) 来表示参数为 λ \lambda λ 的泊松分布

我们还需要一些关于多集合的符号。对于多集合 $M $ ,我们使用 ∣ M ∣ \left|M\right| M 表示 M M M 的不同元素的数量, ∥ M ∥ \|M\| M 表示具有多重性的 M M M 的元素数。对于两个多集 M M M M ′ M^{\prime} M ,我们将 M ∩ M ′ M\cap M^{\prime} MM M ∪ M ′ M\cup M^{\prime} MM 分别定义为多集 M M M的交集和并集。此外,在滥用标准表示法的情况下,我们将语句 i , i ∈ M i,i\in M i,iM 定义为 i i i M M M 的重数至少 2 的元素。现在,我们已准备好定义框架。与前面部分一样, U U U 表示集合

的项数和 S ⊆ U S\subseteq U SU 表示 Bloom 筛选器将回答其成员资格查询的 T L TL TL 项集。我们将一个方案定义为一种将哈希位置分配给 U U U 的每个元素的方法。更正式地说,方案由离散随机变量 { H ( u ) : u ∈ U } \{H(u):u\in U\} {H(u):uU} 的联合分布指定(由 7 t 7t 7t 隐式参数化),其中对于 u ∈ U u\in U uU, H ( u ) H(u) H(u) 表示方案分配给 u . u. u. 的多组哈希位置。我们不需要为每个 7 L 7L 7L 的值定义一个方案,但我们坚持要为 T t Tt Tt 的无限多个值定义它,这样我们就可以把极限当作 T l → x Tl\rightarrow\mathbf{x} Tlx 。例如,对于第 3 节中讨论的方案类别,我们认为常数 k k k C C C 是固定的,以给出一个特定的方案,该方案仅针对 T l . Tl. Tl. 的值定义,使得 p = d e f m / k p\stackrel{\mathrm{def}}{=}m/k p=defm/k 是一个素数,其中 m = d e f c n m\stackrel{\mathrm{def}}{=}cn m=defcn 由于有无限多个素数,这个方案的渐近行为 T L → 0 TL\rightarrow0 TL0 是明确定义的,与第 3 节中讨论的完全相同,其中我们让 TIl 是一个自由参数,并分析了 m , m → ∞ m,m\to\infty m,m 的行为,条件是 m / n m/n m/n k k k 是固定常数, m / k m/k m/k 是素数。在定义了方案的概念之后,我们现在可以用

new 表示法(所有这些都由 7 l 7l 7l 隐式参数化)。我们将 H H H 定义为方案可以分配的所有哈希位置的集合(正式地, H H H 是在某些多集合中应用的元素集,以支持 H ( u ) H(u) H(u) ,对于某些 u ∈ U u\in U uU )。对于 x ∈ S x\in S xS z ∈ U − S z\in U-S zUS ,定义 C ( x , z ) = H ( x ) ∩ H ( z ) C(x,z)=H(x)\cap H(z) C(x,z)=H(x)H(z) L L L Z Z Z 的多组哈希冲突。我们让 F ( z ) \mathcal{F}(z) F(z) 表示 z ∈ U − S z\in U-S zUS 的假阳性事件,当 Z Z Z 的每个哈希位置也是某些 x ∈ S x\in S xS 的哈希位置时,就会发生该事件在我们考虑的方案中, { H ( u ) : \{ H( u) : {H(u): u ∈ U } u\in U\} uU} 将始终是独立且相同的

分散式。在这种情况下, P r ( F ( z ) ) \mathbf{Pr}(\mathcal{F}(z)) Pr(F(z)) 对于所有 z ∈ U − S z\in U-S zUS 都是相同的, { C ( x , z ) : \{ C( x, z) : {C(x,z): x ∈ S } x\in S\} xS} 的联合分布也是相同的。因此,为了简化符号,我们可以在 U − S U-S US 中固定一个任意的 z z z,简单地使用 Pr ⁡ ( F ) \Pr(\mathcal{F}) Pr(F) 而不是 P r ( F ( z ) ) \mathbf{Pr}(\mathcal{F}(z)) Pr(F(z)) 来表示假阳性概率,我们可以使用 { C ( x ) : \{ C( x) : {C(x): x ∈ S } x\in S\} xS} 而不是 { C ( x , z ) : \{ C( x, z) : {C(x,z): x ∈ S } x\in S\} xS} 来表示 S 元素与 z z z 的多组哈希冲突的联合概率分布本节的主要技术成果是以下关键定理,它是一个形式化

以及第 3 节中给出的论点的推广,以表明那里分析的方案的渐近假阳性概率与具有相同参数的标准布隆滤波器相同。

定理 4.1.Fir a scheme.假设存在常数 λ \lambda λ k k k,使得:

  1. { H ( u ) : u ∈ U } \{H(u):u\in U\} {H(u):uU} 是独立的,分布相同

2.对于 u ∈ U u\in U uU , ∥ H ( u ) ∥ = k \|H(u)\|=k H(u)=k

3.对于 x ∈ S x \in S xS

P r ( ∥ C ( x ) ∥ = i ) = { 1 − λ n + o ( 1 / n ) i = 0 λ n + o ( 1 / n ) i = 1 o ( 1 / n ) i > 1 . \mathbf{Pr}(\|C(x)\|=i)=\left\{\begin{array}{cc}1-\frac{\lambda}{n}+o(1/n)&i=0\\\frac{\lambda}{n}+o(1/n)&i=1\\o(1/n)&i>1\end{array}\right.. Pr(C(x)=i)= 1nλ+o(1/n)nλ+o(1/n)o(1/n)i=0i=1i>1.

4. x ∈ S x \in S xS

max ⁡ i ∈ H ∣ P r ( i ∈ C ( x ) ∣ ∥ C ( x ) ∥ = 1 ,   i ∈ H ( z ) ) − 1 k ∣ = o ( 1 ) a s   n → ∞ . \max\limits_{i\in H}\left|\mathbf{Pr}(i\in C(x)\mid\|C(x)\|=1,\:i\in H(z))-\frac{1}{k}\right|=o(1)\quad as\:n\to\infty. iHmax Pr(iC(x)C(x)=1,iH(z))k1 =o(1)asn∞.

然后

lim ⁡ n → ∞ P r ( F ) = ( 1 − e − λ / k ) k . \lim\limits_{n\to\infty}\mathbf{Pr}(\mathcal{F})=\left(1-\mathrm{e}^{-\lambda/k}\right)^k. nlimPr(F)=(1eλ/k)k.

证明。为了便于解释,我们为 H ( z ) H(z) H(z) 的每个元素分配一个 [ k ] [k] [k] 中的唯一数字(将同一哈希位置的多个实例视为不同的元素)。更正式地说,我们为每个多集 M ⊆ H M\subseteq H MH 定义一个从 M M M [ k ] [k] [k] 的任意双射 f M f_{M} fM,其中 ∥ M ∥ = k \|M\|=k M=k (其中 f M f_{M} fM M M M 中相同哈希位置的多个实例视为不同的元素),并根据 f H ( z ) f_{H(z)} fH(z) 标记 H ( z ) H(z) H(z) 的元素。这个约定允许我们通过数字 i ∈ [ k ] i\in[k] i[k] 来识别 H ( z ) H(z) H(z) 的元素,而不是哈希位置 i ∈ H i\in H iH 对于 i ∈ [ k ] i\in[k] i[k] x ∈ S x\in S xS ,如果 i ∈ C ( x ) i\in C(x) iC(x) 定义 X i ( x ) = 1 X_{i}(x)=1 Xi(x)=1,否则定义 0,并定义。 X i = d e f X_i\stackrel{\mathrm{def}}{=} Xi=def

∑ x ∈ S X i ( x ) \sum_{x\in S}X_{i}(x) xSXi(x) .请注意, i ∈ C ( x ) i\in C(x) iC(x) 是对符号的滥用;我们真正的意思是 f H ( z ) − 1 ( i ) ∈ C ( x ) f_{H(z)}^{-1}(i)\in C(x) fH(z)1(i)C(x),尽管我们将继续使用前者,因为它要麻烦得多我们表明 X n = d e t ( X 0 , … , X k − 1 ) X^{n}\stackrel{\mathrm{det}}{=}(X_{0},\ldots,X_{k-1}) Xn=det(X0,,Xk1) 在分布中收敛到一个向量 P = d e f ( P 0 , … , P k − 1 ) P\stackrel{\mathrm{def}}{=}(P_{0},\ldots,P_{k-1}) P=def(P0,,Pk1)

k k k 个参数为 λ / k \lambda/k λ/k 的独立泊松随机变量,如 T l → x Tl\rightarrow\mathbf{x} Tlx 。为此,我们使用了 moment 生成函数。对于随机变量 R R R , R . R. R. 的矩生成函数由 M R ( t ) = ⁡ d e f E [ exp ⁡ ( t R ) ] M_{R}( t) \overset {\mathrm{def}}{\operatorname* { = } }\mathbf{E} [ \exp ( tR) ] MR(t)=defE[exp(tR)] 定义。我们表明,对于任何 t 0 , … , t k t_{0},\ldots,t_{k} t0,,tk

lim ⁡ n → ∞ M ∑ i = 0 k − 1 t i X i ( t k ) = M ∑ i = 0 k − 1 t i P i ( t k ) , \lim_{n\to\infty}M_{\sum_{i=0}^{k-1}t_{i}X_{i}}(t_{k})=M_{\sum_{i=0}^{k-1}t_{i}P_{i}}(t_{k}), nlimMi=0k1tiXi(tk)=Mi=0k1tiPi(tk),

这已经足够了 [1, 定理 29.4 和第 390 页],因为

M ∑ i = 0 k − 1 t i P i ( t k ) = E [ e t k ∑ i ∈ [ k ] t i P i ] = ∏ i ∈ k E [ e t k t i P o ( λ / k ) ] = ∏ i ∈ k ∑ j = 0 ∞ e − λ / k λ j k j j ! e t k t i j = ∏ i ∈ k e λ k ( e t k t i − 1 ) = e λ k ( ∑ i ∈ k e t k t i − 1 ) < ∞ , \begin{aligned}M_{\sum_{i=0}^{k-1}t_{i}P_{i}}(t_{k})&=\mathbf{E}\left[\mathrm{e}^{t_{k}\sum_{i\in[k]}t_{i}P_{i}}\right]\\&=\prod_{i\in k}\mathbf{E}\left[\mathrm{e}^{t_{k}t_{i}\mathrm{Po}(\lambda/k)}\right]\\&=\prod_{i\in k}\sum_{j=0}^{\infty}\mathrm{e}^{-\lambda/k}\frac{\lambda^{j}}{k^{j}j!}\mathrm{e}^{t_{k}t_{i}j}\\&=\prod_{i\in k}\mathrm{e}^{\frac{\lambda}{k}\left(\mathrm{e}^{t_{k}t_{i}}-1\right)}\\&=\mathrm{e}^{\frac{\lambda}{k}\left(\sum_{i\in k}\mathrm{e}^{t_{k}t_{i}}-1\right)}<\infty,\end{aligned} Mi=0k1tiPi(tk)=E[etki[k]tiPi]=ikE[etktiPo(λ/k)]=ikj=0eλ/kkjj!λjetktij=ikekλ(etkti1)=ekλ(iketkti1)<,

其中第一步只是矩生成函数的定义,第二步是从 t i P i ( λ k ) t_{i}P_{i}(\lambda_{k}) tiPi(λk) 的独立性开始,第三步只是泊松分布的定义,第四步是从 e x \mathrm{e}^{x} ex 的泰勒级数开始,第五步是显而易见的。

接下来,我们写道

M ∑ i ∈ [ k ] t i X i ( t k ) = M ∑ i ∈ [ k ] t i ∑ x ∈ S X i ( x ) ( t k ) = M ∑ x ∈ S ∑ i ∈ [ k ] t i X i ( x ) ( t k ) = ( M ∑ i ∈ [ k ] t i X i ( x ) ( t k ) ) n = ( P r ( ∥ C ( x ) ∥ = 0 ) + ∑ j = 1 k Pr ⁡ ( ∥ C ( x ) ∥ = j ) ∑ T ⊆ [ k ] : ∣ T ∣ = j Pr ⁡ ( C ( x ) = f H ( z ) − 1 ( T ) ∣ ∥ C ( x ) ∥ = j ) e t k ∑ i ∈ T t i ) = ( 1 − λ n + λ n ∑ i ∈ [ k ] Pr ⁡ ( i ∈ C ( x ) ∣ ∥ C ( x ) ∥ = 1 ) e t k t i + o ( 1 / n ) ) n = ( 1 − λ n + λ n ∑ i ∈ [ k ] ( 1 k + o ( 1 ) ) e t k t i + o ( 1 / n ) ) n = ( 1 − λ n + λ ∑ i ∈ [ k ] e t k t i k n + o ( 1 / n ) ) n → e − λ + λ k ∑ i ∈ [ k ] e t k t i a s n → ∞ = e λ k ( ∑ i ∈ [ k ] ( e t k t i − 1 ) ) = M ∑ i ∈ [ k ] t i P o i ( λ k ) ( t k ) . \begin{aligned} &M_{\sum_{i\in[k]}t_{i}X_{i}}(t_{k}) \\ &=M_{\sum_{i\in[k]}t_{i}\sum_{x\in S}X_{i}(x)}(t_{k}) \\ &=M_{\sum_{x\in S}\sum_{i\in[k]}t_iX_i(x)}(t_k) \\ &=\begin{pmatrix}M_{\sum_{i\in[k]}t_iX_i(x)}(t_k)\end{pmatrix}^n \\ &= \left( \mathrm{Pr}(\|C(x)\|=0)\right.\\ &+\sum_{j=1}^{k}\Pr(\|C(x)\|=j)\sum_{T\subseteq[k]:|T|=j}\Pr(C(x)=f_{H(z)}^{-1}(T)\mid\|C(x)\|=j)\mathrm{e}^{t_{k}\sum_{i\in T}t_{i}}\Bigg) \\ &=\left(1-\frac{\lambda}{n}+\frac{\lambda}{n}\sum_{i\in[k]}\Pr(i\in C(x)\mid\|C(x)\|=1)\mathrm{e}^{t_kt_i}+o(1/n)\right)^n \\ &=\left(1-\frac{\lambda}{n}+\frac{\lambda}{n}\sum_{i\in[k]}\left(\frac{1}{k}+o(1)\right)\mathrm{e}^{t_{k}t_{i}}+o(1/n)\right)^{n} \\ &= \left(1-\frac{\lambda}{n}+\frac{\lambda\sum_{i\in[k]}\mathrm{e}^{t_{k}t_{i}}}{kn}+o(1/n)\right)^{n} \\ &\to\mathrm{e}^{-\lambda+\frac{\lambda}{k}\sum_{i\in[k]}\mathrm{e}^{t_{k}t_{i}}}\quad\mathrm{as} n\to\infty \\ &= \mathrm{e}^{\frac{\lambda}{k}\left(\sum_{i\in[k]}\left(\mathrm{e}^{t_{k}t_{i}}-1\right)\right)} \\ &= M_{\sum_{i\in[k]}t_{i}\mathrm{Po}_{i}(\lambda_{k})}(t_{k}). \end{aligned} Mi[k]tiXi(tk)=Mi[k]tixSXi(x)(tk)=MxSi[k]tiXi(x)(tk)=(Mi[k]tiXi(x)(tk))n=(Pr(C(x)=0)+j=1kPr(C(x)=j)T[k]:T=jPr(C(x)=fH(z)1(T)C(x)=j)etkiTti)= 1nλ+nλi[k]Pr(iC(x)C(x)=1)etkti+o(1/n) n= 1nλ+nλi[k](k1+o(1))etkti+o(1/n) n=(1nλ+knλi[k]etkti+o(1/n))neλ+kλi[k]etktiasn=ekλ(i[k](etkti1))=Mi[k]tiPoi(λk)(tk).

前两个步骤是显而易见的。第三步是从 H ( x ) H(x) H(x) 是独立的这一事实开始的

dent 和以 H ( z ) H(z) H(z) 为条件的相同分布(对于 x ∈ S x\in S xS ),所以 ∑ i ∈ [ k ] t i X i ( x ) \sum_{i\in[k]}t_{i}X_{i}(x) i[k]tiXi(x) 也是,因为每个都是相应 H ( x ) H(x) H(x) 的函数。第四步来自力矩生成函数的定义。第五步和第六步遵循对 C ( x ) C(x) C(x) 分布的假设(在第六步中, i ∈ H ( z ) i\in H(z) iH(z) 的条件隐含在我们的约定中,它将 [ k ] [k] [k] 中的整数与 H ( z ) H(z) H(z) 的元素相关联)。第七步、第八步和第九步是显而易见的,第十步遵循前面的计算。现在修复一些双射 g g g : Z ≥ 0 k \mathbb{Z} _{\geq 0}^{k} Z0k → \to Z ≥ 0 \mathbb{Z} _{\geq 0} Z0 ,并定义 h : Z ≥ 0 → { 0 , 1 } : h ( x ) = 1 h:\mathbb{Z}_{\geq0}\to\{0,1\}:h(x)=1 h:Z0{0,1}:h(x)=1 if 和

仅当 g − 1 ( x ) g^{-1}(x) g1(x) 的每个坐标都大于 0 时。由于 { X n } \{X^{n}\} {Xn} 在分布中收敛到 P P P,因此 { g ( X n ) } \{g(X^{n})\} {g(Xn)} 在分布中收敛到 g ( P ) g(P) g(P),因为 y y y 是一个双射,而 X n X^{n} Xn P P P 具有离散分布。Skorohod 表示定理 [1, 定理 25.6] 现在意味着存在一些概率空间,可以在其中定义随机变量 { Y n } \{Y_{n}\} {Yn} P ′ P^{\prime} P ,其中 Y n ∼ g ( X n ) Y_{n}\sim g(X^{n}) Yng(Xn) P ′ ∼ g ( P ) P^{\prime}\sim g(P) Pg(P) ,以及 { Y n } \{Y_{n}\} {Yn} 几乎可以肯定地收敛到 P ′ P^{\prime} P。当然,由于 Y n Y_{n} Yn 只取整数值,因此每当 { Y n } \{Y_{n}\} {Yn} 收敛到 P ′ P^{\prime} P 时,必须有一些 7 l 0 7l_{0} 7l0,使得 Y n 0 = Y n 1 = P ′ Y_{n_{0}}=Y_{n_{1}}=P^{\prime} Yn0=Yn1=P 对于任何 n 1 > n 0 n_{1}>n_{0} n1>n0 ,因此 { h ( Y n ) } \{h(Y_{n})\} {h(Yn)} 很容易收敛到 h ( P ′ ) h(P^{\prime}) h(P) 。因此, { h ( Y n ) } \{h(Y_{n})\} {h(Yn)} 收敛为

h ( P ′ ) h(P^{\prime}) h(P) 几乎可以肯定,所以

P r ( F ) = P r ( ∀ i ∈ [ k ] , X i > 0 ) = E [ h ( g ( X n ) ) ] = E [ h ( Y n ) ] → E [ h ( P ′ ) ] ] a s   n → ∞ = P r ( P o ( λ / k ) > 0 ) k = ( 1 − e − λ / k ) k , \begin{aligned}\mathbf{Pr}(\mathcal{F})&=\mathbf{Pr}(\forall i\in[k],X_{i}>0)\\&=\mathbf{E}[h(g(X^{n}))]\\&=\mathbf{E}[h(Y_{n})]\\&\to\mathbf{E}[h(P^{\prime})]]\quad\mathrm{as}\:n\to\infty\\&=\mathbf{Pr}(\mathrm{Po}(\lambda/k)>0)^{k}\\&=\left(1-\mathrm{e}^{-\lambda/k}\right)^{k},\end{aligned} Pr(F)=Pr(i[k],Xi>0)=E[h(g(Xn))]=E[h(Yn)]E[h(P)]]asn=Pr(Po(λ/k)>0)k=(1eλ/k)k,

其中第四步是唯一的非平凡步骤,它遵循[1,定理 5.4]

事实证明,定理 4.1 的条件在许多情况下可以很容易地验证。

引理 4.1.Fir a scheme.假设存在常数 λ \lambda λ k k k,使得

  1. { H ( u ) : u ∈ U } \{H(u):u\in U\} {H(u):uU} 是独立的,分布相同

2.对于 u ∈ U u\in U uU , ∥ H ( u ) ∥ = k \|H(u)\|=k H(u)=k

3.对于 u ∈ U u\in U uU

max ⁡ i ∈ H ∣ P r ( i ∈ H ( u ) ) − λ k n ∣ = o ( 1 / n ) . \max\limits_{i\in H}\left|\mathbf{Pr}(i\in H(u))-\frac{\lambda}{kn}\right|=o(1/n). iHmax Pr(iH(u))knλ =o(1/n).

4.$u $

max ⁡ i 1 , i 2 ∈ H P r ( i 1 , i 2 ∈ H ( u ) ) = o ( 1 / n ) . \max_{i_{1},i_{2}\in H}\mathbf{Pr}(i_{1},i_{2}\in H(u))=o(1/n). i1,i2HmaxPr(i1,i2H(u))=o(1/n).

5.所有可能的哈希位置集合 H H H 满足 ∣ H ∣ = O ( n ) |H|=O(n) H=O(n)

那么定理 4.1 的条件成立( λ \lambda λ 的值相同),因此结论也是如此。

备注。回想一下,在我们的符号下,当且仅当 i ˙ \dot{i} i˙ 是重数至少 2 的 H ( u ) H(u) H(u) 的元素时,语句 i , i ∈ H ( u ) i,i\in H(u) i,iH(u) 才成立。

证明。我们采用定理 4.1 证明中引入的约定,其中 H ( z ) H(z) H(z) 的元素由 [ k ] [k] [k] 中的整数标识

定理 4.1 的前两个条件很容易满足。对于第三个条件,观察对于任何 j ∈ { 2 , … , k } j\in\{2,\ldots,k\} j{2,,k} x ∈ S x\in S xS

P r ( ∥ C ( x ) ∥ = j ) ≤ P r ( ∥ C ( x ) ∥ > 1 ) = P r ( ∃ i 1 ≤ i 2 ∈ [ k ] : i 1 , i 2 ∈ H ( x )   o r   ∃ i ∈ H : i ∈ H ( x ) , i , i ∈ H ( z ) ) ≤ ∑ i 1 ≤ i 2 ∈ [ k ] P r ( i 1 , i 2 ∈ H ( x ) ) + ∑ i ∈ H P r ( i ∈ H ( x ) ) P r ( i , i ∈ H ( z ) ) ≤ k 2 o ( 1 / n ) + ∣ H ∣ ( λ k n + o ( 1 / n ) ) o ( 1 / n ) = o ( 1 / n ) + ∣ H ∣ o ( 1 / n 2 ) = o ( 1 / n ) + O ( n ) o ( 1 / n 2 ) = o ( 1 / n ) \begin{aligned}\mathbf{Pr}(\|C(x)\|=j)&\leq\mathbf{Pr}(\|C(x)\|>1)\\&=\mathbf{Pr}(\exists i_{1}\leq i_{2}\in[k]:i_{1},i_{2}\in H(x)\mathrm{~or~}\exists i\in H:i\in H(x),i,i\in H(z))\\&\leq\sum_{i_{1}\leq i_{2}\in[k]}\mathbf{Pr}(i_{1},i_{2}\in H(x))+\sum_{i\in H}\mathbf{Pr}(i\in H(x))\mathbf{Pr}(i,i\in H(z))\\&\leq k^{2}o(1/n)+|H|\left(\frac{\lambda}{kn}+o(1/n)\right)o(1/n)\\&=o(1/n)+|H|o(1/n^{2})\\&=o(1/n)+O(n)o(1/n^{2})\\&=o(1/n)\end{aligned} Pr(C(x)=j)Pr(C(x)>1)=Pr(i1i2[k]:i1,i2H(x) or iH:iH(x),i,iH(z))i1i2[k]Pr(i1,i2H(x))+iHPr(iH(x))Pr(i,iH(z))k2o(1/n)+H(knλ+o(1/n))o(1/n)=o(1/n)+Ho(1/n2)=o(1/n)+O(n)o(1/n2)=o(1/n)

Pr ⁡ ( ∥ C ( x ) ∥ = 1 ) ≤ Pr ⁡ ( ∣ C ( x ) ∣ ≥ 1 ) ≤ ∑ i ∈ [ k ] Pr ⁡ ( i ∈ H ( x ) ) ≤ k ( λ k n + o ( 1 / n ) ) = λ n + o ( 1 / n ) \Pr(\|C(x)\|=1)\leq\Pr(|C(x)|\geq1)\leq\sum_{i\in[k]}\Pr(i\in H(x))\leq k\left({\frac{\lambda}{kn}}+o(1/n)\right)={\frac{\lambda}{n}}+o(1/n) Pr(C(x)=1)Pr(C(x)1)i[k]Pr(iH(x))k(knλ+o(1/n))=nλ+o(1/n)

P r ( ∥ C ( x ) ∥ ≥ 1 ) = P r ( ⋃ i ∈ [ k ] i ∈ H ( x ) ) ≥ ∑ i ∈ [ k ] P r ( i ∈ H ( x ) ) − ∑ i 1 < i 2 ∈ [ k ] P r ( i 1 , i 2 ∈ H ( x ) ) ≥ k ( λ k n + o ( 1 / n ) ) − k 2 o ( 1 / n ) = λ n + o ( 1 / n ) , \begin{aligned}\mathbf{Pr}(\|C(x)\|\geq1)&=\mathbf{Pr}\left(\bigcup_{i\in[k]}i\in H(x)\right)\\&\geq\sum_{i\in[k]}\mathbf{Pr}(i\in H(x))-\sum_{i_{1}<i_{2}\in[k]}\mathbf{Pr}(i_{1},i_{2}\in H(x))\\&\geq k\left(\frac{\lambda}{kn}+o(1/n)\right)-k^{2}o(1/n)\\&=\frac{\lambda}{n}+o(1/n),\end{aligned} Pr(C(x)1)=Pr i[k]iH(x) i[k]Pr(iH(x))i1<i2[k]Pr(i1,i2H(x))k(knλ+o(1/n))k2o(1/n)=nλ+o(1/n),

所以

P r ( ∥ C ( x ) ∥ = 1 ) = P r ( ∥ C ( x ) ∥ ≥ 1 ) − P r ( ∥ C ( x ) ∥ > 1 ) ≥ λ n + o ( 1 / n ) − o ( 1 / n ) = λ n + o ( 1 / n ) . \begin{aligned}\mathbf{Pr}(\|C(x)\|=1)&=\mathbf{Pr}(\|C(x)\|\geq1)-\mathbf{Pr}(\|C(x)\|>1)\\&\geq\frac{\lambda}{n}+o(1/n)-o(1/n)\\&=\frac{\lambda}{n}+o(1/n).\end{aligned} Pr(C(x)=1)=Pr(C(x)1)Pr(C(x)>1)nλ+o(1/n)o(1/n)=nλ+o(1/n).

因此

Pr ⁡ ( ∥ C ( x ) ∥ = 1 ) = λ n + o ( 1 / n ) , \Pr(\|C(x)\|=1)=\frac{\lambda}{n}+o(1/n), Pr(C(x)=1)=nλ+o(1/n),

P r ( ∥ C ( x ) ∥ = 0 ) = 1 − ∑ j = 1 k P r ( ∥ C ( x ) ∥ = j ) = 1 − λ n + o ( 1 / n ) . \begin{aligned}\mathbf{Pr}(\|C(x)\|=0)=1-\sum_{j=1}^k\mathbf{Pr}(\|C(x)\|=j)=1-\frac{\lambda}{n}+o(1/n).\end{aligned} Pr(C(x)=0)=1j=1kPr(C(x)=j)=1nλ+o(1/n).

我们现在已经证明,定理 4.1 的第三个条件是满足的

对于第四个条件,我们观察到对于任何 i ∈ [ k ] i\in[k] i[k] x ∈ S x\in S xS

P r ( i ∈ C ( x ) , ∥ C ( x ) ∥ = 1 ) ≤ P r ( i ∈ H ( x ) ) = λ k n + o ( 1 / n ) , \mathbf{Pr}(i\in C(x),\|C(x)\|=1)\leq\mathbf{Pr}(i\in H(x))=\frac{\lambda}{kn}+o(1/n), Pr(iC(x),C(x)=1)Pr(iH(x))=knλ+o(1/n),

P r ( i ∈ C ( x ) , ∥ C ( x ) ∥ = 1 ) = P r ( i ∈ H ( x ) ) − P r ( i ∈ H ( x ) , ∥ C ( x ) ∥ > 1 ) ≥ P r ( i ∈ H ( x ) ) − P r ( ∥ C ( x ) ∥ > 1 ) = λ k n + o ( 1 / n ) − o ( 1 / n ) , \begin{aligned}\mathbf{Pr}(i\in C(x),\|C(x)\|=1)&=\mathbf{Pr}(i\in H(x))-\mathbf{Pr}(i\in H(x),\|C(x)\|>1)\\&\geq\mathbf{Pr}(i\in H(x))-\mathbf{Pr}(\|C(x)\|>1)\\&=\frac{\lambda}{kn}+o(1/n)-o(1/n),\end{aligned} Pr(iC(x),C(x)=1)=Pr(iH(x))Pr(iH(x),C(x)>1)Pr(iH(x))Pr(C(x)>1)=knλ+o(1/n)o(1/n),

所以

Pr ⁡ ( i ∈ C ( x ) , ∥ C ( x ) ∥ = 1 ) = λ k n + o ( 1 / n ) , \Pr(i\in C(x),\|C(x)\|=1)=\frac{\lambda}{kn}+o(1/n), Pr(iC(x),C(x)=1)=knλ+o(1/n),

这意味着

P r ( i ∈ C ( x ) ∣ ∥ C ( x ) ∥ = 1 ) = P r ( i ∈ C ( x ) , ∥ C ( x ) ∥ = 1 ) P r ( ∥ C ( x ) ∥ = 1 ) = λ k n + o ( 1 / n ) λ n + o ( 1 / n ) = 1 k + o ( 1 ) , \mathbf{Pr}(i\in C(x)\mid\|C(x)\|=1)={\frac{\mathbf{Pr}(i\in C(x),\|C(x)\|=1)}{\mathbf{Pr}(\|C(x)\|=1)}}={\frac{{\frac{\lambda}{kn}}+o(1/n)}{{\frac{\lambda}{n}}+o(1/n)}}={\frac{1}{k}}+o(1), Pr(iC(x)C(x)=1)=Pr(C(x)=1)Pr(iC(x),C(x)=1)=nλ+o(1/n)knλ+o(1/n)=k1+o(1),

完成证明( i ∈ H ( z ) i\in H(z) iH(z)的条件再次被约定所暗示,即 ⊔ \sqcup [ k ] [k] [k]的元素与 H ( z ) H(z) H(z)中的哈希位置相关联

5. 一些具体方案

我们现在准备分析一些具体的方案。特别是,我们研究了第 3 节中描述的方案的自然泛化,以及 [5, 6] 中介绍的双重哈希和扩展双重哈希方案

在这两种情况下,我们都考虑一个由 T I l = C T b TIl=CTb TIl=CTb 位数组和 k k k 哈希函数组成的 Bloom 过滤器,其中 c > 0 c>0 c>0 k ≥ 1 k\geq1 k1 是固定常数。哈希函数的性质取决于所考虑的特定方案

5.1分区方案

首先,我们考虑分区方案的类,其中 Bloom 过滤器由一个 7712 位的数组定义,该数组被划分为 k k k m ′ = m / k m^{\prime}=m/k m=m/k 位的不相交数组(我们要求 711 l 711l 711l 能被 k k k 整除),并且一个项目 u ∈ U u\in U uU 被哈希到位置

h 1 ( u ) + i h 2 ( u )   m o d   m ′ h_1(u)+ih_2(u)\bmod m' h1(u)+ih2(u)modm

数组 i i i ,对于 i ∈ [ k ] i\in[k] i[k] ,其中 h 1 h_{1} h1 h 2 h_{2} h2 是具有共域 [ m ′ ] [m^{\prime}] [m] 的独立完全随机哈希函数。请注意,第 3 节中分析的方案是一个分区方案,其中 m ′ m^{\prime} m 是素数(因此在第 3 节中用 P P P 表示)除非另有说明,否则我们进行所有涉及 h 1 h_{1} h1 h 2 h_{2} h2 模数 m ′ m^{\prime} m 的算术运算

我们证明了以下关于分区方案的定理

定理 5.1.对于分区方案,

lim ⁡ n → ∞ P r ( F ) = ( 1 − e − k / c ) k . \lim\limits_{n\to\infty}\mathbf{Pr}(\mathcal{F})=\left(1-\mathrm{e}^{-k/c}\right)^{k}. nlimPr(F)=(1ek/c)k.

证明。我们将证明 H ( u ) H(u) H(u) 满足引理 4.1 的条件,其中 λ = k 2 / c \lambda=k^{2}/c λ=k2/c 对于 i ∈ [ k ] i\in[k] i[k] u ∈ U u\in U uU ,定义

g i ( u ) = ( i , h 1 ( u ) + i h 2 ( u ) ) H ( u ) = ( g i ( u )   :   i ∈ [ k ] ) . \begin{aligned}g_i(u)&=(i,h_1(u)+ih_2(u))\\H(u)&=(g_i(u)\::\:i\in[k]).\end{aligned} gi(u)H(u)=(i,h1(u)+ih2(u))=(gi(u):i[k]).

也就是说, g i ( u ) g_{i}(u) gi(u) u u u 的第 i 个哈希位置, H ( u ) H(u) H(u) y o u r your your 的多组哈希位置。这个表示法显然与引理 4.1 要求的定义一致,因为 h 1 h_{1} h1 h 2 h_{2} h2 是独立的和完全随机的,所以前两个条件是微不足道的。这

最后一个条件也是微不足道的,因为有 T H = C H L TH=CHL TH=CHL 可能的哈希位置。对于其余两个条件,请修复 u ∈ U u\in U uU 。观察到,对于 ( i , r ) ∈ [ k ] × [ m ′ ] (i,r)\in[k]\times[m^{\prime}] (i,r)[k]×[m]

P r ( ( i , r ) ∈ H ( u ) ) = P r ( h 1 ( u ) = r − i h 2 ( u ) ) = 1 m ′ = k 2 / c k n , \mathbf{Pr}((i,r)\in H(u))=\mathbf{Pr}(h_{1}(u)=r-ih_{2}(u))=\frac{1}{m^{\prime}}=\frac{k^{2}/c}{kn}, Pr((i,r)H(u))=Pr(h1(u)=rih2(u))=m1=knk2/c,

对于不同的 ( i 1 , r 1 ) , ( i 2 , r 2 ) ∈ [ k ] × [ m ′ ] (i_{1},r_{1}),(i_{2},r_{2})\in[k]\times[m^{\prime}] (i1,r1),(i2,r2)[k]×[m] ,我们有

P r ( ( i 1 , r 1 ) , ( i 2 , r 2 ) ∈ H ( u ) ) = P r ( i 1 ∈ H ( u ) )   P r ( i 2 ∈ H ( u ) ∣ i 1 ∈ H ( u ) ) = 1 m ′ P r ( h 1 ( u ) = r 2 − i 2 h 2 ( u ) ∣ h 1 ( u ) = r 1 − i 1 h 2 ( u ) ) ) = 1 m ′ P r ( ( i 1 − i 2 ) ) h 2 ( u ) = r 1 − r 2 ) ≤ 1 m ′ ⋅ gcd ⁡ ( ∣ i 2 − i 1 ∣ , m ′ ) m ′ ≤ k ( m ′ ) 2 = o ( 1 / n ) \begin{aligned}\mathbf{Pr}((i_{1},r_{1}),(i_{2},r_{2})\in H(u))&=\mathbf{Pr}(i_{1}\in H(u))\:\mathbf{Pr}(i_{2}\in H(u)\mid i_{1}\in H(u))\\&=\frac{1}{m^{\prime}}\mathbf{Pr}(h_{1}(u)=r_{2}-i_{2}h_{2}(u)\mid h_{1}(u)=r_{1}-i_{1}h_{2}(u)))\\&=\frac{1}{m^{\prime}}\mathbf{Pr}((i_{1}-i_{2}))h_{2}(u)=r_{1}-r_{2})\\&\leq\frac{1}{m^{\prime}}\cdot\frac{\gcd(|i_{2}-i_{1}|,m^{\prime})}{m^{\prime}}\\&\leq\frac{k}{(m^{\prime})^{2}}\\&=o(1/n)\end{aligned} Pr((i1,r1),(i2,r2)H(u))=Pr(i1H(u))Pr(i2H(u)i1H(u))=m1Pr(h1(u)=r2i2h2(u)h1(u)=r1i1h2(u)))=m1Pr((i1i2))h2(u)=r1r2)m1mgcd(i2i1,m)(m)2k=o(1/n)


其中第四步是唯一重要的步骤,它从标准事实得出,对于任何 r , s ∈ [ m ] r,s\in[m] r,s[m] ,最多有 gcd ⁡ ( r , m ) \gcd(r,m) gcd(r,m) t ∈ [ m ] t\in[m] t[m] 使得 r t ≡ s   m o d   m rt\equiv s\bmod m rtsmodm m TIl(例如,参见[9,命题 3.3.1])。最后,由于从方案的定义中可以清楚地看出 ∣ H ( u ) ∣ = k \left|H(u)\right|=k H(u)=k 对于所有 u ∈ U u\in U uU ,我们有任何 ( i , r ) ∈ [ k ] × [ m ′ ] (i,r)\in[k]\times[m^{\prime}] (i,r)[k]×[m]

P r ( ( i , r ) , ( i , r ) ∈ H ( u ) ) = 0. \mathbf{Pr}((i,r),(i,r)\in H(u))=0. Pr((i,r),(i,r)H(u))=0.

5.2 (扩展的) 双重哈希方案

接下来,我们考虑双哈希和扩展双哈希方案的类别,在 [5, 6] 中对它们进行了实证分析。在这些方案中,项目 u ∈ U u\in U uU 被哈希处理到 location

h 1 ( u ) + i h 2 ( u ) + f ( i )   m o d   m h_1(u)+ih_2(u)+f(i)\bmod m h1(u)+ih2(u)+f(i)modm

7 T L 7TL 7TL 位的数组中,对于 i ∈ [ k ] i\in[k] i[k] ,其中 h 1 h_{1} h1 h 2 h_{2} h2 是具有共域 [ m ] [m] [m] 的独立完全随机哈希函数, f : [ k ] → [ m ] f:[k]\to[m] f:[k][m] 是一个任意函数。当 f ( i ) ≡ 0 f(i)\equiv0 f(i)0 时,该方案称为双哈希方案。否则,称为 ertended double hashing scheme(带 f f f )

除非另有说明,否则我们进行所有涉及 h 1 h_{1} h1 h 2 h_{2} h2 模数 TIl 的运算 TIl 我们证明了以下关于双重哈希方案的定理。

定理 5.2.对于任何(扩展的)双重哈希方案。

lim ⁡ n → ∞ P r ( F ) = ( 1 − e − k / c ) k . \lim\limits_{n\to\infty}\mathbf{Pr}(\mathcal{F})=\left(1-\mathrm{e}^{-k/c}\right)^{k}. nlimPr(F)=(1ek/c)k.

备注。结果适用于 $f $ 的任何选择。事实上, f f f 甚至可以从 [ m ] [ k ] [m]^{[k]} [m][k] 的任意概率分布中得出,只要它是独立于两个随机哈希函数 h 1 h_{1} h1 h 2 h_{2} h2 绘制的

证明。我们继续证明该方案满足引理 4.1 的条件(对于 λ = k 2 / c \lambda=k^{2}/c λ=k2/c )。由于 h 1 h_{1} h1 h 2 h_{2} h2 是独立且完全随机的,因此前两个条件很容易成立。最后一个条件也很微不足道,因为有 T H = C T L TH=CTL TH=CTL 个可能的哈希位置

证明第三个和第四个条件成立需要付出更多的努力。首先,我们需要一些符号。对于 u ∈ U u\in U uU , i ∈ [ k ] i\in[k] i[k] ,定义

g i ( u ) = h 1 ( u ) + i h 2 ( u ) + f ( i ) H ( u ) = ( g i ( u ) :   i ∈ [ k ] ) . \begin{aligned}g_i(u)&=h_1(u)+ih_2(u)+f(i)\\H(u)&=(g_i(u):\:i\in[k]).\end{aligned} gi(u)H(u)=h1(u)+ih2(u)+f(i)=(gi(u):i[k]).

也就是说, g i ( u ) g_{i}(u) gi(u) u u u 的第 i 个哈希位置, H ( u ) H(u) H(u) u u u 的多组哈希位置。这种表示法显然与 Lemma 4.1 要求的定义一致。修复 u ∈ U u\in U uU 。对于 r ∈ [ m ] r\in[m] r[m]
P r ( ∃ j ∈ [ k ] : g j ( u ) = r ) ≤ ∑ j ∈ [ k ] P r ( h 1 ( u ) = r − j h 2 ( u ) − f ( j ) ) = k m . \begin{aligned}\mathbf{Pr}(\exists j\in[k]:g_j(u)=r)\leq\sum_{j\in[k]}\mathbf{Pr}(h_1(u)=r-jh_2(u)-f(j))=\frac{k}{m}.\end{aligned} Pr(j[k]:gj(u)=r)j[k]Pr(h1(u)=rjh2(u)f(j))=mk.

此外,对于任何 j 1 , j 2 ∈ [ k ] j_{1},j_{2}\in[k] j1,j2[k] r 1 , r 2 ∈ [ m ] r_{1},r_{2}\in[m] r1,r2[m]

P r ( g j 1 ( u ) = r 1 , g j 2 ( u ) = r 2 ) = P r ( g j 1 ( u ) = r 1 ) P r ( g j 2 ( u ) = r 2 ∣ g j 1 ( u ) = r 1 ) = 1 m P r ( g j 2 ( u ) = r 2 ∣ g j 1 ( u ) = r 1 ) = 1 m P r ( ( j 1 − j 2 ) h 2 ( u ) = r 1 − r 2 + f ( j 2 ) − f ( j 1 ) ) ≤ 1 m ⋅ gcd ⁡ ( ∣ j 1 − j 2 ∣ , m ) m ≤ 1 m ⋅ k m = k m 2 = o ( 1 / n ) , \begin{aligned}\mathbf{Pr}(g_{j_{1}}(u)=r_{1}, g_{j_{2}}(u)=r_{2})&=\mathbf{Pr}(g_{j_{1}}(u)=r_{1})\mathbf{Pr}(g_{j_{2}}(u)=r_{2}\mid g_{j_{1}}(u)=r_{1})\\&=\frac{1}{m}\mathbf{Pr}(g_{j_{2}}(u)=r_{2}\mid g_{j_{1}}(u)=r_{1})\\&=\frac{1}{m}\mathbf{Pr}((j_{1}-j_{2})h_{2}(u)=r_{1}-r_{2}+f(j_{2})-f(j_{1}))\\&\leq\frac{1}{m}\cdot\frac{\gcd(|j_{1}-j_{2}|,m)}{m}\\&\leq\frac{1}{m}\cdot\frac{k}{m}\\&=\frac{k}{m^{2}}\\&=o(1/n),\end{aligned} Pr(gj1(u)=r1,gj2(u)=r2)=Pr(gj1(u)=r1)Pr(gj2(u)=r2gj1(u)=r1)=m1Pr(gj2(u)=r2gj1(u)=r1)=m1Pr((j1j2)h2(u)=r1r2+f(j2)f(j1))m1mgcd(j1j2,m)m1mk=m2k=o(1/n),

其中第四步是唯一重要的一步,它从标准事实得出,对于任何 r , s ∈ [ m ] r,s\in[m] r,s[m] ,最多有 gcd ⁡ ( r , m ) \gcd(r,m) gcd(r,m) t ∈ [ m ] t\in[m] t[m],使得 r t ≡ s rt\equiv s rts mod 711。例如,参见 [9, Proposition 3.3.1])。因此,对于 r ∈ [ m ] r\in[m] r[m]

P r ( ∃ j ∈ [ k ] : g j ( u ) = r ) ≥ ∑ j ∈ [ k ] P r ( g j ( u ) = r ) − ∑ j 1 < j 2 ∈ [ k ] P r ( g j 1 ( u ) = r , g j 2 ( u ) = r ) ≥ k m − k 2 o ( 1 / n ) = k m + o ( 1 / n ) , \begin{aligned}\mathbf{Pr}(\exists j\in[k]:g_{j}(u)=r)&\geq\sum_{j\in[k]}\mathbf{Pr}(g_{j}(u)=r)-\sum_{j_{1}<j_{2}\in[k]}\mathbf{Pr}(g_{j_{1}}(u)=r,g_{j_{2}}(u)=r)\\&\geq\frac{k}{m}-k^{2}o(1/n)\\&=\frac{k}{m}+o(1/n),\end{aligned} Pr(j[k]:gj(u)=r)j[k]Pr(gj(u)=r)j1<j2[k]Pr(gj1(u)=r,gj2(u)=r)mkk2o(1/n)=mk+o(1/n),

这意味着

P r ( r ∈ H ( u ) ) = P r ( ∃ j ∈ [ k ] : g j ( u ) = r ) = k m + o ( 1 / n ) , \mathbf{Pr}(r\in H(u))=\mathbf{Pr}(\exists j\in[k]:g_j(u)=r)=\frac{k}{m}+o(1/n), Pr(rH(u))=Pr(j[k]:gj(u)=r)=mk+o(1/n),

所以引理 4.1 的第三个条件成立。对于第四个条件,请修复任何 r 1 , r 2 ∈ [ m ] r_{1},r_{2}\in[m] r1,r2[m] 。然后

P r ( r 1 , r 2 ∈ H ( u ) ) ≤ ∑ j 1 , j 2 ∈ [ k ] P r ( g j 1 ( u ) = r 1 , g j 2 ( u ) = r 2 ) ≤ k 2 o ( 1 / n ) = o ( 1 / n ) , \mathbf{Pr}(r_{1},r_{2}\in H(u))\leq\sum_{j_{1},j_{2}\in[k]}\mathbf{Pr}(g_{j_{1}}(u)=r_{1},g_{j_{2}}(u)=r_{2})\leq k^{2}o(1/n)=o(1/n), Pr(r1,r2H(u))j1,j2[k]Pr(gj1(u)=r1,gj2(u)=r2)k2o(1/n)=o(1/n),

完成证明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值