带你读《图解算法小抄》十一、布隆过滤器(1)

简介: 带你读《图解算法小抄》十一、布隆过滤器(1)

十一、布隆过滤器

访问 www.coding-time.cn 阅读原文动画效果,体验更佳。

 

布隆过滤器是一种空间有效的概率数据结构,设计用来测试一个元素是否在一个集合中。它的设计目标是极快的速度和最小的内存使用,但可能会产生误报。可能会有误报,但不会有漏报 —— 换句话说,查询返回的是"可能在集合中"或"绝对不在集合中"。

 

布隆提出这种技术是为了应对那些使用"常规"无误差哈希技术处理会需要不切实际大量内存的源数据的应用。

1. 算法描述

一个空的布隆过滤器是一个包含m位的位数组,所有位都设置为0。还必须定义k个不同的哈希函数,每一个都将某个集合元素映射或哈希到m个数组位置中的一个,生成均匀随机分布。通常,k是一个常数,远小于mm与要添加的元素数量成比例;k的确切选择和m的比例常数由过滤器预期的误报率确定。

 

下面是一个表示集合{x, y, z}的布隆过滤器的例子。彩色箭头显示了每个集合元素映射到的位数组中的位置。元素w不在集合{x, y, z}中,因为它哈希到一个包含0的位数组位置。对于此图,m = 18,k = 3

 

image.png

 

2. 操作

布隆过滤器可以执行两个主要操作:插入 和 搜索。搜索可能会导致误报。删除操作是不可能的。

 

换句话说,过滤器可以接收项目。当我们去检查一个项目是否之前已经插入,它可以告诉我们"否"或者"可能"。

 

插入和搜索都是O(1)操作。

3. 构造过滤器

布隆过滤器的创建是通过分配一定的大小。在我们的例子中,我们使用100作为默认长度。所有的位置都初始化为false

1插入

在插入过程中,会使用多个哈希函数,我们的例子中使用了3个哈希函数,对输入进行哈希。这些哈希函数输出索引。在每个接收到的索引处,我们简单地将布隆过滤器中的值更改为true

2搜索

在搜索过程中,调用相同的哈希函数并用于哈希输入。然后我们检查在布隆过滤器中接收到的索引是否_全部_为true。如果它们_全部_为true,我们知道布隆过滤器可能已经插入过这个值。

 

然而,这并不确定,因为有可能其他之前插入的值将这些位置的值改变为true。这些值并不一定是由当前搜索的项目设为true的。除非只有一个项目被插入,否则无法绝对确定。

 

在检查由我们的哈希函数返回的布隆过滤器索引时,如果其中任何一个值为false,我们可以确定地知道该项目之前未被插入。

带你读《图解算法小抄》十一、布隆过滤器(2)https://developer.aliyun.com/article/1348193?groupCode=tech_library

相关文章
|
3月前
|
存储 监控 JavaScript
基于布隆过滤器的 Node.js 算法在局域网电脑桌面监控设备快速校验中的应用研究
本文探讨了布隆过滤器在局域网电脑桌面监控中的应用,分析其高效空间利用率、快速查询性能及动态扩容优势,并设计了基于MAC地址的校验模型,提供Node.js实现代码,适用于设备准入控制与重复数据过滤场景。
181 0
|
6月前
|
存储 算法 安全
如何控制上网行为——基于 C# 实现布隆过滤器算法的上网行为管控策略研究与实践解析
在数字化办公生态系统中,企业对员工网络行为的精细化管理已成为保障网络安全、提升组织效能的核心命题。如何在有效防范恶意网站访问、数据泄露风险的同时,避免过度管控对正常业务运作的负面影响,构成了企业网络安全领域的重要研究方向。在此背景下,数据结构与算法作为底层技术支撑,其重要性愈发凸显。本文将以布隆过滤器算法为研究对象,基于 C# 编程语言开展理论分析与工程实践,系统探讨该算法在企业上网行为管理中的应用范式。
186 8
|
1月前
|
存储 监控 算法
基于 PHP 布隆过滤器的局域网监控管理工具异常行为检测算法研究
布隆过滤器以其高效的空间利用率和毫秒级查询性能,为局域网监控管理工具提供轻量化异常设备检测方案。相比传统数据库,显著降低延迟与资源消耗,适配边缘设备部署需求,提升网络安全实时防护能力。(238字)
140 0
|
11月前
|
存储 监控 算法
员工上网行为监控中的Go语言算法:布隆过滤器的应用
在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
207 8
员工上网行为监控中的Go语言算法:布隆过滤器的应用
|
4月前
|
存储 监控 算法
企业上网监控场景下布隆过滤器的 Java 算法构建及其性能优化研究
布隆过滤器是一种高效的数据结构,广泛应用于企业上网监控系统中,用于快速判断员工访问的网址是否为违规站点。相比传统哈希表,它具有更低的内存占用和更快的查询速度,支持实时拦截、动态更新和资源压缩,有效提升系统性能并降低成本。
172 0
|
5月前
|
机器学习/深度学习 存储 算法
基于 C++ 布隆过滤器算法的局域网上网行为控制:URL 访问过滤的高效实现研究
本文探讨了一种基于布隆过滤器的局域网上网行为控制方法,旨在解决传统黑白名单机制在处理海量URL数据时存储与查询效率低的问题。通过C++实现URL访问过滤功能,实验表明该方法可将内存占用降至传统方案的八分之一,查询速度提升约40%,假阳性率可控。研究为优化企业网络管理提供了新思路,并提出结合机器学习、改进哈希函数及分布式协同等未来优化方向。
158 0
|
7月前
|
存储 监控 算法
公司员工电脑监控软件剖析:PHP 布隆过滤器算法的应用与效能探究
在数字化办公的浪潮下,公司员工电脑监控软件成为企业管理的重要工具,它能够帮助企业了解员工的工作状态、保障数据安全以及提升工作效率。然而,随着监控数据量的不断增长,如何高效地处理和查询这些数据成为了关键问题。布隆过滤器(Bloom Filter)作为一种高效的概率型数据结构,在公司员工电脑监控软件中展现出独特的优势,本文将深入探讨 PHP 语言实现的布隆过滤器算法在该软件中的应用。
135 1
|
8月前
|
存储 算法 安全
企业员工数据泄露防范策略:基于 C++ 语言的布隆过滤器算法剖析[如何防止员工泄密]
企业运营过程中,防范员工泄密是信息安全领域的核心议题。员工泄密可能致使企业核心数据、商业机密等关键资产的流失,进而给企业造成严重损失。为应对这一挑战,借助恰当的数据结构与算法成为强化信息防护的有效路径。本文专注于 C++ 语言中的布隆过滤器算法,深入探究其在防范员工泄密场景中的应用。
187 8
|
9月前
|
算法 安全 网络安全
基于 Python 的布隆过滤器算法在内网行为管理中的应用探究
在复杂多变的网络环境中,内网行为管理至关重要。本文介绍布隆过滤器(Bloom Filter),一种高效的空间节省型概率数据结构,用于判断元素是否存在于集合中。通过多个哈希函数映射到位数组,实现快速访问控制。Python代码示例展示了如何构建和使用布隆过滤器,有效提升企业内网安全性和资源管理效率。
155 9

热门文章

最新文章