看上去一个很复杂的问题,解法却出奇的简单,题目描述如下(懒得翻译了……):
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
.
只要按照结束时间对任务进行升序排列,得到的便是所求的解,非常简洁的贪心。正确性的证明,可以通过反证法,即假设最优的排列顺序不是升序,那么必定存在一个逆序对,交换这对任务,可以得到更优的解,这样就和假设矛盾了。