针对特殊分配问题的高效解决方案

时间:2009-02-06 14:18:15

标签: algorithm variable-assignment

假设:

- 一组项目,每个项目都有成本放入给定的容器类型。

- 一组容器类型,每个容器类型都有许多可用的容器。

示例:

金额*集装箱类型:5 * A,3 * B,2 * C

项目(成本):

3 * X(A = 2,B = 3,C = 1)

2 * Y(A = 5,B = 2,C = 2)

1 * Z(A = 3,B = 3,C = 1)

问题:

找到物品放入容器的最佳位置,以便降低成本。为简单起见,只将项目放入单一类型的容器中。

我尝试使用匈牙利方法来解决问题,但是运行时间为O(n³),对于大问题(例如,100000项)来说,这是非常令人望而却步的。

我当前的解决方案是一种贪婪的方法,它只是按成本(asc)对项目 - 容器组合进行排序,并在O(n log n)中为第一个容器分配足够的数量。

有更好的解决方案吗?

4 个答案:

答案 0 :(得分:5)

此问题是Knapsack problem的变体,从维基百科页面开始,然后从那里继续阅读。

众所周知,贪婪算法是一个相当不错的适应症,所以你可能已经足够好了。

答案 1 :(得分:0)

鉴于基因组很容易产生,变异和杂交,我会寻求遗传方法。但可能存在最佳的非组合解决方案。

答案 2 :(得分:0)

如果我理解你的问题,你只需要一些数学:

http://en.wikipedia.org/wiki/Optimization_%28mathematics%29

答案 3 :(得分:0)

您是否尝试将assignment problem写为linear program并使用simplex algorithm解决问题?