📅  最后修改于: 2020-12-10 06:43:36             🧑  作者: Mango
这是在单个处理器上最佳安排单位时间任务的争议,其中每个作业都有最后期限,如果错过了最后期限,则必须支付罚款。
单位时间任务是一项工作,例如要在计算机上匆忙完成的程序,而该程序恰好需要一个单位时间才能完成。给定单位任务的有限集合S,S的时间表是S的排列,指定执行这些任务的顺序。计划中的第一个任务在时间0开始,在时间1结束;第二个任务在时间1开始,在时间2完成,依此类推。
为每个处理器安排带有期限和罚款的单位时间任务的争议有以下输入:
在这里,我们找到了S的时间表,该时间表可最大程度地减少因错过截止日期而产生的总罚款。
如果任务在截止日期之后完成,则它在此计划中延迟。否则,任务将排在计划的早期。可以将任意计划始终以早期优先的形式放置,在该形式中,第一个任务在后一个任务之前,即,如果某个新任务x在某个后一个任务y之后,那么我们可以切换x和y的位置而不会影响x被早或晚。
总是可以将任意计划安排成规范的形式,在该形式中,第一个任务先于后一个任务,然后按不递减的截止日期的顺序安排第一个任务。
如果存在特定任务的时间表,则任务A的任务是独立的,这样就不会延迟任务。因此,计划的第一组任务形成了一个独立的任务集“ l”,表示所有独立的任务集。
对于任何一组任务A,如果t = 0、1、2 …. n,则A是独立的,我们有N t (A)≤t,其中N t (A)表示A中任务期限为t或更早,即如果预期A中的任务按截止时间单调增长的顺序进行,则没有任务迟到。
示例:在给定的权重(罚款)和截止日期下,找到以下任务的最佳计划。
1 | 2 | 3 | 4 | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|
di | 4 | 2 | 4 | 3 | 1 | 4 | 6 |
wi | 70 | 60 | 50 | 40 | 30 | 20 | 10 |
解决方案:根据Greedy算法,我们以罚款的降序对作业进行排序,以便收取最低的罚款。
在此问题中,我们可以看到单处理器计算机将以6个单位运行的最大时间,因为这是最大期限。
让T i代表i = 1到7的任务
在T 7之后无法接受T 5和T 6,因此罚款为
其他时间表是
(2 4 1 3 7 5 6)
可以有许多其他时间表,但是(2 4 1 3 7 5 6)是最佳的。