最小化产品

时间:2012-06-03 05:58:33

标签: algorithm optimization linear-programming

我给了3组A,B和C,每组有n个元素。这些集可以包含重复项(如果Set是正确的术语,则不确定)。

现在我试图用n个元素(比如D1到Dn)形成一个集合D,每个元素Di包含3个元素,一个来自A,一个来自B,一个来自C.

我的目标是找到最小化Di中元素乘积之和的集合D.

这里的蛮力似乎是一个非常糟糕的主意,因为即使对于n> 5,该算法也会非常慢。有谁能建议更好的方法?线性规划是否适用于此问题?

1 个答案:

答案 0 :(得分:0)

因此,您希望形成两个二分图,以创建A-B和B-C元素的匹配,从而使平均乘积(a_i * b_j * c_k)最小化。

不幸的是,我认为这是一个NP难题。 (如果你把匹配数n = 3作为变量)

我不认为这两个匹配可以单独进行:

考虑A = {1,10},B = {1,10}

A,B的孤立匹配是1 x 10 = 10和1 x 10 = 10(总共20)

但考虑C = {1,10000}

如果我们将A,B与C的贪婪匹配得到10 x 1 = 10和10 x 10000 = 100000(总计100010)

然而,如果我们采用非最佳匹配A,B为1 x 1 = 1且10 x 10 = 100(总共101)

然后我们可以将它与C匹配为1 x 10000 = 10000和100 x 10 = 1000(总共11000)

所以我们可以看到有必要考虑所有可能的组合。

这并不能证明它是NP难的,但我希望它能传达直觉。