布隆过滤器
布隆过滤器
布隆过滤器(Bloom Filter)是由布隆( Burton Howard Bloom)在1970年提出的算法:是由一个很长的二进制向量和一系列随机映射函数组成,布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率(假正例False positives,即Bloom Filter报告某一元素存在于某集合中,但是实际上该元素并不在集合中)和删除困难,但是没有识别错误的情形(即假反例False negatives,如果某个元素确实没有在该集合中,那么Bloom Filter 是不会报告该元素存在于集合中的,所以不会漏报)。
算法流程
如果我们要映射一个值到布隆过滤器中,我们可以使用多个不同的哈希函数生成多个哈希值,并对每个生成的哈希值指向的 bit 位置 1:
当查询某一个值是否存在集合中的是否,则同样经过相同次数的哈希运算,若映射到的每个bit位都为1,那么说明该元素有可能属于该集合,否则则说明该元素一定不属于该集合。
误差率表
令表示过滤器的bit位数,为总的输入数据量,为哈希函数的个数,那么判断一条不存在的数据却返回存在结果的误差率为:
下面是m/n和k的值对p的影响统计表:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)