Algorithm 最短作业优先和最优调度的区别
我正在阅读算法设计手册第二版。有人能给我解释一下ShortestJobFirst和OptimalScheduling算法之间的区别吗?给出的算法如下 最短工作优先(I) {Algorithm 最短作业优先和最优调度的区别,algorithm,Algorithm,我正在阅读算法设计手册第二版。有人能给我解释一下ShortestJobFirst和OptimalScheduling算法之间的区别吗?给出的算法如下 最短工作优先(I) { 而(I)∅) 做 接受来自I的尽可能短的作业j 删除j,以及与I相交的任何间隔 } 优化调度(一) 而(I)∅) 做 接受I提供的最早完成日期的工作j 删除j,以及与I相交的任何间隔 我不明白它的意思 “我们的日程安排和机器人技术问题之间的区别在于 能够正确有效地解决电影调度问题的算法。请考虑 终止的第一个作业,即包含最右侧
例如在算法设计手册中。它们都是具有不同代价函数的贪婪算法。一个选择运行时间最短的作业,一个选择首先完成的作业 如果运行时间最短的作业比另一个作业晚启动,那么它可能不会首先完成,因此为了使贪婪算法更好地工作,我们需要一个不同的代价函数 考虑:
----JJJ---
-JJJJ-JJJJ
顶部表示ShortestJobFirst
。由于JJJ
比JJJ
短,因此会选择它运行,但因为一次只能运行一个作业,它会阻止其他两个作业运行。
另一种选择是optimizescheduling
,它选择第一个要完成的任务,表示为第二行。
因为它的完成时间等于或早于最短作业,所以我们至少会像选择最短作业一样富裕。它们都是具有不同成本函数的贪婪算法。选择运行时间最短的作业,选择首先完成的作业 如果运行时间最短的作业比另一个作业晚启动,那么它可能不会首先完成,因此为了使贪婪算法更好地工作,我们需要一个不同的代价函数 考虑:
----JJJ---
-JJJJ-JJJJ
顶部表示ShortestJobFirst
。由于JJJ
比JJJ
短,因此会选择它运行,但因为一次只能运行一个作业,它会阻止其他两个作业运行。
另一种选择是optimizescheduling
,它选择第一个要完成的任务,表示为第二行。
因为它完成的时间等于或早于最短的作业,所以我们将始终至少与选择最短的作业一样富裕。请参见