计算组合子集以获得原始集合的成本

时间:2014-07-27 13:01:39

标签: python algorithm set

我有一个项目列表说

  

[1,2,3]

我有上面列表的某些子集的字典,例如。

的特定成本
{
(1) : 5.0,
(2) : 3.0,
(3) : 2.5, 
(1,3) : 6.0,
(2,3) : 5.0,
}

我必须找到一种以最低成本获得上述列表的方法。例如。我可以通过combining (1),(2),(3) with a cost of 10.5, combining (1,3) and (2) with a cost of 9.0combining (1) and (2,3) with a cost of 10.0获得[1,2,3]。通过我的第二选择,我将能够达到最低成本。

我可以想到的解决方案是对上面的列表[1,2,3]进行集合划分,并匹配字典中是否存在特定的子集组合。但是这种解决方案并不是最优的,因为它们是与生成列表的集合分区相关的巨大成本。

see this link for ref.用于设置分区算法

1 个答案:

答案 0 :(得分:0)

尝试:

  • 从dict中丢弃任何两件物品的成本> =每件物品的成本。
  • 从dict中丢弃任何一组三项,其成本> = =一组大小的组合成本> 3。
  • ...

贪心算法位:

  • 随机选择其中一个最大尺寸的剩余dicts
  • 反复添加两者中剩余的最大集合
    1. 涵盖了目标集中剩余的大部分内容,
    2. 然后,成本最低。

上述内容应该比纯随机选择更好。