布隆过滤器是为解决在海量数据中检索是否存在而设计的数据结构。
理想情况下,n位bitmap可以容纳个元素,已有元素较多时false positive几率大大增加。
假设bitmap长度为,现有个hash函数,并且对输入域的任意元素,hash得到的值在上均匀分布。
当前过滤器中已插入个元素时,已经进行了 次插入操作,任意一个bit上为零的概率是 ,为1的概率是 。
此时要插入一个元素,hash得到k个位置,如果这k个位置上已经全为1,则是false positive,概率为
用 Matlab 作图,,P随n变化趋势
可以看到m=1000条件下n=1000时,错误率已经高达80%+,这种情况下即使按照最简单的 bitmap也可以做到100%正确。布隆过滤器优势在何处?