【问题标题】:Cardinality approximation for logical set operations – (The "HyperLogLog" for AND/OR/XOR)逻辑集操作的基数近似——(AND/OR/XOR 的“HyperLogLog”)
【发布时间】:2016-05-12 22:29:50
【问题描述】:

我们目前正面临一个有趣的问题。我们希望估计集合的基数,而不需要存储每个项目(通常位图/位集是一种不错的方法)。一个非常好的算法是所谓的 HyperLogLog 随机算法(在此处查看更多信息 http://antirez.com/news/75)。

这里的问题是,你只能将集合合并为 UNIONs,所以基本上它是一个 OR 组合。

我们实际上不仅希望将集合与 OR 结合,还希望与 AND 结合。我们甚至想结合这些操作。

示例: set1 AND (set2 OR set3) OR (set4 AND set5)

每个集合的基数可能在数百万范围内。每个值的大小为 128 位。

每个集合都可以用任何方式表示,例如“HLL、布隆过滤器、普通列表或这些的组合”。该算法必须在尽可能短的时间内使用可行的空间量执行。

有什么想法吗?

【问题讨论】:

  • 集合是否只需要由那些结构来表示还是可以使用额外的结构?我的意思是,如果您将 HLL 与 MinHashes 混合使用,您可以很容易地估计集合交点的基数。

标签: algorithm data-structures estimation hyperloglog


【解决方案1】:

这个确切的问题是https://pdfs.semanticscholar.org/5da8/bf81712187712aed159aed62e38fb012872e.pdf 的主题。他们的建议是使用布隆过滤器。

联合的布隆过滤器是布隆过滤器的按位或。交集的布隆过滤器是布隆过滤器的按位与。这样你就可以轻松生成你想要的操作的布隆过滤器了。

他们的定理 1 允许您根据布隆过滤器中设置的位数来估计集合的大小。

【讨论】:

  • 不错!我将对此进行研究......我期待着看看这个解决方案是否真的允许操作(组合)AND和OR。谢谢!
猜你喜欢
  • 2017-08-05
  • 2018-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多