Bloom Filter(布隆过滤器)简介及Python实现

Bloom Filter(布隆过滤器)简介及Python实现

  1. 布隆过滤器简介

布隆过滤器(Bloom Filter)是一种空间效率很高的随机数据结构,可用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好得多,缺点是有一定的误识别率和删除困难。

布隆过滤器由一个很长的二进制向量和一系列随机映射函数组成。常见的应用场景包括:防止缓存击穿、垃圾邮件过滤、爬虫的去重等。

  1. 布隆过滤器原理

布隆过滤器可以看作一个长度为m的二进制向量,向量中的每个元素初始化值均为0,同时需要k个不同的哈希函数。当有新元素加入时,将其经过k次哈希函数映射得到k个哈希值(这里假设哈希函数的输出值域为{0,1,2,…,m-1})。然后将布隆过滤器向量中对应下标位置的值改为1。查询时,对待查询元素做同样的哈希处理,判断得到的k个哈希值所对应的向量下标位置的值是否均为1,若均为1,则说明该元素可能在集合中,若有一个值为0,则说明该元素一定不在集合中。

  1. 布隆过滤器Python实现

下面是一个简单的Python实现,使用了pyhash库中MurmurHash算法,可通过pip install pyhash命令进行安装。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值