布隆过滤器17 Mar 2025 | 5 分钟阅读 布隆过滤器是一种节省空间的概率数据结构,用于测试一个元素是否是集合的成员。它由 Burton Howard Bloom 于 1970 年提出。布隆过滤器相对于其他数据结构的主要优势在于其令人印象深刻的空间和时间效率。 理解布隆过滤器在底层,布隆过滤器是一个位数组,最初所有位都设置为零。此位数组的大小取决于预期存储的元素数量和所需的误报率。 布隆过滤器使用多个哈希函数将每个元素映射到一个或多个数组索引。当一个元素添加到过滤器中时,这些哈希索引处的位被设置为 1。当查询一个元素时,过滤器检查这些哈希索引处的位。如果任何位为 0,则该元素不在集合中。如果所有位都为 1,则该元素可能在集合中。 ![]() 布隆过滤器的主要特性
布隆过滤器操作布隆过滤器支持两个主要操作:
布隆过滤器工作原理取一个二进制数组,大小为 'm' 位,初始全部为 0,用于最多 n 个不同的元素,在通过哈希函数后,将所有 n 个不同元素的输出所选位置的 'k' 位设置为 1。现在取你想要识别的元素,判断它是否已存在。通过相同的哈希函数,如果所有位都已设置,则该元素很可能已存在,并具有 p 的假阳性率;如果任何位未设置,则该元素不存在。 布隆过滤器示例考虑一个位数组大小为 10 且具有三个哈希函数的布隆过滤器。让我们将字符串 "hello" 添加到过滤器中。假设哈希函数将 "hello" 映射到索引 1、3 和 7。插入操作后的位数组将如下所示: 0 1 0 1 0 0 0 1 0 0 现在,如果我们对 "hello" 执行查找,过滤器会检查索引 1、3 和 7 处的位。由于所有这些位都是 1,过滤器报告 "hello" 可能在集合中。 通过代码理解输出 ![]() 布隆过滤器的应用布隆过滤器用于各种对空间效率至关重要的应用。它们用于数据库、缓存、路由器和其他系统,以快速确定给定项目是否在集合中。例如,网页浏览器可能会使用布隆过滤器来检查一个 URL 是否在一组恶意 URL 中。 布隆过滤器的局限性虽然布隆过滤器具有很高的空间和时间效率,但它们确实存在一些局限性:
尽管存在这些局限性,但在正确的使用场景下,布隆过滤器是一个强大的工具。它们的空间和时间效率使其成为需要快速高效地测试集合成员资格的大规模系统的绝佳选择。 优化布隆过滤器虽然布隆过滤器已经很节省空间,但仍有一些方法可以进一步优化它们:
下一主题计算可被 k 整除的数组对 |
简介:排序算法对于数据操作和计算机科学至关重要。尽管有许多不同的排序算法可供选择,但每种算法的有效性都取决于需要排序的数据的属性。排序近乎排序的数组,其中每个元素最多在 k...
11 分钟阅读
简介:给定一个非负整数数组,其中每个元素代表一个数字。您的任务是找到数组中的一对数字,使其和最大,并且这两个数字共享相同的最大数字。编写一个函数 maxSumWithEqualMaxDigits(nums),该函数接受……
阅读9分钟
让我们通过一些例子来理解这个问题。如果数组 arr1=[1,2,3,4,5] 和 arr2 = [5,4,3,2,1] 是两个数组,我们需要检查这两个数组是否相等。当且仅当两个数组具有相同的元素且这些元素具有...时,这两个数组才被认为是相等的。
阅读 6 分钟
以哥伦比亚数学家 Bernardo Recamán Santos 的名字命名的,是一个迷人的整数序列,吸引了数学家和计算机科学家。它由一个简单但有趣的规则定义,使其成为一个极好的 Java 探索主题。理解 Recamán 序列始于第一个...
阅读 6 分钟
简介:图论是数学的一个分支,它为分析和理解各种实体之间的关系提供了一个强大的框架。在图论的众多概念中,这些路径是理解连通性和遍历可能性的基本且引人入胜的主题,它们在...中至关重要。
阅读 8 分钟
引言 在计算机科学中,二叉搜索树 (BST) 是基本结构,常用于高效的排序和搜索应用。其独特的质量使其适用于多种用途。BST 的一个重要特性是我们可以按特定顺序访问节点...
阅读 4 分钟
在计算机科学中,二叉搜索树(BST)是有效数据存储和检索的关键数据结构。将两个 BST 合并为一个 BST 是一个有趣的问题,尤其是在没有太多额外空间的情况下。本文探讨了几种合并两个 BST 的方法,其中...
11 分钟阅读
提供了两个数组,arr1[0..m-1] 和 arr2[0..n-1]。确定 arr2[] 是否是 arr1[] 的子集。两个数组没有任何顺序。可以假设两个数组中的每个元素都是唯一的。示例 1 arr1[] = {11, 1, 13, 21, 3, 7},……
阅读 10 分钟
特定二叉树中某个键的层级通常指的是二叉树根节点到包含所需键的节点的距离。有多少步才能……这非常重要且值得注意。
7 分钟阅读
问题陈述 如果一个正整数满足两个标准,则认为它是“美观”的:数字中的偶数位数等于奇数位数。该数字可被给定的整数 k 整除。我们的任务是计算并返回美观数字的总数...
阅读 10 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India