zoukankan      html  css  js  c++  java
  • BloomFilter

    Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。

    Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。

    下面我们来看Bloom Filter是如何用位素组来表示集合的。初始状态下,Bloom Filter是一个包含m位的位数组Bit Vector,每一位都是0。
    bf1

    往数组中添加一个元素x时,用k个独立的、均匀分布的哈希函数

    h1(),h2(),hk()h1(),h2(),⋯hk()

    对元素x进行哈希,假设得到k个结果如下

    h1(x)=8,h2(x)=11,hk(x)=3h1(x)=8,h2(x)=11,⋯hk(x)=3

    则把位数组上对应的位置为1,这样就把元素x映射到位数组中的k个二进制位了。(当某个位被重复置为1时,以第一次置1为准)

    ......

     

    阅读全文(http://www.lchml.com/blog/2015/09/12/bloomfilter.html)

  • 相关阅读:
    利用border制作三角形原理
    JavaScript中null和undefined
    localStorage 如何存储JSON数据并读取JSON数据
    常见的几种浏览器内核简单介绍
    关于Banner设计的促销氛围
    分数分配
    餐饮管理系统
    餐馆管理之点菜
    餐饮管理之结账
    餐饮管理之菜品管理
  • 原文地址:https://www.cnblogs.com/licheng127/p/5127853.html
Copyright © 2011-2022 走看看