Algorithm 给定N个元素集,求M个元素集的最小并集
给我一份食谱,作为一套配料,我试图找到能让我一周的饭量值的最小配料。这就转化为上面的问题,N表示配方的数量,M=7Algorithm 给定N个元素集,求M个元素集的最小并集,algorithm,Algorithm,给我一份食谱,作为一套配料,我试图找到能让我一周的饭量值的最小配料。这就转化为上面的问题,N表示配方的数量,M=7 eg. if the initial sets are [{1,2}, {2,3}, {1,2,3}, {1}, {2}], and M=3 The minimal union is {1,2}. 我正在寻找高层次的方法来解决这个问题。我觉得这可以简化为BFS,但我想看看其他方法是否也可以使其达到最佳 注意:可能有多个这样的集合,具有相同的基数。这个问题称为最小k-并集,如下所示
eg. if the initial sets are [{1,2}, {2,3}, {1,2,3}, {1}, {2}], and M=3
The minimal union is {1,2}.
我正在寻找高层次的方法来解决这个问题。我觉得这可以简化为BFS,但我想看看其他方法是否也可以使其达到最佳
注意:可能有多个这样的集合,具有相同的基数。这个问题称为最小k-并集,如下所示:
- 斯塔尔·文特博(2002)。DSG技术报告2002-006
def小螺纹接头(套,k):
"""
从“集合”中选择“k”元素并返回它们的并集。请重试
用贪婪的方法返回一个相当小的联盟。
>>>小联合([{1,2},{2,3},{1,2,3},{1},{2}],3)
集合([1,2])
>>>小联合([{1,2},{2,3},{3,4},{1,4}],3)
集合([1,2,3,4])
"""
union=set()
对于xk范围内的u):
s=最小值(集合,键=λs:len(s |并集))
设置。删除(s)
并集|=s
回归联盟
Hmm也许Mathforum会更好;)交叉张贴在这里:(2017)O(n^{0.25+\epsilon})-这里的近似算法(在SODA 2017中):哇,我的杂货店购物变得NP难。谢谢你的回答。把杂货装进你的购物篮已经是NP难了!