首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于多个集合是否有类似于HyperLogLog的结构?

对于多个集合是否有类似于HyperLogLog的结构?
EN

Stack Overflow用户
提问于 2015-06-20 06:50:53
回答 1查看 249关注 0票数 5

HyperLogLog估计多集的基数。是否可以将其扩展到处理多个集合?例如,它不只是支持查询estimateCardinality(),而是支持estimateCardinality(multiset_id)。我试图避免为每个HyperLogLog值创建一个multiset_id值字典。

还有其他方法(数据结构)来实现这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-20 07:27:44

如果您有大量的基数变化很大的多线程,那么下面的想法可能会有所帮助;也就是说,有些具有较大的大小,而有些则具有较小的大小。它不要求你预先估计哪些是小的,哪些是大的。

您可以构建一个线性概率计数器,只需做一个小小的更改。原始数据结构在每个位置都有一个(逻辑)布尔值。在这里,每个职位本身就是一个分类集。而不是在

代码语言:javascript
复制
insert(element) 

如果它落在此位置,则将id插入到

代码语言:javascript
复制
insert(element, id)

有一些常识的技巧,你奥德做的,以节省空间。例如,如果id出现在垃圾箱的某一小部分,那么它不是存储在bin集合中,而是存储在所有垃圾箱上的一个单独的位图中。

总之,如果您同时拥有小集和大集,您将得到以下结果:

  • 每个大集合的位图(这是您的计数器词典的每个项目的相同成本)。
  • 某些位集合中每一个小集合中的条目(可能比您的计数器字典概念小得多)

由于数据结构可以为特定的多集从后者切换到前者,它可能会相对于计数器词典的概念节省空间,这可能被认为是过早的悲观。

YMMV

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30951169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档