首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在集合中寻找子集和超集的有效方法

在集合中寻找子集和超集的有效方法
EN

Stack Overflow用户
提问于 2015-03-11 02:15:09
回答 2查看 857关注 0票数 2

是否有任何有效的算法或数据结构来查找集合集合上的超集和子集?

示例:

代码语言:javascript
复制
# collection of sets
>>> col = [{1,2,3},{2,3,4},{4,5,6,7}]

>>> subsets_of({1,2,3,4}, col)
[{1,2,3},{2,3,4}]

>>> supersets_of({4}, col)
[{2,3,4},{4,5,6,7}]
EN

回答 2

Stack Overflow用户

发布于 2015-03-11 02:29:28

在一般情况下,没有,除了暴力搜索方法。

但是,根据您拥有的数据类型,可以使用各种技术进行线性时间搜索。例如,如果元素值始终小于32 (或64),那么您可以创建一个整数,为存在的值设置位,并对它们进行OR运算,以确定该集合是否为子集。如果值小于1亿左右,您可以创建一个巨大的布尔数组,其中如果集合包含值,则每个数组元素为1,如果不包含值,则为0。那么子集查找是线性时间。对于线性时间内的超集问题,类似的方法也是可能的。

票数 2
EN

Stack Overflow用户

发布于 2015-03-11 02:19:57

您可以为子集创建哈希方法,然后将其存储在HashMap中。

那么你甚至可以在固定的时间内找到它(如果你有足够的内存)。

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

https://stackoverflow.com/questions/28971129

复制
相关文章

相似问题

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