布隆过滤器

[TOC]

原理

布隆过滤器(Bloom Filter)的核心实现是一个超大的位数组和几个哈希函数。假设位数组的长度为m,哈希函数的个数为k。首先将位数组进行初始化,每个都设为0。对于添加进来的新元素,将新元素经过k个hash函数,产生k个hash值,将hash值对应的位都置为1。查询某元素是否存在集合中的时候,同样的方法将某元素通过哈希映射到位数组上的k个点。如果k个点的其中有一个点不为1,则可以判断该元素一定不存在集合中。反之,如果k个点都为1,则该元素可能存在集合中。此处不能判断该元素是否一定存在集合中,可能存在一定的误判率。因为k个点中的某个点有可能是因为其他元素hash得到的,这是误判率存在的原因

image-20201122154525408