美文网首页数据科学家
No. 15【大数据算法】Bloom Filter 的原理和实现

No. 15【大数据算法】Bloom Filter 的原理和实现

作者: 2453cf172ab4 | 来源:发表于2017-10-09 20:25 被阅读131次

0x00 前言

Bloom Filter 是由 Burton H. Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。

Bloom Filter 最初的论文发表在ACM,名为《Space/Time Trade-offs in Hash Coding with Allowable Errors》,感兴趣可以下载阅读。本篇主要分享 Bloom Filter 的基本原理、代码实现以及误判率的计算,看过 BitMap 那篇文章的童鞋再看这一篇会十分简单。

Bloom Filter 也就是常说的布隆过滤器,后面就统一称为 BF

0x01 原理

BF 可以高效地表示集合数据,它使用长度为 m 的位数组来存储集合信息,同时使用 k 个相互独立的哈希函数将数据映射到位数组空间。

直接上图,根据图来大致梳理一下算法流程。

  1. 初始化一个长度为m的位数组,并将所有元素置为0;
  2. 对于集合 S={a1, a2,…,an} 中的任一元素a,分别使用k个哈希函数对其计算: $w_i=hash_i(a)$,并将位数组中的第 $w_i$ 位置为1;
  3. 对S中所有的成员执行同样的操作。
公众号

相关文章

网友评论

本文标题:No. 15【大数据算法】Bloom Filter 的原理和实现

本文链接:https://www.haomeiwen.com/subject/tiapyxtx.html