1. 问题
设有n项任务,加工时间分别表示为正整数t1,t2,…,tn.现有2台同样的机器,从0时刻开始安排对这些任务的加工。规定只要有待加工的任务,任何机器就不得闲置。如果直到时刻T所有任务都完成了,总加工时间就等于T。设计一个算法找到使得总加工时间T达到最小的调度方案。设给定的实例如下:
t1=1,t2=5,t3=2,t4=10,t5=3
试给出一个加工时间最少的调度方案,给出计算过程和问题的解。
2. 解析
选择采用贪心算法解决此问题,让最长处理时间的作业优先,即把处理时间最长的作业分配给最先空闲的机器,这样就可以保证处理时间长的作业优先处理,从而在整体上获得尽可能最短的处理时间。
任务数大于机器数,即n>m时。首先将这n个作业从大到小排序,然后依此顺序将作业分配给空闲的处理机。也就是从剩下的作业中,选择需要处理时间最长的,然后依次选择处理时间次长的,直到所有的作业全部处理完毕。如果我们每次是将需要处理时间最短的作业分配给空闲的机器,那么可能就会出现其它所有作业都处理完了只剩所需时间最长的作业在处理的情况。
按照实例:
输入:机器数、任务数,分别输入任务