浅谈布隆过滤器

解决的经典问题:
网页黑名单系统
垃圾邮件过滤系统
爬虫网址判断重复系统
容忍一定程度的失误率
对空间要求严格

布隆过滤器:
可以精确的代表一个集合
精确的判断一个元素是否在此集合中(并不是准确,因为)
精确的程度游设计决定
优势:利用很少的空间可以做到精确率较高

总结布隆过滤器的过程:
注意到题目允许有一定的失误率
根据样本的个数n,和允许的失误率p 通过下面的公式

bitarray 的大小 m = -n*lnp/(ln2)^2

根据已经求得的m 计算哈希函数的个数

k = ln2*m/n = 0.7*m/n

根据向上取整, m n k 重新计算真实的错误率

p = (1 - e^-nk/m)^k

布隆过滤器原理:
通过k个哈希函数,将样本分别通过k个哈希映射到bitarray大小为m的数组中,将其中对应的部分置1,涂黑,已经涂黑的部分就不在涂黑了,当判断一个新的样本是否存在于黑名单中时,也将样本通过k个哈希函数,然后判断,其中是否对应的部分都为1,若没有都为1,则该样本肯定不在黑名单中,否则,有可能在,错误率,通过上面的公司可以计算得出。

你可能感兴趣的:(剑指offer)