List 在集合列表中查找元素的唯一子集

List 在集合列表中查找元素的唯一子集,list,collections,set,set-theory,List,Collections,Set,Set Theory,我试图在集合列表中找到集合的唯一确定子集,即集合a的子集e,这样a是唯一包含e的集合,我不知道数学上如何调用它。 例如,对于以下集合列表: set A: {2,3,5} set B: {2,3} set C: {2,3,7} set D: {3,7} set E: {2,11,13} set F: {2} 唯一子集是: set A: {5} set B: {} set C: {2,7} set D: {} set E: {{11},{13},{11,13}} set F: {} 结果显示了一

我试图在集合列表中找到集合的唯一确定子集,即集合a的子集e,这样a是唯一包含e的集合,我不知道数学上如何调用它。 例如,对于以下集合列表:

set A: {2,3,5}
set B: {2,3}
set C: {2,3,7}
set D: {3,7}
set E: {2,11,13}
set F: {2}
唯一子集是:

set A: {5}
set B: {}
set C: {2,7}
set D: {}
set E: {{11},{13},{11,13}}
set F: {}

结果显示了一些关系,比如给定集合包含2和7,它必须是集合C,或者如果只有元素3,我们就不能确定一个唯一的集合。请注意,元素不一定是数字,它们可以是任何对象。

您可以在实现中使用此方法。我写了一些方法来检查是一个字符串集的子集

public boolean isASubset( Set<String> parent,Set<String> child) {

    boolean[] result = new boolean[1];
    child.forEach((String s) -> {
                if (!parent.contains(s)) {
                    result[0] = true;
                }
            }

    );

    return result[0];
}

不确定您在这里所做的工作的名称,但从数学上讲,我会通过比较的差异来接近它,但由于您只对子集感兴趣,因此放弃powerset中的完整集powerset是所有可能的子集,包括空集和完整集

问题是找到一个集合相对于其他集合的幂集的唯一子集。在Python中,这是通过在表示其他集合之一的幂集的元组列表中重复检查表示[给定集合]的特定子集的元组来完成的,在您的示例中是5个幂集

下面是一个Python实现,从包含输入的文本文件中读取:

来自itertools进口链,组合为梳子 进口稀土 def PROCESSETL: 将一行[从文本文件读取]转换为标签、值的元组。 label=l[l.find':'-1] vals=re.compile'{.+}.findall.rstrip[0].split',' 返回标签 def GetSubsets: 获取给定集合的所有子集,包括空集。 返回列表链*maplambda x:combs,x,range0,镜头 def GetPowersets: 获取给定集合所有子集(包括空集合和全集合)的功率集。 返回列表链*maplambda x:combs,x,range0,镜头+1 将文本行读入列表 使用openset_list.txt,r作为f: sets=[ProcessSetl代表f.readlines中的l] 所有_子集=[GetSubsets[1]表示集合中的s] powersets=[GetPowersets[1]用于集合中的s] 对于0范围内的i,透镜组: 为当前循环迭代声明标签l和子集ss l、 ss=集合[i][0],所有_子集[i] 列出要比较的其他电源集 ops=[x代表ind,如果ind!=i,则枚举功率集中的x] 查找唯一子集:仅为当前集合的子集的子集 在任何其他组的电源集中都找不到 uss=列表设置[x代表y,如果x代表ss,则x代表y,如果x代表ss,则x代表y] uss=[] 对于ss中的s: 包含_s=[s在ps中表示ps在ops中] 如果没有包含任何内容: 附加号 str_uss=','.join[f{','.joinx}表示uss中的x] printfset{l}:{str_uss} 输出:

set A: (3, 5), (2, 5), (5)
set B: 
set C: (2, 7)
set D: 
set E: (11), (2, 13), (13), (11, 13), (2, 11)
set F:
答案与您建议的有点不同,但似乎与您描述的内容相符。希望有帮助