给定一组具有开始和结束时间且需要多个处理器的操作,以及在开始和结束时可用的一组处理器,是否存在多项式算法来确定是否可以运行所有任务?作为后续工作,存在一个返回可能执行的多项式算法?
例如:
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,关键区别在于没有最小/最大要求(我们不关心最佳解决方案 - 只要存在解决方案)。
答案 0 :(得分:0)
您对Fixed Job Scheduling Problem的一小部分感兴趣:每个作业都有一个固定的开始和结束时间以及一个值,目的是最大化相同机器完成的作业的价值(在您的情况下,任何工作的值都是1)。唯一的区别是您有处理器的可用间隔。由于您只想知道是否可以分配所有作业,因此可以在处理器的不可用插槽上添加虚拟作业。在第二个示例中,您可以添加8到9之间的作业,以及7到8之间的另一个作业。
您可以通过稍微调整附件中提供的算法,在多项式时间内解决此问题。