Data Structures Algorithms 简明教程

Job Sequencing with Deadline

作业调度算法用于在单处理器上调度作业以最大化利润。

作业调度算法的贪婪方法表明,“给定“n”个具有开始时间和结束时间的作业,需要以这样的方式进行调度,即在最大截止时间内获得最大利润”。

Job Scheduling Algorithm

一组带有截止时间和利润的作业作为输入取自作业调度算法,并且安排有利润的作业子集作为最终输出。

Algorithm

Step1 −  Find the maximum deadline value from the input set
of jobs.
Step2 −  Once, the deadline is decided, arrange the jobs
in descending order of their profits.
Step3 −  Selects the jobs with highest profits, their time
periods not exceeding the maximum deadline.
Step4 −  The selected set of jobs are the output.

Examples

考虑按照截止日期和利润完成的任务。规划任务,按顺序高利润任务优先完成 −

Step 1

从给定的截止日期中找到最大的截止日期值,dm。

dm = 4.

Step 2

按利润降序排列任务。

最大的截止日期,dm,是 4。因此,所有任务必须在 4 之前完成。

选择利润最高的任务,J4。它占据了最大截止日期的 3 个部分。

因此,下一个任务的时间段必须是 1。

总利润 = 100。

Step 3

下一个利润最高的任务是 J5。但 J5 花费的时间是 4,超出了截止日期 3。因此,它不能添加到输出集中。

Step 4

下一个利润最高的任务是 J2。J5 花费的时间是 2,也超出了截止日期 1。因此,它不能添加到输出集中。

Step 5

利润更高的下一个任务是 J3。J3 花费的时间是 1,不超出给定的截止日期。因此,J3 将添加到输出集中。

Total Profit: 100 + 40 = 140

Step 6

由于,满足最大的截止日期,算法结束。在截止日期内计划的任务输出集为 {J4, J3} ,最大利润为 140

Example

以下是使用贪婪算法的作业排序算法的最终实现 −