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

输入:机器数、任务数,分别输入任务ID和需要处理的时间
输出:分配情况及最短处理时间

3. 设计
从大到小冒泡排序
for

本文介绍了一个使用贪心算法解决的任务调度问题,目标是最小化总加工时间。当有n项任务和2台机器时,通过将任务按处理时间从大到小排序并分配给空闲机器,可以确保长任务优先处理。具体实现中,采用冒泡排序,并给出了算法的时间复杂度为O(n^2)。附带源码链接。
最低0.47元/天 解锁文章
1539

被折叠的 条评论
为什么被折叠?



