我正在寻找一种在Matlab或Mathematica中确定一个集合是否是另一个集合的子集的高效方法。
例子: 集合A = [1 2 3 4] 集合B = [4 3] 集合C = [3 4 1] 集合D = [4 3 2 1]
输出应该是:集合A
因为集合B和C属于集合A,因为A包含它们所有的元素,所以它们可以被删除(集合中元素的顺序并不重要)。由于集合D和集合A具有相同的元素,并且集合A在集合D之前,因此我想简单地保留集合A并删除集合D。
所以有两个基本规则: 1.如果一个集合是另一个集合的子集,则删除该集合 2.如果其元素与前面的集合相同,则删除该集合
我的Matlab代码在执行此操作时效率不高 - 它主要由嵌套循环组成。
欢迎提出建议!
附加解释:问题在于有大量的集合时,会进行非常多的成对比较。
例子: 集合A = [1 2 3 4] 集合B = [4 3] 集合C = [3 4 1] 集合D = [4 3 2 1]
输出应该是:集合A
因为集合B和C属于集合A,因为A包含它们所有的元素,所以它们可以被删除(集合中元素的顺序并不重要)。由于集合D和集合A具有相同的元素,并且集合A在集合D之前,因此我想简单地保留集合A并删除集合D。
所以有两个基本规则: 1.如果一个集合是另一个集合的子集,则删除该集合 2.如果其元素与前面的集合相同,则删除该集合
我的Matlab代码在执行此操作时效率不高 - 它主要由嵌套循环组成。
欢迎提出建议!
附加解释:问题在于有大量的集合时,会进行非常多的成对比较。