有jobNum个任务等待machineNum个处理器去完成,任务不可细分,求最优完成时间。
本质是NP问题,但是可以通过贪心法来求近似解:
策略: 对jobNum个任务按其占用处理器的时间排序,最重的任务往前排,每次选择最早空出来的处理器安排给最重的任务。
例如7个独立作业{2,14,4,16,6,5,3}
的三处理器调度为
M1: 4
M2: 2-7
M3: 5-6-3-1
CLASS JobNode
{
public:operator int() const{return time;}; //该重载用来泛型算法algorithm.sort()的操作,即按照任务需要的处理器时间来对所有任务排序
private:
int ID; // 任务的标示符
int time; //任务需要耗费的时间
}
class MachineNode
{
public:
operator int() const{return avail;}// //该重载用来泛型算法algorithm.sort()的操作,即按照处理器的空闲开始时间avil对所有的处理器来排序
private:
int ID; // 处理器的标识符
int avail; // 处理器当前最早能空闲出来的时间
}
template<class Type>
void Greedy(Type a[], int jobNum, int machineNum) //传入JobNode数组a
{
if(jo