algorithm - 作业调度算法的反例 "Earliest End time First"

标签 algorithm job-scheduling greedy

好吧,我们有作业调度的贪心算法(调度最大数量的作业)。我们可以使用不同的技术

  1. 最短的工作优先
  2. 最早开始时间优先
  3. 首先是冲突最小的工作
  4. 最早结束时间优先

我有前三个策略的反例,但找不到第四个策略的反例。

这里是前三种方法的反例

最短作业优先:

在这里我们可以安排 2 个作业而不是一个较短的作业。 enter image description here

最早开始时间优先:

在这里,我们可以安排 6 个较小的作业,这些作业稍后开始,而不是安排在一个较早开始的作业上 enter image description here

冲突最小的作业优先:

在这里我们可以安排 4 个冲突为 3,4,4,3 的作业,而不是 3 个冲突最小的作业,即 2,3,3

enter image description here

那么,最后一个最早结束时间优先的反例是什么?我找不到这个的反例。那么,它总是为每组数据给出一个最优解?

更新 1:

我有一个执行者来执行作业,我想执行最大数量的作业。

最佳答案

Earliest End time First 是贪心算法,为上述问题给出最优算法。 (其实你说的这个问题叫Interval Scheduling问题)

证明可以使用 charging argument 完成.您将贪婪算法的输出与最优解进行比较,并争辩说您的解并不比最优解差。

关于algorithm - 作业调度算法的反例 "Earliest End time First",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39240310/

相关文章:

java - 检查作业是否正在运行?

algorithm - 小偷拿走的最大值

python - 递归二进制搜索无法系统地工作

java - 合并到两个排序的 Java 链表的最有效方法(非自定义链表)

regex - 如何设计一个字符串匹配算法,其中输入是准确的字符串并且查找值是正则表达式?

java - 一种为任务分配时间使总时间最大化的贪心算法

c - 贪心算法 - 罗马数字

algorithm - 生成所有长度为 n 的二进制字

java - 在 Java 中使用 Quartz 运行两个作业

distributed-computing - 使用 Airbnb Chronos REST API 调度自定义 mesos 执行器