【问题标题】:Efficient solution for a special assignment problem特殊分配问题的有效解决方案
【发布时间】:2009-02-06 14:18:14
【问题描述】:

给定:

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

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

例子:

数量*容器类型: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) 中分配具有足够数量的第一个容器。

有没有更好的解决方案?

【问题讨论】:

    标签: algorithm variable-assignment


    【解决方案1】:

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

    众所周知,贪心算法是一个相当好的近似值,所以你可能已经足够好了。

    【讨论】:

      【解决方案2】:

      考虑到基因组很容易生成、变异和杂交,我会自然而然地选择遗传方法。但可能存在最优的非组合解决方案。

      【讨论】:

      • 嗯,发帖人并没有具体说明他想要的答案的性质,当然,但我想他想要一些可以证明是最小的东西,他应该指定。不确定这是否符合要求。
      • 同意,但众所周知,某些问题(似乎并非如此)仅使用数学很难解决,在这些情况下,遗传算法肯定会归类为简单问题。跨度>
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        您是否尝试过将assignment problem 写成linear program 并使用simplex algorithm 解决它?

        【讨论】:

        • 这个问题是他在整数域中,这把它变成了不能使用单纯形算法的整数线性规划。否则,这是正确的解决方案。
        猜你喜欢
        • 2023-03-31
        • 2020-10-12
        • 2014-08-10
        • 1970-01-01
        • 1970-01-01
        • 2016-06-12
        • 1970-01-01
        相关资源
        最近更新 更多