布隆过滤器 Bloom Filter

布隆过滤器 Bloom Filter

简明: 布隆过滤器是一种数据结构, 一种特殊的集合, 提供插入和查询操作

1. 用途:

  1. 查询一个键是否在集合中,
  2. 不需要知道键的值,
  3. 不需要知道准确的答案(他说在有可能实际不在)
  4. 节约空间

2. 实现:

一个bool数组 + 多个Hash函数

三个操作

1. 初始化

bool数组全为0

2. 插入

一个键, 对每一个Hash都计算一个Hash值, 在bitmap对应位置改成1

3. 查询

一个键, 对每个Hash都计算Hash值, 如果bitmap对应的位置都是1那么就是存在

3. 性质

1. 可能存在假正例(False Positive)

就是查询一个元素在不在集合中时, 布隆说存在这个元素但实际情况是不存在

这种情况的概率为
P = ( 1 − e − H N M ) H H : 哈希函数个数 M : B i t M a p 的长度 N : 集合能容纳的个数 P = (1 - e^{-\frac{HN}{M}})^H \\ H: 哈希函数个数\\ M: BitMap的长度\\ N: 集合能容纳的个数\\ P=(1eMHN)HH:哈希函数个数M:BitMap的长度N:集合能容纳的个数

2. 不存在假负例(False Negtive)

就是不可能有: 查询一个元素在不在集合中时, 布隆说不存在但实际情况是存在, 就是元素真的存在于集合中, 布隆一定不会犯错说不存在.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值