Algorithm 是否可以消除hyperloglog的重复数据,以便添加和删除元素将产生相对正确的唯一计数?

Algorithm 是否可以消除hyperloglog的重复数据,以便添加和删除元素将产生相对正确的唯一计数?,algorithm,hyperloglog,Algorithm,Hyperloglog,如果我想在可以添加和删除的元素列表中获得唯一的计数,有什么方法可以做到这一点吗 比如说 add key1 delete key1 add key1 应给出唯一的计数1 但是如果我有一个2 hll的简单方法,一个用于删除,一个用于添加,它返回0 有没有一种方法可以在hll中删除重复密钥?我不知道如何使用hyper log来执行此操作,但我知道如何使用效率较低的基数估计器来执行此操作 这是一个简单的基数估计器,您可以在中找到。计算每个元素的哈希值。保留最小的m散列值。使用mth散列值的大小来估计整

如果我想在可以添加和删除的元素列表中获得唯一的计数,有什么方法可以做到这一点吗

比如说

add key1
delete key1
add key1
应给出唯一的计数1

但是如果我有一个2 hll的简单方法,一个用于删除,一个用于添加,它返回0


有没有一种方法可以在hll中删除重复密钥?

我不知道如何使用hyper log来执行此操作,但我知道如何使用效率较低的基数估计器来执行此操作

这是一个简单的基数估计器,您可以在中找到。计算每个元素的哈希值。保留最小的
m
散列值。使用
m
th散列值的大小来估计整个集合的基数。(让我们忽略散列冲突。)

现在,这里有一个用于处理某些删除的修改。保留最小的
2m
散列值。使用
m
第四个最小值的大小来估计整个集合的基数。如果要删除散列元素,只需将其从集合中删除即可。只要你的电视机的尺寸没有下降到2倍左右,这台电视机就可以正常工作了

如果你需要处理更多?添加“鬼”元素的概念。删除散列值时,请在第
2m+1
个散列值的预期位置添加“ghost”散列值。当您删除一个实散列值时,每个“ghost”元素都有被删除的随机机会,并且它与被删除的实元素的分数相匹配。如果删除了重影,则可以插入更多重影。如果插入的值足够大,以致重影变得太大,无法位于最小的
2m
,则会让它像任何其他值一样脱落


生成的算法将需要更多内存,但会处理添加和删除操作。即使大部分数据被删除,它也应该相当准确。

您可以保留一个单独的HyperLogLog来统计删除的项目,并使用减法得到最终计数。但是,这种方法有一些警告: 1.取决于您的应用程序,删除可能只需要在以前看到值时才计算,而这实际上是不可能知道的。 2.根据添加和删除元素的模式,准确性将降低