贪心算法求解多机调度问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

贪心算法求解多机调度问题

设有n项独立的作业{1,2,…, n},由m 台相同的机器加工处理。作业i 所需要的处理时间为台相同的机器加工处理。设有n 项独立的作业由ti。约定:任何一项作业可在任何一台机器上处理,但未完工前不准中断处理;任何作业不能拆分成更小的子作业。多机调度问题要求给出一种调度方案,能拆分成更小的子作业。多机调度问题要求给出一种调度方案,使所给的n 个作业在尽可台机器处理完。利用贪心策略,设计贪心算法解决多机调度问题,能短的时间内由m 台机器处理完。利用贪心策略,设计贪心算法解决多机调度问题,并计算其时间复杂度。

多机调度问题的一个实例:

多机调度问题的一个实例:项独立的作业{1,2,3,4,5,6,7},要由三台机器M1, M2 ,M3 处理。各个作业所需处理。各个作业所需例如设有7 项独立的作业,要的处理时间分别为{2,14,4,16,6,5,3}。利用你设计的贪心算法,要的处理时间分别为。利用你设计的贪心算法,安排作业的处理顺序使得机器处理作业的时间最短。器处理作业的时间最短。

#include

using namespace std;

void Greedy(int t[],int n,int m);

int main() {

int n=7,m=3,t[]={2,14,4,16,6,5,3};//待分配的工作

Greedy(t,n,m);

return 0; }

void Greedy(int t[],int n,int m)

{ int flagn,flagm; int M[]={0,0,0,0,0,0,0,0};

for(int i=0;i

{ int max=0,min=10000;

flagn=0;

flagm=0;

for(int j=0;j

{ if(max

for(j=0;j

{

if(M[flagm]>M[j])

{flagm=j;}

}

M[flagm]=M[flagm]+t[flagn]; t[flagn]=0; //被选择过的机器时间调为0 cout<

相关文档
最新文档