Algorithm 查找所有集合';不包含任何子集
我有一个问题,我正在研究最快的算法,以找到一个集,它是原始集的子集,不包含任何S的子集(S1,…Sn)。我想找到的集可以包含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的约束 如
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完全的问题
好消息
实际上,只要根据最终覆盖最多集合的元素选择不包含的元素,您可能会做得很好
这是一个易于实现的贪婪算法(尽管它并不总是给出最佳答案)。请给出更多您想要的示例。