微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有一个集合的压缩表示,以便可以确定 2 个或多个表示的交集是否具有非零计数?

如何解决是否有一个集合的压缩表示,以便可以确定 2 个或多个表示的交集是否具有非零计数?

假设我有 2 组非常大的字符串。我想对这些集合进行非常压缩的表示,以便比较两者可以确定两个集合中是否有任何集合成员。我希望表示是恒定空间,或者可能记录 N 与集合的大小。

我不在乎成员是什么。甚至计数。只是判断是否存在交叉点。

我的第一个想法是拥有一个位数组并根据设置的内容切换位,例如布隆过滤器。但是如何检查两个位数组之间的交集?我认为这行不通,因为数组只是随机位。

也许是基数树之类的东西?

我怀疑已经存在用于此的算法/数据结构。集合成员有紧凑的概率数据结构,我不认为这太过分了。

解决方法

一般来说,没有小于 O(n) 空间并且可以进行集合交集查询的结构。原因很容易理解:如果有的话,您可以通过检查与集合的交集来恢复集合的每个条目,每个条目都包含一个可能的元素。根据鸽巢原理,这意味着表示必须消耗预期的 O(n) 空间。

,

Theta 数据草图看起来很有趣。它允许对集合的散列表示进行交集和并集等集合操作。

https://datasketches.apache.org/docs/Theta/ThetaSketchFramework.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。