布隆过滤器

布隆过滤器

岁酱吖の 提交于 2019-11-27 03:55:43
布隆过滤器 Bloom Filter 过滤器的作用:判断元素在还是不在。(如图查询 w 在不在集合中) 布隆过滤器:⼀个很长的二进制向量和一系列随机映射函数。 布隆过滤器可以用于检索一个元素是否在⼀个集合中(如果检测出元素不在集合中,那一定不在;如果检测出元素在集合中,有一定可能判断错误)。 它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。布隆过滤器后面一定要跟一个完备的搜索系统。 判断 C 不存在,一定正确;判断 B 存在,判断错了 案例 1. ⽐特币网络 2. 分布式系统(Map-Reduce) 来源: https://www.cnblogs.com/chaojunwang-ml/p/11343113.html

布隆过滤器

百般思念 提交于 2019-11-26 19:12:23
布隆过滤器 前言 布隆过滤器原理 布隆过滤器优缺点 优点 缺点 使用场景 前言   Hash(散列)函数在计算机领域,尤其是数据快速查找领域,加密领域用的极广。其作用是将一个大的数据集映射到一个小的数据集上面(这些小的数据集叫做哈希值,或者散列值)。   一个应用是Hash Table(散列表,也叫哈希表),是根据哈希值 (Key value) 而直接进行访问的数据结构。也就是说,它通过把哈希值映射到表中一个位置来访问记录,以加快查找的速度。 哈希函数有以下两个特点: 如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。 散列函数的输入和输出不是唯一对应关系的,如果两个散列值相同,两个输入值很可能是相同的。 但也可能不同,这种情况称为 “散列碰撞”(或者 “散列冲突”)。 缺点:引用吴军博士的《数学之美》中所言,哈希表的空间效率还是不够高。如果用哈希表存储一亿个垃圾邮件地址,每个email 地址 对应 8 bytes, 而哈希表的存储效率一般只有50%,因此一个email地址需要占用 16 bytes. 因此一亿个 email 地址占用1.6GB,如果存储几十亿个 email address 则需要上百GB的内存。除非是超级计算机,一般的服务器是无法存储的。 所以要引入布隆过滤器。 布隆过滤器原理 如果想判断一个元素是不是在一个集合里