并行机器最短调度问题

来源:互联网 发布:数据交易呢主体 编辑:程序博客网 时间:2024/05/29 16:26

输入:数组t,存储n个任务的执行时间

m台完全一样的机器

输出:使任务在m台机器并行执行时间最短的一个调度策略

基于贪心选择:选择具有最短任务队列的机器。

#include <iostream>#include <vector>using namespace std; int minTask(int *t,int n){int tmp = t[0];int min = 0;for(int i=0;i<n;i++){if(tmp>t[i]){tmp = t[i];min = i;}}return min;}void makeSpanScheduling(int *t,int n,int num){int *T = new int[num];vector<vector<int> > M;for(int i=0;i<num;i++){T[i] = 0;vector<int> tmp;M.push_back(tmp);}for(int i=0;i<n;i++){int j = minTask(T,num);int tj = T[j];T[j] = tj + t[i];M[j].push_back(i+1);}for(int i=0;i<M.size();i++){for(int j=0;j<M[i].size();j++)cout<<M[i][j]<<"\t";cout<<endl;}}int main(int argc, char** argv) {int t[6]={1,2,3,4,5,6};makeSpanScheduling(t,6,3);return 0;}


0 0
原创粉丝点击