并行机器最短调度问题

原创 2015年11月19日 20:44:25

输入:数组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;
}


相关文章推荐

【贪心算法,最小延迟调度】:poj***,***

暂时没在poj上找到对应的题目,不过思想非常简单。 一堆任务,每个任务有最晚完成时间di,和需要持续的时间ti。 真实安排这些任务时,每个任务有真是的开始时间si和结束时间fi。称一个任务...
  • mmc2015
  • mmc2015
  • 2015年05月03日 21:16
  • 1695

0026算法笔记——【贪心算法】多机调度问题

1、问题描述      设有n个独立的作业{1, 2, …, n}, 由m台相同的机器进行加工处理. 作业i所需时间为t i. 约定:任何作业可以在任何一台机器上加工处理, 但未完工前不允许中断处理...

FCFS 最短最优先调度算法

  • 2013年04月11日 09:21
  • 2KB
  • 下载

[2017/05/18]操作系统调度算法--最短剩余时间优先算法的模拟实现

看了看上次更博还是3月份。。可怕可怕。果然是因为最近沉迷于读书无法自拔啊qwq(明明是因为懒吧啊喂!)今天看到一道OS题, 题目是这样的: 设有四个进程,它们的到达时刻和处理时间如下所示: ...

并行多机调度问题

  • 2013年06月21日 20:30
  • 1.78MB
  • 下载

操作系统实验之磁盘调度算法模拟(最短寻道时间优先SSTF 和 扫描算法SCAN)

操作系统实验之磁盘调度算法模拟(最短寻道时间优先SSTF 和 扫描算法SCAN) 最短寻道时间优先SSTF 要求每次访问的磁道与当前磁头所在的磁道距离最近、 也就是每次访问距离磁头最近的磁道 扫描算...

数据结构程序设计机器调度问题

  • 2016年03月20日 14:41
  • 225KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:并行机器最短调度问题
举报原因:
原因补充:

(最多只允许输入30个字)