哈希在元素包含测试中的应用

Andrew Zhang
Nov 16, 2017

1、counting bloom filter

counting bloom filter可以解决bloom filter无法删除元素的问题。但是布隆过滤器会因为负载不均衡,浪费很多空间。

2、d-left哈希

以2-left为例,采用两个hash表,T1和T2,分别对应两个hash函数,h1和h2。存储一个key时,分别用两个hash函数h1和h2计算两个位置h1[key]和h2[key],然后看看两个hash table对应位置有没有空,只要任意一个有空就可以将此key放在对应位置。当采用d对hash表和hash函数时就是d-left哈希。
d-left哈希可以减轻布隆过滤器的负载均衡问题,使得资源利用趋于平衡。

3、cuckoo hash

采用d个哈希函数,当插入一个元素的时候,若d个位置有空,任选一个插入,否则在d个位置中随便找一个,踢走,对被踢走的key,进行重新hash插入,如果被踢走的key的d个hash位置也是全满了,继续踢。。。

4、cuckoo filter

结合cuckoo hash和d-left hash的思路,将资源划分为两块,每一块采用不同的哈希函数。对于一个插入的key,在这两块寻找空的位置插入,若没空就尝试cuckoo思想,踢走,重哈希。cuckoo filter一个改进是在filter中存储的是信息压缩后的指纹,并且重哈希的时候根据保存的指纹就能找到另一个地址。


f=fingerprint(key) f = f i n g e r p r i n t ( k e y )
pos1=hash1(key) p o s 1 = h a s h 1 ( k e y )
pos2=pos1f p o s 2 = p o s 1 ⨁ f


参考论文:
Cuckoo Filter: Practically Better Than Bloom

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值