目录
一、概述
1、最小值估值法
2、哈希法
3、k-前缀法
二、Linear Counting
1、算法思路
2、算法证明
三、LogLog Counting
1、算法思路
2、算法证明
3、误差消减
四、HyperLogLog Counting
1、算法思路
2、并行化
五、参考资料
一、概述
基数估计算法是为了解决这样一个问题:设想你有一个巨大的含有重复项的数据集合,这个数据大到无法完全存储到内存中,但是你想知道这个数据集合中有多少不同的元素,这个不同元素的个数就叫基数(Cardinality)。
举个简单的例子:统计一个游戏所有服务器上的注册用户总数。传统的方法是给每个用户分配一个唯一标识,然后用一个数据结构(哈希表、平衡二叉树、红黑树 等等)来维护这个唯一标识的插入,最后统计这个数据结构的元素个数。这种方法是最常用的,但是在大数据下,内存占用会随着玩家的增多呈线性增长。所以这种方法是不可行的。