布隆过滤器

what:

  布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。

 

  错误率越低:
    - 位数组越长,控件占用较大;
    - 无偏hash函数越多,计算耗时较长;


  优点:

    - 时间复杂度低,增加和查询元素的时间复杂为O(N),(N为哈希函数的个数,通常情况比较小)
    - 保密性强,布隆过滤器不存储元素本身
    - 存储空间小,如果允许存在一定的误判,布隆过滤器是非常节省空间的(相比其他数据结构如Set集合)
  缺点:

    - 有点一定的误判率,但是可以通过调整参数来降低
    - 无法获取元素本身
    - 很难删除元素

 

how:

  大型位数组 + 多个无偏hash函数:

    无偏hash函数就是能把元素的hash值计算的比较均匀的hash函数,能使得计算后的元素下标比较均匀的映射到位数组中。

    demo:一个简单的布隆过滤器示意图,其中k1、k2代表增加的元素,a、b、c即为无偏hash函数,最下层则为二进制数组。

 

posted @ 2022-09-16 23:29  修心而结网  阅读(23)  评论(0编辑  收藏  举报