合并uniq计数器,概率数据结构

Merge uniq counters, probabilistic data structures

有两个集合 1 2 33 4,具有 32 个独特的项目。

现在让我们计算合并集中的唯一项目。如果我们只是将计数器 3 + 2 = 5 加起来,那将是错误的(应该是 uniq(1 2 3 3 4) = 4)。

有没有办法只使用计数器?对于每个计数器,可以使用一些额外的 constant memory 数据结构来表示原始集合,小错误也可以,假设 95% 的准确度是好的

我知道有概率唯一计数器使用很少的内存 (HyperLogLog)。但是有没有办法合并两个这样的概率计数器?

是的,HyperLogLog 实际上允许非常自然地合并,并且大多数实现都包括合并。简而言之,要将两个 HyperLogLog 结构 A 和 B 合并为一个新的 C,取每个桶对的最大值 C[i] = max(A[i],B[i]).