计数布隆过滤器

基本概念

计数布隆过滤器被定义为布隆过滤器的通用数据结构,其被实现为在给定元素序列时测试给定元素的计数数量是否小于给定阈值。作为通用形式,布隆过滤器可能会出现误报匹配,但不会出现误报的可能性–换句话说,查询返回“可能高于或等于阈值”或“绝对小于阈值”。

算法说明

  • 在计数布隆过滤器下使用的大多数参数的定义与布隆过滤器相同,例如n,k。m表示为计数布隆过滤器中计数器的数量,是布隆过滤器中m位的扩展。

  • 将一个空的Counting Bloom过滤器设置为am计数器,并将其全部初始化为0。

  • 类似于Bloom过滤器,还必须定义k个各种哈希函数,每个哈希函数负责将某个集合元素映射或哈希到m个计数器数组位置之一,从而创建均匀的随机分布。同样,k是一个常数,远小于m,它与要附加的元素数量成比例。

  • Bloom过滤器的主要概括是附加一个元素。要附加一个元素,请将其插入到k个哈希函数中的每一个中,以获得k个数组位置并在所有这些位置上增加计数器1。

  • 要查询具有阈值θ的元素(验证元素的计数数量是否小于θ),请将其插入到k个哈希函数中的每一个中,以获得k个计数器位置。

  • 如果这些位置上的任何一个计数器都小于θ,则元素的计数绝对小于θ–如果它的计数较高且相等,则所有对应的计数器将大于或等于θ。

  • 如果所有值均大于或等于θ,则计数实际上大于或等于θ,或者计数器偶然大于或等于θ。

  • 即使计数小于θ,如果所有均大于或等于θ,则将这种情况定义为假阳性。像布隆过滤器一样,这也应该最小化。