我们有n个工作和m台机器。每个工作我有一个发布时间r [i]。在机器j上处理作业i需要p [i] [j]时间。对于一项工作k,| {p [i] [j] |我== k} | &lt; = c,其中c <&lt;米我们将作业i的延迟定义为f [i] - r [i],其中f [i]是作业i完成的时间。该系统不是抢占式的,即,当某个机器上启动一个作业时,它在完成之前不能被中断。目标是提供一种最小化所有作业的延迟总和的调度算法。有什么想法吗?
答案 0 :(得分:1)
这是3-partition problem的缩减。
令S = {x 1 ,...,x 3m }是3分区的实例,使得对于每个i,B / 4 <1。 x i &lt; B / 2,其中B =Σx i / m是目标总和。
让m 相同的机器。在时间0,释放长度为x 1 ,...,x 3m 的3m作业。在每次B,B + 1,...,B + 4mB - 1时,释放长度为1的m个作业,共计4m 2 B作业。
当且仅当初始作业的完工时间小于或等于B时,3分区的实例才有解决方案。如果有解决方案,那么初始作业对目标的贡献最多为3mB 。其他工作的贡献是4m 2 B.
如果完工时间长于B,则4mB作业链至少延迟一个单位,为目标贡献4mB。因此,如果3分区问题是可解的,则目标最多为3mB + 4m 2 B,如果3分区问题不可解决,则目标至少为4mB + 4m 2 B