布隆过滤器,幼儿园话介绍

本贴最后更新于 1850 天前,其中的信息可能已经时过境迁

功能

  • 迅速判断某个元素是否在一个集合当中
  • 可能存在误判,即认为一个元素存在集合当中但是实际上并没有
  • 如果认定某一个元素不存在集合中,那就一定不存在

使用场景

  • 垃圾邮件识别
  • 检测单词是否拼写正确
  • 网络爬虫中一个网址是否已经被读取过

实现原理

  • 首先需要一个 位集,多个 hash函数

  • 把集合中的所有值都去执行全部的 hash 函数,然后把结果作为位集的下标,将位集在该处的值设置为 1

  • 判断某个元素是否在集合中

    • 也用该元素去执行所有的 hash 函数结果值作为位集下标
    • 如果在位集中取出来全为 1 则说明该元素非常有可能在集合中

    图中的 x,y,z 即是当前集合,他们分别被映射了 3 个位置
    w 是待查找元素,通过映射后也得到三个位置,但是发现其中一个位置的值为 0,所以能确定 w 一定不存在集合当中

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 614756773

    布隆过滤器的优点是:既节省空间,又节省时间。
    缺点是:存在误判,但是概率很低。

    误判的概率取决于 空间大小hash函数

    • 空间大小误判概率 成负相关
    • hash函数 的质量和 误判概率 成负相关
  • namelysweet 1 评论

    写的不错!!!

    谢谢,嘿嘿
    614756773