Partial Bloom Filter
2012-10-05 23:09
357 查看
转自:http://blog.csdn.net/jiaomeng/article/details/1502910
在标准的Bloom Filter中,我们用k个相互独立的哈希函数将一个集合映射到长度为m的位数组中,其中每个哈希函数的映射范围都为{0,
… , m-1}。除了这种标准的实现方式之外,还有一种实现被广泛采用,就是所谓的Partial Bloom Filter。
Partial Bloom Filter和标准Bloom Filter唯一不同的地方在于哈希函数的映射范围。在Partial Bloom Filter中,位数组被等分成k个区域,每个哈希函数只映射到其中一个区域。也就是说,每个哈希函数映射范围都是{0,
… , m/k - 1},但互不重叠,大家各自负责各自的区域。
下面我们来估算一下这种实现的错误率。位数组中某一位只可能被一个哈希函数选中,且选中的概率为k/m,所以这一位不被选中的概率为1 – k/m。假设集合有n个元素,那么这一位在存储完整个集合后还保持为0的概率为(1
– k/m)n。由于(1 – k/m)n ≈ e-kn/m,所以Partial Bloom Filter和标准Bloom Filter的错误率很近似。如果一定要分出个高下,实际上标准Bloom
Filter错误率要小一些,因为对于k≥1,有
在实际应用中,Partial Bloom Filter有一定的优势,因为一旦哈希函数的映射范围也独立开来,k个哈希函数就可以并行访问位数组,从而提高程序性能。
Partial Bloom Filter
焦萌 2007年2月5日在标准的Bloom Filter中,我们用k个相互独立的哈希函数将一个集合映射到长度为m的位数组中,其中每个哈希函数的映射范围都为{0,
… , m-1}。除了这种标准的实现方式之外,还有一种实现被广泛采用,就是所谓的Partial Bloom Filter。
Partial Bloom Filter和标准Bloom Filter唯一不同的地方在于哈希函数的映射范围。在Partial Bloom Filter中,位数组被等分成k个区域,每个哈希函数只映射到其中一个区域。也就是说,每个哈希函数映射范围都是{0,
… , m/k - 1},但互不重叠,大家各自负责各自的区域。
下面我们来估算一下这种实现的错误率。位数组中某一位只可能被一个哈希函数选中,且选中的概率为k/m,所以这一位不被选中的概率为1 – k/m。假设集合有n个元素,那么这一位在存储完整个集合后还保持为0的概率为(1
– k/m)n。由于(1 – k/m)n ≈ e-kn/m,所以Partial Bloom Filter和标准Bloom Filter的错误率很近似。如果一定要分出个高下,实际上标准Bloom
Filter错误率要小一些,因为对于k≥1,有
在实际应用中,Partial Bloom Filter有一定的优势,因为一旦哈希函数的映射范围也独立开来,k个哈希函数就可以并行访问位数组,从而提高程序性能。
相关文章推荐
- Partial Bloom Filter
- Skip List & Bloom Filter
- golang bloomfilter踩过的坑(https://github.com/mmczoo/dgobloom)
- 海量数据面试题----Bloom Filter/Bitmap
- Bloom Filter 算法简介 (增加 Counting Bloom Filter 内容)
- Compressed Bloom Filter
- Bloom Filter 算法简介 (增加 Counting Bloom Filter 内容)
- 怎样用bloom-filter构建一个大的内存cache(java实现)
- SampleBloomFilter 实现
- bloom filter + murmurhash
- 【整理】Bit-map/Bloom-filter
- Counting Bloom Filter
- Counting Bloom Filter
- HBase BloomFilter
- Perfect Hashing VS. Bloom Filter
- Bloom Filter Brief Intro
- Perl Bloom::Filter 模块使用分析
- bloomfilter && berkelydb
- Compressed Bloom Filter
- Dynamic Partial Reconfiguration 3 Implementation of Audio Filter on Virtex-5