多机调度问题
输入: n个作业的处理时间t[n],m台机器的空闲时间d[m]
输出:每台机器所处理的时间S[m]
1. 将数组t[n]从大到小排序,时间性能为O(nlog2^n),对应的作业序号存储在数组p[n]中;
2. 将数组d[m]初始化大小为0
3. for(i = 0;i < m; i++) 时间性能为O(m),
3.1 将m前m个作业分配给m个机器:S[i]={p[i]};
3.2 d[i]=t[i] //为第i台机器赋值t[i]的时间
4. for(i = m ; i < n ; i++)
4.1 j=数组d[m]中最小值对应的下标
4.2 将作业i分配给最先空闲的机器j:S[j]=S[j]+{p[i]}
4.3 机器j将在d[j]后空闲:d[j]=d[j]+t[i]
算法分析:步骤1将数组t[n] 进行排序,其时间性能为O(nlong2^n),步骤3完成前m个作业的分配,其时间性能为O(m),步骤4完成n-m个作业的分配,操作“数组d[m]中最小值对应的下标” 如果采用蛮力法查找,其时间性能为O(m),则算法的时间性能:T(N)=
∑i=1m1+∑i=m+1nm=m+(n−m)∗m\sum_{i=1}^{m}1+ \sum_{i=m+1}^{n}m=m+(n-m)*mi=1∑m1+i=m+1∑nm=m+(n−m)∗m