一线大厂面试题-布隆过滤器到底是什么东西? 它有什么用?

发布时间:2024年01月07日

在解释布隆过滤器之前,我先问大家一个问题,如果我想判断一个元素是否存在某个集 合里面怎么做?

一般的解决方案是先把所有元素保存起来 ,然后通过循环比较来确定。

但是如果我们有几千万甚至上亿的数据的时候 {如图} ?,虽然可以通过不同的数据结构 来优化数据检索的时间复杂度 ,但是整体的效率依然很慢,而且会占用非常多的内存空间 ,这个问题该怎么解决呢?

?这个时候 ,位图就派上了用场 ?{如图}

BitMap 的基本原理就是用一个 bit 位来存储当前数据是否存在的状态值,也就是把一 个数据通过 hash 运算取模后落在 bit 位组成的数组中 ,通过 1 对该位置进行标记。 ? ?这种方式适用于大规模数据,但数据状态又不是很多的情况,通常是用来判断某个数据 存不存在的。

?布隆过滤器就是在位图的基础上做的一个优化设计 ?{如图} ?。

?它的原理是,当一个元素被加入集合时,通过 K 个散列函数将这个元素映射成一个位数 组中的 K 个点 ,把它们置为 1。

检索的时候,使用同样的方式去映射,只要看到每个映射的位置的值是不是 1,就可以大概知道该元素是否存在集合中了。

如果这些点有任何一个 0 ,则被检查的元素一定不在;如果都是 1 ,则被检查的元素很 可能存在。
?

蜗牛学苑-重构IT职业教育新生态

文章来源:https://blog.csdn.net/gnwu1111/article/details/135324271
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。