我们平时在查询一个元素是否存在一个集合中
一般想到的是set、map、list
但是都会存储起来再做判断,效率会受到影响
bloom filter 是一种概率型数据结构
插入和查询效率都很高,缺点不易删除
布隆过滤器是一个bit数组或者bit向量,值为0或者1
当元素存储进去布隆过滤器的时候,会通过几个哈希函数映射在数组上个某个位置,标记为1,比如存储baidu这个元素
当查询元素是否存在的时候,元素通过哈希函数,如果映射在bit数组上的位置不都为1,则肯定不存在
而当都为1时,则有可能存在
布隆过滤器存在概率偏差
误差是可以调整的,但却存在,所以存在布隆过滤器变种
哈希函数个数选择:
False positives 概率推导见:https://www.cnblogs.com/liyulong1982/p/6013002.html