算法导论 11.3-5

定义一个从有限集合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个。因此每一对不同元素构成的元素对的碰撞数至少为:


所以,任何一对不同元素发生碰撞的可能性的边界ε不能少于



  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值