zoukankan      html  css  js  c++  java
  • Bloom Filter 布隆过滤器

    Bloom Filter 是由伯顿.布隆(Burton Bloom)在1970年提出的一种多hash函数映射的快速查找算法。它实际上是一个很长的二进制向量和一些列随机映射函数.应用在数据量很大的情况下。

    算法

    初始化一个m比特的值全为0的向量。选择k个不同的散列函数,散列函数的产生的值域范围是0~m-1.
    1)元素加入过滤器
       对于元素e1,通过k个散列函数分别产生了值为 h1 ,h2, ..., hk ;
       将二进制向量的第 h1 ,h2, ..., h位分别置为1;
       
    2)查找元素
    将元素通过k个散列函数分别产生值为h1 ,h2, ..., hk ;
    查找二进制向量的第 h1 ,h2, ..., h检查这些位是否都为1,如果都为1,那么该元素有可能存在,如果不全是1,那么元素一定不存在。
    上面提到如果二进制向量的 第h1 ,h2, ..., hk位都为1,那么元素有可能存在,是因为产生散列值时有可能发生散列碰撞。这种将不再集合中的元素错判为存在集合中的情况称为fals positive.
     3)删除元素
    元素加入二进制向量就不方便删除了,因为多个元素的某一个散列值有可能一样,删除的话,会影响其他元素的判断。这里可以对二进制向量的位置采用计数的方式,如要删除,将计数减1即可。
  • 相关阅读:
    SQL SERVER开窗函数
    SQL SERVER调优常用方法
    SQL SERVER其它函数
    SQL SERVER时间函数
    SQL SERVER字符串函数
    ptyhon技能树及其学习资源
    机器学习中的数学基础
    python-spider 第10题
    python-spider 第七关
    python-spider 第六关
  • 原文地址:https://www.cnblogs.com/tracer-dhy/p/6125987.html
Copyright © 2011-2022 走看看