【问题标题】:Resource allocation problem资源分配问题
【发布时间】:2011-10-25 05:51:46
【问题描述】:

我试图解决 ACM 问题集中的一些问题。我偶然发现了一个对我来说太难的有趣的东西。

详细信息:http://www.karrels.org/Ed/ACM/93/prob_g.html

对我来说,看起来我们有 d 个篮子(每个部门一个篮子)和每个篮子中的一组可能选项(每个可能的分配一个选项)。每个可能的选项就像带有两个参数(金钱和程序员)的背包物品。这两个参数分别限制为 b 和 p 值。

请给我一些关于如何解决这个问题的想法。

【问题讨论】:

    标签: algorithm


    【解决方案1】:

    对我来说看起来像是一个动态编程问题。基本上,您希望按顺序处理每个部门:为已考虑的部门维护一组可用的最佳解决方案,然后逐个添加剩余的部门。

    特别是:您可以将两个选项矩阵(如每个部分所述)组合成一个组合选项矩阵。这个矩阵的行和列都是原始矩阵的行和列的所有可能的和,支付项是原始矩阵中支付的总和。请注意,行和列可能重叠(如果两个总和最终相同);在这种情况下,您显然希望使用最大的收益。此外,您需要存储每个收益是如何实现的,以便最终报告如何实现最佳解决方案。

    请注意,如果原始矩阵的大小是 A 和 B,那么在最坏的情况下,结果矩阵的大小可能是 O(A*B)。但是,您不需要存储任何大于可用资源总量的行或列。此外,如前所述,如果有不止一种方法可以达到该总和,则行和列将被合并。最后,我相信您可以删除任何回报不比其他需要较少资源的矩阵条目更好的矩阵条目;生成的稀疏矩阵可能需要更少的空间和计算来处理。

    无论如何,一旦您将所有部门合并为一个最终矩阵,请报告最大的收益条目作为您的解决方案。

    【讨论】:

    • 但是如果我理解正确的话,在处理第一除法之后,在最坏的情况下我们会得到 100 个可能的选项;秒后它将是 100*100,所以在 20 之后我们得到 100^20。我认为它太大了
    • 是的,根据问题,动态规划的最坏情况可能是指数级的。然而,在实践中,它通常是易于处理的;特别是,消除主导解决方案(上面的稀疏矩阵位)可能特别有效。无论如何,动态编程框架应该真正解决问题(这是一个不错的第一步),并且可以作为寻找更好解决方案的起点;不幸的是,我没有看到更好的明显解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2019-11-17
    • 1970-01-01
    • 2011-02-23
    相关资源
    最近更新 更多