使用并集或交集函数时如何获取布隆过滤器集的大小?
How can I get the size of bloom filter set while using union or intersection function?
我正在尝试获取布隆过滤器集的大小,同时将布隆过滤器的并集和交集函数与 python 包(https://github.com/jaybaird/python-bloomfilter.git)
一起使用
虽然在执行函数 'union' 或 'intersection' 之后,我可以通过添加 len() 函数来获得结果,但它只打印出 '0' 输出。
from pybloom import BloomFilter
bf1 = BloomFilter(1000)
bf2 = BloomFilter(1000)
# After adding some elements to bf1 and bf2
print(len(bf1.union(bf2)))
# expected max(len(bf1), len(bf2)) but the result was 0
找到文档页面后,发现len()选项在'union'函数后被禁用,其实际结果len()为0。
相反,我想以某种方式近似设置布隆过滤器的大小。
你知道如何计算它的大小吗?
该实现仅复制 BloomFilter 的 bitarray, i.e. self.bitarray
. The elements self.count
in previous filters 不计入。
所以它不合并元素 - 但做一个位数组 or
。
更新:
在大多数情况下,您不需要估计计数。当你调用add
时,它提供了precise count个元素,你可以直接调用len(bf3)
。不幸的是新创建的 bf3
还没有被称为 add
所以 len(bf3) == 0
.
对于近似元素数的公式,
- m / k * ln(1- n / m)
你有
import math.log as ln
m = bf3.bitarray.length()
n = bf3.bitarray.count()
k = bf3.num_slices
# given m=20, n=8, approximate n elements as 5.89
我正在尝试获取布隆过滤器集的大小,同时将布隆过滤器的并集和交集函数与 python 包(https://github.com/jaybaird/python-bloomfilter.git)
一起使用虽然在执行函数 'union' 或 'intersection' 之后,我可以通过添加 len() 函数来获得结果,但它只打印出 '0' 输出。
from pybloom import BloomFilter
bf1 = BloomFilter(1000)
bf2 = BloomFilter(1000)
# After adding some elements to bf1 and bf2
print(len(bf1.union(bf2)))
# expected max(len(bf1), len(bf2)) but the result was 0
找到文档页面后,发现len()选项在'union'函数后被禁用,其实际结果len()为0。
相反,我想以某种方式近似设置布隆过滤器的大小。 你知道如何计算它的大小吗?
该实现仅复制 BloomFilter 的 bitarray, i.e. self.bitarray
. The elements self.count
in previous filters 不计入。
所以它不合并元素 - 但做一个位数组 or
。
更新:
在大多数情况下,您不需要估计计数。当你调用add
时,它提供了precise count个元素,你可以直接调用len(bf3)
。不幸的是新创建的 bf3
还没有被称为 add
所以 len(bf3) == 0
.
对于近似元素数的公式,
- m / k * ln(1- n / m)
你有
import math.log as ln
m = bf3.bitarray.length()
n = bf3.bitarray.count()
k = bf3.num_slices
# given m=20, n=8, approximate n elements as 5.89