【问题标题】:Dynamic algroithm for doing something with maximum profit以最大利润做某事的动态算法
【发布时间】:2014-02-08 17:51:34
【问题描述】:

问题是:想象一个学生有n 的项目和m 小时来做这些项目。他必须管理好自己的时间,才能获得尽可能多的分数。

通过在每个项目上工作 1 小时,他可以抓住不同的要点。
例如,在项目 1 上工作一小时,他可以获得 2 分,如果他在项目 1 上工作两小时,他可以获得 2.25 分。
项目 2 不同 - 在项目 2 上工作 1 小时,他可以获得 1 分,但在项目 2 上工作 2 小时,他可以获得 2.5 分。

另一个例子:

m = 5 和 n = 10。表示有 5 个项目和 10 个小时的时间来做这些项目。

projectnumber  hours to complete   1 hour work  2h work  3h work  4h work    
     1                3                1.5        2        2.25     _
     2                4                0.5        1.75     2        2.25
     3                3                2          2.25     2.5      _
     4                2                1          2        _        _
     5                5                1          2        2.5      3

我能理解的:

经过思考,我明白这就像作业调度,也许解决这个问题的最佳算法是动态规划算法。

首先,您应该考虑项目的第一个小时。并按利润降序排列。

2  1.5  1   1   0.5

在完成项目 3 的第一个小时后,您应该将项目 3 的第二个小时添加到列表中(剩余 9 个小时)。

1.5  1   1   0.5  0.25 (0.25 is for second hour of project 3)

它应该一直持续到你必须完成项目的 10 小时时间结束。

但我确信这个算法有一些问题。其中之一是,也许一个项目的第二个小时会让你抓住一个好点。所以你不能只考虑项目的第一个小时。

有什么建议吗?

【问题讨论】:

  • 对我来说这听起来像是一个贪心算法,而不是 DP。
  • 感谢您编辑 Dukeling。你是说它像背包?!!
  • 您描述的算法听起来像a greedy algorithm,但您提到了动态编程,所以我想我只是指出这一点。 (但是,是的,这听起来像是背包问题)
  • 如果项目 2 第 4 小时的积分是 30 分怎么办?预算为 10 小时,贪心算法永远不会接近它。

标签: algorithm dynamic-programming


【解决方案1】:

您的问题似乎类似于 0-1 背包问题:-

  1. 总小时数 m 是背包容量
  2. 将每个小时数和对应点数视为物品重量和价值
  3. 最大化分数。

0-1 背包问题作为伪多项式时间的 DP 解。

第 N 个项目的问题表述:-

Knapsack(N,M) = max(Knapsack(N-1,M),Knapsack(N-1,M-1)+Points[N][1]+Knapsack(N-1,M-2)+Points[N][2]......)

注意:- Points[N][k] = 在项目 N 上工作 k 小时获得的积分

Knapsack Problem

【讨论】:

  • DP 方法可能需要稍作修改...(例如,如果不工作第一个小时,您就不能工作第二个小时)。
  • 是的,问题是你应该按小时做每个项目。
  • @Dukeling 不,如果您将小时数和对应点视为背包问题中的项目并且我的意思是我的意思,我认为您不需要修改
  • 考虑两个项目,每个项目都需要两个小时才能完成。你有 2 小时的时间来获得最好的成绩。项目 1:小时 1:3 小时 2:3.5 项目 2:小时 1:0.5 小时 2:5 .. 所以这个算法失败了
  • @SamanParser 检查问题的公式可以解决您的问题
猜你喜欢
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多