我有大约1000套尺寸< = 5,包含数字1到100.
{1}, {4}, {1,3}, {3,5,6}, {4,5,6,7}, {5,25,42,67,100} ...
是否可以找到一组包含最大给定集数量的20?
检查每个100!/(80!*20!)
集合效率低下。
答案 0 :(得分:1)
我不太确定这是NP完整的。
考虑相关问题,我们获得每组x的奖励,但必须为我们想要允许的每个数字支付y的价格。 (如果已经支付了所有包含的数字,则该套装仅支付奖励。)
您可以使用max flow algorithm解决此类问题:
解决此图表上的最大流量问题(从源节点到目标节点)找到最小切割成本c。
我们将支付的净金额为N.x-c(其中N是套数)。
如果我们可以选择y(例如通过二分法)使得我们已经精确选择了20个数字,那么我们已经设法解决了具有20个数字的最大数量的集合。