看上去一个很复杂的问题,解法却出奇的简单,题目描述如下(懒得翻译了……):
We are given as input a set of n jobs, where job j has a processing time pj and a deadline dj. Recall the definition of completion times
Cj
from the video lectures. Given a schedule (i.e., an ordering of the jobs), we define the
lateness
lj
of job
j
as the amount of time
Cj−dj
after its deadline that the job completes, or as 0 if
Cj≤dj
. Our goal is to minimize the maximum lateness,
maxjlj
. Which of the following greedy rules produces an ordering that minimizes the maximum lateness? You can assume that all processing times and deadlines are distinct
.
只要按照结束时间对任务进行升序排列,得到的便是所求的解,非常简洁的贪心。正确性的证明,可以通过反证法,即假设最优的排列顺序不是升序,那么必定存在一个逆序对,交换这对任务,可以得到更优的解,这样就和假设矛盾了。