全域hash

设计一个全域散列函数类的方法如下,该方法中,散列表大小m的大小是任意的。

选择一个足够大的质数p,使得每一个可能的关键字都落在0p-1的范围内。设Zp表示集合{0, 1, …, p-1}Zp*表示集合{1, 2, …, p-1}。对于任何aZp*和任何bZp,定义散列函数ha,b

ha,b = ((ak+b) mod p) mod m

所有这样的散列函数构成的函数族为:

Hp,m = {ha,b : aZp*bZp}

由于对a来说有p-1种选择,对于b来说有p种选择,因而,Hp,m中共有p(p-1)个散列函数。

可以证明碰撞发生的概率为1/m

我给出一个不同于算法导论那本书的证明:

由定理可知碰撞发生可表示为:

ak+b aj+b (mod p) 由于p是素数所以akaj mod p)推出


 

可知道当选定k,j的时候,只有一个a的值会发生碰撞,所以当碰撞的时候b可以取任意值即碰撞概率为


因为对足够大的p来说函数趋向1/m,所以发生碰撞的哈希函数概率等于1/m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值