【发布时间】:2023-03-13 23:10:01
【问题描述】:
以下是我想对一个假设的集合数据结构执行的操作,该结构将集合作为其元素:
- 在数据结构中插入一个集合,但是:(1) 如果新集合是任何现有集合的超集,则不要添加它 (2) 如果新集合是任何现有集合的子集,删除它们。
- 枚举当前集合中的所有集合
所有有问题的集合都是已知有限集合的子集,例如 {0..10^4}。
有没有办法有效地做到这一点?
【问题讨论】:
-
什么是“高效”?你有什么具体的限制吗?
-
如果结构中有一大堆集合,然后将所有这些集合的超集添加到结构中,会发生什么情况?它会删除旧的吗?
-
好吧,我正在探索一种可能的约束求解技术。大致的想法是约束求解器在搜索过程中尝试学习新的约束。这样做的问题是约束数据库变得非常大而且速度很慢,因为添加了很多约束。许多约束是多余的。如果一个约束是另一个约束的超集(粗略地说),它就是多余的。我想要一个只维护最小子集的数据结构。没有固定的限制;只是越快越好,因为约束求解器将能够处理更大的问题。
-
@templatetypedef:是的,完全正确:) 我忘了在问题中提到这一点;我现在添加它。
标签: algorithm data-structures set subset