定义一个从有限集合U到有限集合B上的散列函数簇为ε全域的,对U中所有的不同元素对k和l,都有:
其中概率是相对于从函数簇Η中随机抽取的散列函数h而言的。证明:一个ε全域的散列函数簇必须满足:
Solution:
设b = |B|,u = |U|。如果一个哈希函数能够将U中的u/b个元素映射到B中b个槽中的每一个槽中,那么我们得到的总的碰撞数是最小的。对于给定的一个哈希函数,设为映射到B中j槽中的元素个数,j∈B。于是,可以得到:
同时也可以得到一个给定值j∈B的碰撞数是:
推论:对于每一个j∈B,当=u/b时,总的碰撞数是最小的。
证明:如≤u/b,称j为“未满”(underloaded),如果≥u/b,称j为超载(overloaded)。考虑一个不平衡的情况,即至少有一个值j∈B,有≠u/b。将一个平衡的情形,即所有的都等于u/b,通过不断地将匹配到underloaded中的值匹配到overloaded中来产生一个不平衡的情形(你可以将B中的每个值看作是一个桶,我们重复地从至多有u/b个元素的桶中移动元素到那些至少有u/b个元素的桶中)。
现在我们要证明每一次这样的移动都会增加碰撞的次数,所以所有的移动加起来一定会增加碰撞的次数。假设我们从一个underloaded的值j移动一个元素到overloaded的值k中,同时我们保证其它元素不发生任何改变或是移动。因为j为underloaded,而k为overloaded,所以有
现在,我们只考虑值j和k的碰撞数,在移动前我们有
个碰撞,在移动后我们有
我们希望证明的是:
现在通过下列等价的不等式来证明:
由此可证,这样的每一次移动都会增加碰撞的次数
结论:对于每一个j∈B,当=u/b时碰撞数是最小的。
通过上面的推论,对于任何的哈希函数,总的碰撞数至少为b(u/b)(u/b-1)/2,其中(u/b)(u/b-1)/2为每个j∈B的碰撞数,而B中共有b个值,所以总的碰撞数为b(u/b)(u/b-1)/2。U中由不同元素组成的元素对共有u(u-1)/2个。因此每一对不同元素构成的元素对的碰撞数至少为:
所以,任何一对不同元素发生碰撞的可能性的边界ε不能少于