Bloom Filter Variant
基础 布隆过滤器 中,不同哈希函数需要修改同一个位图,这导致:
- 哈希函数不是完全均匀的,有些位更容易被置
1
,导致某些位产生更多误报率 - 不能并发执行 k 个哈希函数
于是 2004 年提出 布隆过滤器变体(Bloom Filter Variant) 以解决这两个问题。[1]
原理
该布隆过滤器变体由两部份组成:
- M 位的位图
- k 个互相独立的哈希函数
其中,M 位的位图被 k 等分,每个切片(slice)长度为 m,即
与基础 布隆过滤器 不同的是,每个哈希函数独占一个 slice,不同哈希函数不会重复设置位。
这种变体更健壮,并且支持并发处理。
应用
哈希函数数量(k)为多少时,错误率( )最低,此时为多少?
插入 1 个元素后,某一个位被置 1、置 0 的概率为
当插入 n 个元素后,某一位被置 0、置 1 的概率是
同样使用自然对数 e 的计算公式
插入 n 个元素后某一位被置 1 的概率可以简化为
于是得到
又由公式
对于给定的纳伪率
最后由
实际应用中如何使用布隆过滤器变体?
首先获取/估算插入个数(
- 根据公式
计算 k 的值 - 根据公式
计算 m 的值
F. Chang, W. chang Feng, K. Li, Approximate caches for packet classification, in: Proc. of the 23rd Annual Joint Conference of the IEEE Computer and Communications Societies (IN- FOCOM 2004), IEEE, 2004. ↩︎