博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
流过滤-Bloom Filter布隆过滤器
阅读量:7065 次
发布时间:2019-06-28

本文共 518 字,大约阅读时间需要 1 分钟。

hot3.png

假定集合S中包含10亿个邮件地址,我们可以确信这些地址不是垃圾邮件地址。

数据流元素为二元组(email address, email content),我们处理流中的每一个元素,若元素中的address字段在集合S中出现,则Pass,否则,则Not Pass。

问题:

1. 直接将S保存在内存中占用空间过大;

2. 匹配过程过于耗时。

布隆过滤,内存会被当做位数组来使用。假定有1GB的可用内存,则可以容纳80亿个位。

设计一个哈希函数h,它将邮件地址映射到80亿个桶中,并将对应的位设置为1,而数组中的其他位仍为0。由于S中有10亿个元素,因此所有位中有近1/8的位为1。

当有一个流元素到达时,对邮件地址email address字段进行哈希操作,如果该邮件地址哈希之后对应的位为1,那么就让邮件通过,但若对应的位为0,则可以确信该邮件地址不属于S,从而丢弃该流元素。

效用分析:

1. 所有正例都能通过;

2. 小部分反例也能通过,假阳率约为1/8。

3. 能剔除7/8的垃圾邮件。

4. 如何降低假阳率?多重哈希,h1,h2….

转载于:https://my.oschina.net/xiangchen/blog/99463

你可能感兴趣的文章
strcpy、strcat、strstr的实现
查看>>
MySQL Timeout解析
查看>>
SpringMVC04controller中定义多个方法
查看>>
Ext.Net GridPanel属性配置
查看>>
hdfoo站点开发笔记-2
查看>>
tp剩余未验证内容-2
查看>>
Java反射在JVM的实现
查看>>
Java 存储时间戳的几种方式
查看>>
分享一下自己用c++写的小地图
查看>>
马尔可夫模型
查看>>
bzoj 1697: [Usaco2007 Feb]Cow Sorting牛排序
查看>>
js面向对象编程
查看>>
Tensorflow serving的编译
查看>>
JAVA API----Math类和Random类
查看>>
155. Min Stack
查看>>
Android深度探索(卷1)HAL与驱动开发学习笔记(5)
查看>>
JavaScript高级
查看>>
静态成员函数访问构造函数
查看>>
scla-基础-函数-元组(0)
查看>>
How to Convert a Single-Instance ASM to Cluster ASM [ID 452758.1]
查看>>