作业调度算法的反例 "Earliest End time First"
Counter example for Job Scheduling Algorithm "Earliest End time First"
嗯,我们有作业调度的贪心算法(调度最大数量的作业)。我们可以使用不同的技术
- 最短的工作优先
- 最早开始时间优先
- 冲突最小的作业优先
- 最早结束时间优先
我有前三个策略的反例,但找不到第四个策略的反例。
这是前三种方法的反例
最短的工作优先:
这里我们可以安排 2 个作业而不是一个较短的作业。
最早开始时间优先:
这里我们可以安排 6 个较小的作业,这些作业稍后开始,而不是安排在一个较早开始的作业上
首先是冲突最少的作业:
这里我们可以安排 4 个冲突为 3、4、4、3 的作业,而不是 3 个冲突最小的作业,即 2、3、3
所以,最后一个的反例是什么最早结束时间优先我找不到这个反例。所以,它总是对每组数据给出一个最优解?
更新 1:
我有一个执行器来执行作业,我想执行最大数量的作业。
Earliest End time First是贪心算法,针对上述问题给出最优算法。 (其实你说的这个问题叫Interval Scheduling问题)
证明可以使用charging argument来完成。您将贪婪算法的输出与最优解进行比较,并认为您的解并不比最优解差。
嗯,我们有作业调度的贪心算法(调度最大数量的作业)。我们可以使用不同的技术
- 最短的工作优先
- 最早开始时间优先
- 冲突最小的作业优先
- 最早结束时间优先
我有前三个策略的反例,但找不到第四个策略的反例。
这是前三种方法的反例
最短的工作优先:
这里我们可以安排 2 个作业而不是一个较短的作业。
最早开始时间优先:
这里我们可以安排 6 个较小的作业,这些作业稍后开始,而不是安排在一个较早开始的作业上
首先是冲突最少的作业:
这里我们可以安排 4 个冲突为 3、4、4、3 的作业,而不是 3 个冲突最小的作业,即 2、3、3
所以,最后一个的反例是什么最早结束时间优先我找不到这个反例。所以,它总是对每组数据给出一个最优解?
更新 1:
我有一个执行器来执行作业,我想执行最大数量的作业。
Earliest End time First是贪心算法,针对上述问题给出最优算法。 (其实你说的这个问题叫Interval Scheduling问题)
证明可以使用charging argument来完成。您将贪婪算法的输出与最优解进行比较,并认为您的解并不比最优解差。