【发布时间】:2016-04-12 23:07:52
【问题描述】:
基本上我需要跟踪大量的计数器。我可以按名称递增或递减每个计数器。最简单的方法是使用哈希表,将counter_name 用作key,将其对应的count 用作value 用于key。
计数器不需要 100% 准确,count 的近似值就可以了。所以我想知道是否有任何概率数据结构可以将 N 个计数器的空间复杂度降低到低于 O(N),有点类似于 HyperLogLog 如何通过仅给出近似结果来减少计数 N 个项目的内存需求。有什么想法吗?
【问题讨论】:
-
你真的有空间限制,还是节省时间更重要?按名称访问计数器是否有一些要求?是否需要始终按名称访问计数器,还是仅有时?
-
您可以通过概率递增来保持近似计数器。例如,如果您愿意损失 k 位精度以节省 k 位空间,那么对于每个递增请求,实际上只以 2^(-k) 的概率递增计数器。
标签: algorithm data-structures hashtable counter counting