假设:
- 一组项目,每个项目都有成本放入给定的容器类型。
- 一组容器类型,每个容器类型都有许多可用的容器。
示例:
金额*集装箱类型: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)中为第一个容器分配足够的数量。
有更好的解决方案吗?
答案 0 :(得分:5)
此问题是Knapsack problem的变体,从维基百科页面开始,然后从那里继续阅读。
众所周知,贪婪算法是一个相当不错的适应症,所以你可能已经足够好了。
答案 1 :(得分:0)
答案 2 :(得分:0)
如果我理解你的问题,你只需要一些数学:
答案 3 :(得分:0)
您是否尝试将assignment problem写为linear program并使用simplex algorithm解决问题?