Bloom filter
来源:互联网 发布:mac os 10.7软件推荐 编辑:程序博客网 时间:2024/06/07 11:43
原文链接:blog.csdn.net/jiaomeng/article/details/1495500
Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。
集合表示和元素查询
集合表示:
利用位数组表示集合。初始状态下,Bloom Filter是一个包含m位的位数组,每一位都置为0 ;
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
为了表达S= {x1,x2…,xn}这样包含n个元素的集合,Bloom Filter使用 k 个相互独立的哈希函数(Hash Function),它们分别将集合中的每个元素映射到{1,…,m}的范围中。对任意一个元素 x ,第 i 个哈希函数映射的位置 hi(x) 就会被置为 1 (1≤i≤k)。注意,如果一个位置多次被置为1,那么只有第一次会起作用,后面几次将没有任何效果。在下图中,k=3,且有两个哈希函数选中同一个位置(从左边数第五位)。
在判断 y 是否属于这个集合时,我们对 y 应用 k 次哈希函数,如果所有 hi(y) 的位置都是 1(1<=i <=k),那么我们就认为 y 是集合中的元素,否则就认为 y 不是集合中的元素。下图中 y1 就不是集合中的元素,y2 或者属于这个集合,或者刚好是一个 false positive。
错误率估计:
Bloom Filter在判断一个元素是否属于它表示的集合时会有一定的错误率(false positive rate),下面我们就来估计错误率的大小。在估计之前为了简化模型,我们假设 kn
- Bloom Filter
- Bloom Filter
- Bloom Filter
- Bloom Filter
- Bloom Filter
- Bloom Filter
- Bloom Filter
- Bloom Filter
- bloom filter
- bloom filter
- Bloom Filter
- Bloom Filter
- bloom filter
- bloom filter
- bloom filter
- Bloom filter
- Bloom filter
- Bloom Filter
- AbstractQueuedSynchronizer
- Android studio DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs
- vim多行注释
- 网络学习笔记(网络层二)
- 《机器学习实战》Logistics回归学习心得
- Bloom filter
- 深入理解性能测试中的压力测试
- LeetCode9-Palindrome Number
- 2017.04.15【NOIP2017提高组】模拟赛B组
- 【Java 并发】详解 ThreadLocal
- 处理 python 无法抓取 HTTPS 请求
- 34. Search for a Range
- java-jpa-criteriaBuilder使用入门
- 【IOS学习之常见问题】 Program License Agreement updated,The 'Apple Developer Program License Agreement' has b