在给定带时隙的多个处理器的情况下测试是否可以进行调度操作

时间:2017-06-23 05:28:35

标签: algorithm

给定一组具有开始和结束时间且需要多个处理器的操作,以及在开始和结束时可用的一组处理器,是否存在多项式算法来确定是否可以运行所有任务?作为后续工作,存在一个返回可能执行的多项式算法?

例如:

O1: 7:00 AM to 8:00 AM - req. 2 × Processors
O2: 8:00 AM to 9:00 AM - req. 2 × Processors
O3: 7:00 AM to 9:00 AM - req. 2 × Processors

可以在以下处理器上运行

P1: 7:00 AM to 9:00 AM - runs O1 and O2
P2: 7:00 AM to 9:00 AM - runs O1 and O2
P3: 7:00 AM to 9:00 AM - runs O3
P4: 7:00 AM to 9:00 AM - runs O3

但不能在以下处理器上运行:

P1: 7:00 AM to 8:00 AM
P2: 8:00 AM to 9:00 AM
P3: 7:00 AM to 9:00 AM
P4: 7:00 AM to 9:00 AM

注意:不可能为操作切换处理器。

我认为这可能与Job Shop Scheduling (JSP)Nurse Scheduling Problem (NSP)有关,但两者似乎都略有不同。

对于JSP和NSP,关键区别在于没有最小/最大要求(我们不关心最佳解决方案 - 只要存在解决方案)。

1 个答案:

答案 0 :(得分:0)

您对Fixed Job Scheduling Problem的一小部分感兴趣:每个作业都有一个固定的开始和结束时间以及一个值,目的是最大化相同机器完成的作业的价值(在您的情况下,任何工作的值都是1)。唯一的区别是您有处理器的可用间隔。由于您只想知道是否可以分配所有作业,因此可以在处理器的不可用插槽上添加虚拟作业。在第二个示例中,您可以添加8到9之间的作业,以及7到8之间的另一个作业。

您可以通过稍微调整附件中提供的算法,在多项式时间内解决此问题。