美文网首页
位运算---布隆过滤器

位运算---布隆过滤器

作者: Gintok | 来源:发表于2018-03-26 08:36 被阅读52次

    题目描述:

    不安全网页的黑名单包含100亿个黑名单网页,每个网页的URL最多占用64字节。现在想要实
    现一种网页过滤系统,可以根据网页的URL判断该网页是否在黑名单上,请设计该系统,要求该系
    统允许有万分之一以下的判断失误率,并且使用的额外空间不超过30G。
    

    布隆过滤器

    简介

    布隆过滤器可以精确的代表一个集合,可精确判断某一元素是否在此集合中。
    精确程度由用户的具体设计决定,不能做到100%准确。
    -布隆过滤器的优势在于,利用很少的空间,可以做到精确率较高

    构建布隆过滤器

    首先定义一个bitarray数组,下标从0到m-1,每个位置为一个bit,默认为0.然后利用k个哈希函数(输出与>=m,函数各自独立)。将某一URL依次分别输入到k个哈希函数中,得到k个结果,全部对m取余。然后将bitarray相应的位置上的值设置为1.这样便得到了此URL在数组中的记录。依次将100亿个URL全部进行如上操作,最终得到了黑名单布隆过滤器。

    查询集合中是否含有指定元素

    拿到一个新的URL,将其作为输入依次输入到k个哈希函数中,得到的结果对m取余,最终得到k个值,然后去bitarray数组中查看这k个值的位置是否为1,如果有一个不为1,则说明集合中不存在该URL,如果全部为1,则认为集合中含有该URL。

    参数选择

    bitarray大小为m,样本数量为n,失误率为p
    

    m相对于n越大,验证结果越准确,单个样本大小不影响过滤器大小,只影响哈希函数的实现细节。


    计算m公式

    计算哈希函数的数量k:


    计算k公式

    求得m之后,计算p的公式如下:


    计算p公式

    相关文章

      网友评论

          本文标题:位运算---布隆过滤器

          本文链接:https://www.haomeiwen.com/subject/vkakcftx.html