最小化利润,最后期限的工作安排

时间:2018-03-06 13:09:10

标签: java algorithm graph greedy

我在计算截止日期的5个工作岗位的最低利润方面面临问题。

利润为(P1,P2 ... P5)=(20,15,10,1,6),截止日期分别为(2,2,1,3,3)。 我对这个问题的解决方案是:

+----------+----+-----+---------+
| Deadline | 1  |  2  |    3    |
+----------+--------+-----------+
|    Jobs  | J4 | J5  | (Empty) |
+----------+--------+-----------+

我将最后一个单元格留空了,因为在填充J5和J6之后,第3小时内无法完成其他任务。据此,利润为7。

这是对的吗?

PS:一份工作需要一个小时,一次只能分配一份工作。

1 个答案:

答案 0 :(得分:0)

如果需要填写所有小时位置,并获得最低利润

我走这条路:

  1. 根据(deadline_max,profit_min)对作业进行排序: J(4,5,2,1,3) = P(1,6,15,20,10)< / strong>, D(3,3,2,2,1)
  2. 从最高时间/截止日期开始 3 。只有截止日期= 3的工作才能适应这一小时。
  3. 取第一个(最低的)= 1 = J4 。截止日期3的剩余时间仍可用于较低的截止日期。
  4. 获取 6 的截止日期3的下一个值,并将其与截止日期2的第一个值进行比较:如果它更小则应用此作业,如果不是截止日期2的第一个作业。因为它小于截止日期2的工作是 J5
  5. 现在,截止日期3&amp; 2,你想要检查截止日期1.第1小时可接受的最高截止日期是截止日期#1。拿最小的(这是唯一的工作)。 10 = J3
  6. 然后回答是: J3,J5,J1。总利润= 17