分层布隆过滤器变体及问题解析
1. 分层布隆过滤器变体介绍
分层布隆过滤器有多种变体,每种变体都有其独特的设计和应用场景,以下将详细介绍几种常见的变体。
1.1 开花树(Blooming Tree)
开花树是一种分层数据结构,旨在降低空间复杂度和误报率(FPP)。其数据结构分布在不同的内存层,设计类似于二叉树。
- 结构特点 :
- 数组大小基于输入元素,为 $nk/ln2$,其中 $n$ 是输入元素的数量,$k$ 是哈希函数的数量。
- 若层数为 $L$,第一层($L0$)是布隆过滤器,最后一层($LL$)由大小为 $c$ 的计数器组成,其余 $L - 2$ 层由大小为 $2b$ 位的块组成。
- 哈希函数产生大小为 $log_2 m + L×b$ 位的输出字符串,该字符串被划分为地址以引用布隆过滤器和块。
- 操作流程 :
- 插入操作 :
1. 对元素进行哈希以获得输出字符串。
2. 若元素不在 $L0$ 的布隆过滤器中,算法设置 $k$ 个位置,并为下一层获取 popcount 值($p1$)。
3. 在 $L1$ 中,在 $p1$ 位置将位右移 2 位,并计算下一层的 $p2$。
4. 若元素在 $L0$ 中,算法移动到下一层并设置 $p1$ 位置。
5. 重复上述过程,直到最后一层,从哈希输出字符串中获取最后一层计数器的地址并递增。插入操作的时间复杂度为 $k · (hash + L · (popcount + shift + bitset))
超级会员免费看
订阅专栏 解锁全文
29

被折叠的 条评论
为什么被折叠?



