布鲁姆过滤器

概念

布鲁姆过滤器是一种用于关系查询的空间高效的数据结构。

它是由一个初始值为0的 P P P位的数组和 H H H个独立的哈希函数 h i h_i hi组成,哈希函数的范围为 ( 0 , 1 , 2 , . . . , P − 1 ) , i = 1 , 2 , . . . , H (0,1,2,...,P-1), i=1,2,...,H (0,1,2,...,P1),i=1,2,...,H。 对于数据集 S S S中的元素 x x x, 它在布鲁姆过滤器中的 H H H个位置 h i ( x ) ( i = 1 , 2 , . . . , H ) h_i(x)(i=1,2,...,H) hi(x)(i=1,2,...,H)被设置为1。

为了查询元素 y y y是否属于数据集 S S S, 检查y所在的 H H H个位置 h i ( y ) ( i = 1 , 2 , . . . , H ) h_i(y)(i=1,2,...,H) hi(y)(i=1,2,...,H)是否全为1, 若是,则y属于集合S。
如图, 由于 y y y所在的位置存在0, 所以 y y y不属于 S S S
尽管布鲁姆过滤器因为哈希函数冲突导致存在一定的误报,但由于布鲁姆过滤器的查询速度快,占用空间小的优势,仍使其成为关系查询中常用的数据结构。

如果检测结果为是,该元素不一定在集合中;但如果检测结果为否,该元素一定不在集合中。因此Bloom filter具有100%的召回率。
每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值