Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 多个多重集合是否有类似HyperLogLog的结构?_Algorithm_Data Structures - Fatal编程技术网

Algorithm 多个多重集合是否有类似HyperLogLog的结构?

Algorithm 多个多重集合是否有类似HyperLogLog的结构?,algorithm,data-structures,Algorithm,Data Structures,HyperLogLog估计多集的基数。是否可以将其扩展以处理多个多重集?与此类似,它将支持estimateCardinality(multiset_id),而不仅仅支持查询estimateCardinality()。我试图避免为每个multiset_id使用HyperLogLog值字典 是否有其他方法(数据结构)来实现这一点?当您拥有大量基数变化较大的多重集时,以下想法可能会有所帮助;也就是说,一些尺寸较大,一些尺寸较小。它不需要你预先估计哪些是小的,哪些是大的 只需稍作改动,您就可以构建一个。

HyperLogLog估计多集的基数。是否可以将其扩展以处理多个多重集?与此类似,它将支持estimateCardinality(multiset_id),而不仅仅支持查询estimateCardinality()。我试图避免为每个multiset_id使用HyperLogLog值字典


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

当您拥有大量基数变化较大的多重集时,以下想法可能会有所帮助;也就是说,一些尺寸较大,一些尺寸较小。它不需要你预先估计哪些是小的,哪些是大的

只需稍作改动,您就可以构建一个。原始数据结构的每个位置都有一个(逻辑)布尔值。在这里,每个位置本身就是一个经典的集合。而不是在

insert(element) 
op如果它落在这个位置,您将在

insert(element, id)
为了节省空间,你需要做一些常识性的技巧。例如,您可以确定,如果
id
出现在某一部分箱子中,则它不会存储在箱子集中,而是存储在所有箱子的单独位图中

总的来说,如果您同时拥有小集合和大集合,那么您将得到以下结果:

  • 每个大集合的位图(这与您的计数器概念词典中的每个项目的成本相同)

  • 每个小集合的某些位集合中的条目(可能比你的计数器字典小得多)

由于数据结构可以针对特定的多集从后者切换到前者,因此可能会节省与计数器字典相关的空间,这可能被认为是过早的悲观

YMMV