1 布隆过滤器的原理
首先,布隆过滤器的作用主要是可以用来检索一个元素是否在一个集合中。
书本上提到的例子是检验某个电子邮箱是否存储在黑名单中,这个黑名单就可以使用布隆过滤器来进行实现。基本原理如下图所示:
- 首先将存储地址的每个二进制位都归零。
- F1,F2,…,F8是8个随机数生成器,这些生成器可以根据电子邮箱地址生成8个随机数f1,f2,…,f8。
- 之后再将这8个随机数f1,f2,…,f8通过8个不同的哈希函数映射到存储空间的某个位上,将这个位置置为1,就完成了存储操作。
- 当需要进行查询的时候,根据新的邮箱,重复以上步骤,检查存储空间中相应的位是否置为1,如果有一个位没有置为1,就是查询失败。
布隆过滤器的优点在于查询十分快速,省空间。
布隆过滤器的缺点在于难以实现删除操作,并且会存在误识别。
2 延伸阅读:布隆过滤器的误识别问题
布隆过滤器会有可能存在误识别的问题,就是例如将不同的电子邮件,通过哈希函数,映射在相同的位上。当进行查询的是否,这封电子邮件本身不在黑名单中,但是发现这些位上全部置为1了,就会误识别位黑名单地址。
但是通过数学可以证明这个的概率是十分小的。
最后,个人觉得本书在布隆过滤器这个章节讲的原理不是特别清晰,所以去B站上找了下相关视频。发现一个原理讲解地更加清晰地视频,更好理解布隆过滤器,这里也分享出来,需要的小伙伴可以进行点击:B站布隆过滤器视频