假设我有一个给定的数据集。
4 → a b c
5 → l b d
6 → e b c
42 → l b c
此处数据项在组中,使得它们的组合值在第一列中给出。为了更准确,这些物品以不同的方式进行杵状持。
算法的输入应该是项目。 输出应该是最好的组合,通过它我们可以以最低的成本获得所有项目集。
实施例。
要获取b
,c
,l
和e
值,我们需要使用5
的键和行的键来获取行。 6
。返回5
和6
的总和。
programm b c l e
output: 11 = 5+6
在这里,我们必须返回4+5 = 9
。虽然密钥为42
的行也符合条件9 < 42
。
programm l b c
output: 9 = 4+5
programm e b c
output: 6
答案 0 :(得分:1)
显然,您可以从不属于查询集的集合中删除元素。然后,剩下的是加权Set Cover问题。它是NP难的,因此难以最佳地解决。可能greedy heuristic就足够了;如果你真的需要一个最佳解决方案,我首先会尝试调查你的输入实例是否有任何可能被利用的属性,或者使用ILP求解器。