在作业调度算法中最大化资源使用?

时间:2017-10-29 23:24:26

标签: algorithm dynamic-programming

我正在尝试为作业调度问题创建动态编程算法。我有一组n个职位,每个职位i的开始时间为s(i),结束时间为f(i)。开始总是在完成之前,您可以同时拥有两个工作。我如何创建算法以最大化资源忙碌的时间?

1 个答案:

答案 0 :(得分:1)

您必须决定每个点要跟踪的状态。一种选择是跟踪当前正在运行的作业的完成时间,在这种情况下,您可以大致计算最大可能的繁忙时间如下。

到目前为止,从一组完成时间到繁忙时间创建一个地图。将其初始化为{null set} - > 0

对于按开始时间递增顺序的每项工作:

  1. 创建一个新地图并将旧地图中的所有条目插入其中 两个完成时间都大于当前开始的地图 时间。
  2. 对于旧地图中的每个剩余条目,从中删除 完成时间小于或等于开始时间的那些 目前的工作。如果新地图没有该集的条目 完成时间,或者与条目相关的值 旧地图大于该地图的新地图中的值, 将结果条目插入新地图。现在插入完成 当前作业进入集合的时间并将其添加到其值的时间 被新工作带走了。如果新地图没有条目 结果完成时间集,或者该条目具有较低值 比刚刚计算的值,为该组和值添加一个条目 到新地图。
  3. 新地图成为旧地图
  4. 最后,地图中的最大值是最大可能的繁忙时间。如果你继续回溯我没有提到的信息,你可以追溯到找出工作的选择。