一组中有n个作业,每个作业的起始时间为s i ,完成时间为f i ,对于n i
我试图弄清楚订购上升开始时间,结束时间和间隔时间(f i - s i )中的订购作业是最佳与否。
我说过,在第一份工作首先开始的情况下,在最早的开始时间内进行排序并不是最佳的,但是可以开始和完成3份工作的时间。
接下来我说在升序完成时间排序是最佳的,因为正好在添加完成时间后,添加了下一个最快的结束作业,最大化添加到非重叠作业列表的作业数量。
但是我不确定排序f i - s i 是最佳的。
我的逻辑是它是最优的,因为它会列出我认为会增加的最短工作或考虑其他工作长度的工作
编辑:通过最大化非重叠流程列表的大小进行优化
答案 0 :(得分:1)
我认为选择下一个工作有一个令人惊讶的简单策略,它为您提供了连续工作最大数量的子集:剩余工作中具有有效开始时间(在开始时) :所有开始时间都有效;选择第一个工作后,下一个工作的开始时间当然不能超过之前选择的工作的结束时间。总是选择最早完成时间的工作< /强>
证明这种策略是最优的可以这样开始:假设你有一个连续工作的最佳(即最大)子集,并且第一个工作不是具有(总体)最早完成时间的工作,那么这个工作总体最早的完成时间不能在最佳子集中,但您可以使用此作业替换最佳子集的第一个作业,并获得另一个最佳子集,其中作业具有最早的完成时间作为第一个作业。现在你可以用第二个作业以相同的方式继续,因此很明显,在使用上述策略生成的子集中,第n个作业的完成时间不超过任何第n个作业的结束时间。最佳子集,对于任何n,因此如此创建的子集也是最优的。