Algorithm 查找所有集合';不包含任何子集

Algorithm 查找所有集合';不包含任何子集,algorithm,list,set,Algorithm,List,Set,我有一个问题,我正在研究最快的算法,以找到一个集,它是原始集的子集,不包含任何S的子集(S1,…Sn)。我想找到的集可以包含Si的一些元素,但不包含整个元素 例如,原始集合:S=(1,2,3,4,5),S1=(1,2),S2=(1,3) =>最长集:(2,3,4,5)其他集合:(1,4,5),(2,4,5),(3,4,5),(1,4) 谁能给我一个建议?谢谢 坏消息 考虑选择不包括哪些元素的问题 如果我们选择不包括元素1,我们满足S1和S2的约束 如果我们选择不包括元素2,我们满足S1的约束 如

我有一个问题,我正在研究最快的算法,以找到一个集,它是原始集的子集,不包含任何S的子集(S1,…Sn)。我想找到的集可以包含
Si
的一些元素,但不包含整个元素

例如,
原始集合:S=(1,2,3,4,5),S1=(1,2),S2=(1,3)
=>
最长集
:(2,3,4,5)<代码>其他集合
:(1,4,5),(2,4,5),(3,4,5),(1,4)

谁能给我一个建议?谢谢

坏消息 考虑选择不包括哪些元素的问题

如果我们选择不包括元素1,我们满足S1和S2的约束

如果我们选择不包括元素2,我们满足S1的约束

如果我们选择不包括元素3,我们满足S1和S3的约束

所以1给出{S1,S2},2给出{S1},3给出{S3}

您的问题可以表示为找到不包含的元素的最小数目,使得满足集(例如{S1,S2})的并集覆盖所有给定集

这正是NP完全的问题

好消息 实际上,只要根据最终覆盖最多集合的元素选择不包含的元素,您可能会做得很好


这是一个易于实现的贪婪算法(尽管它并不总是给出最佳答案)。

请给出更多您想要的示例。