布隆过滤器、计数布隆过滤器、布谷鸟过滤器

1 标准布隆过滤器

1.1 优点

  • 支持添加和查询
  • 节省空间

1.2 缺点

  • 不支持删除操作
  • 布隆过滤器要采用多种哈希函数进行多次哈希

2 计数布隆过滤器

2.1 优点

  • 支持添加和删除
  • 支持计数

2.2 缺点

  • 内存消耗是标准布隆过滤器的3-4倍

3 布谷鸟过滤器

3.1 优点

  • 支持动态新增和删除元素
  • 布谷鸟哈希表更加紧凑,可以更加节省空间,散列确保了高空间占用率
  • 布隆过滤器要采用多种哈希函数进行多次哈希,而布谷鸟过滤器只需一次哈希,因此查询效率很高,提供了比标准布隆过滤器更高的查找性能
  • 如果要求错误率小于3%,那么在许多实际应用中,它比布隆过滤器占用的空间更小
  • 比商过滤器(quotient filter,另一种过滤器)之类的替代方案更容易实现

3.2 缺点

  • 布谷鸟过滤器采用一种备用候选桶的方案,候选桶与首选桶可以通过位置和存储值互相异或得出,这种对应关系要求桶的大小必须是 2 的指数倍
  • 布隆过滤器插入时计算好哈希直接写入位即可,而布谷鸟过滤器在计算后可能会出现当前位置上已经存储了指纹,这时候就需要将已存储的项踢到候选桶,随着桶越来越满,产生冲突的可能性越来越大,插入耗时越来越高,因此其插入性能相比布隆过滤器很差
  • 插入重复元素:布隆过滤器在插入重复元素时并没有影响,只是对已存在的位再置一遍。而布谷鸟过滤器对已存在的值会做踢出操作,因此重复元素的插入存在上限
  • 布谷鸟过滤器的删除并不完美:有上述重复插入的限制,删除时也会出现相关的问题:
    • 删除仅在相同哈希值被插入一次时是完美的
    • 如果元素没有插入便进行删除,可能会出现误删除,这和假阳性率的原因相同
    • 如果元素插入了多次,那么每次删除仅会删除一个值,你需要知道元素插入了多少次才能删除干净,或者循环运行删除直到删除失败为止

3.3 参数

  • 哈希函数个数(k):哈希个数,取 2 就足够
  • 桶大小(b):每个桶存储多少个指纹
  • 指纹大小(f):每个指纹存储键的哈希值的多少位

3.4 删除

布谷鸟过滤器就像计数布隆过滤器,可以通过从哈希表删除相应的指纹删除插入的项。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值