有期限的作业调度算法

有期限的作业调度算法

ID:39671187

大小:37.00 KB

页数:4页

时间:2019-07-08

有期限的作业调度算法_第1页
有期限的作业调度算法_第2页
有期限的作业调度算法_第3页
有期限的作业调度算法_第4页
资源描述:

《有期限的作业调度算法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、有期限的作业调度算法一、典型算法贪心算法是以局部最优为原则,通过一系列选择来得到问题的一个最优解,它所做的每一个选择都是当前状态下某种意义上的最佳选择.贪心算法适合于解决这样的问题:局部的最优解能够导致最终结果的最优解。“有限期作业安排问题”描述如下:有n个任务J1,J2,...,Jn,每个任务Ji都有一个完成期限di,若任务Ji在它的期限di内完成,则可以获利Ci(1[i[n);问如何安排使得总的收益最大(假设完成每一个任务所需时间均为一个单位时间).这个问题适合用贪心算法来解决,贪心算法的出发点是每一次都选择利润大的任务来完成以期得到最多的收益;但是对于本问

2、题由于每一个任务都有一个完成的期限,因此在任务安排过程中除了考虑利润Ci外,还要考虑期限di.(一)算法描述1.假设用数组J存储任务,用数组C存储利润,用数组d存储期限,用数组P存储安排好的任务.按照利润从大到小的次序,调整任务的次序:对n个任务J1,J2,...,Jn进行调整,使其满足C1≥C2≥…≥Cn.2.将排序后的任务顺次插入输出数组P.A)任务J[1]排在P[1];B)若已经优先安排了k个任务,则它们满足d[P[i]]≥i(1≤i≤k),即利润较高的k个任务能够在它们的期限内完成.那么,对于第k+1个任务J[k+1],显然C[k+1]≤C[i](1≤i

3、≤k);比较d[k+1]和d[P[k]]:a)若d[k+1]大于d[P[k]],那么将它排在第k+1位(P[k+1]←J[k+1]);b)若d[k+1]小于等于d[P[k]],那么,J[k]能否插入,需比较k和d[P[k]]而定:i)若k等于d[P[k]](其第k个任务已经排在可以满足的最迟时间),那么,因为Ck≥Ck+1,只好放弃任务J[k+1];ii)若k小于d[P[k]](表示第k个任务还有推后的余地):若d[k+1]=k,将第k个任务后移一位(P[k+1]←P[k]),将第k+1个任务排在第k位(P[k]←J[k+1]).若d[k+1]

4、务J[k+1]与第k-1个任务,方法同上.C)重复B)直至处理完最后一个任务.3)输出P.(二)算法实现voidjob-arrangement(char*J[],intd[],intC[],intP[],intn){sort(C,J,d,n);  /*按照降序调整数组C,同时对数组J!d作相应调整*/P[0]=0;d[0]=0;P[1]=1;k=1;for(i=2;i<=n;i++) {r=k; while{(d[P[r]]>=d[i])&&d[P[r]]!=r}r--; if(d[P[r]]r;h--) P[h+1]=P[h

5、]; k++; P[r+1]=i; }output(P,J,n) }(三)算法分析该算法在最坏情况下的时间复杂度是O(n²),在最好情况下的是O(n)二.利用UNION与FIND进行作业排序 利用不相交集合的UNION与FIND算法以及使用一个不同的方法来确定部分解的可行性。如果J是作业的可行子集,那么可以使用下述规则来确定这些作业中的处理时间:若还没给作业I分配处理时间,则分配给它时间片[α-1,α],其中α应尽量取大且时间片[α-1,α]是空的。所以在将作业一个一个地装配到J中时,就不必为接纳新作业而移动J中已分配了时间片的作业。(一)算法描述  给定一批作

6、业X={x,x,…,x},对每个i,与x相关联的d>0和p>0,d是x的时间期限,p是xi的收益,di和pi都是整数,1≤i≤n.1.对X={x1,x2,…,xn}中的元素按pi的非增序重新排列得到{xi1,xi2,…,xin},把新的序列仍记为{x1,x2,…,xn},这时有p1≥p2≥…≥pn.2.令d=max{di1≤i≤n},再令b=min{n,d}.可知有效作业最多是b个.现在设置b个时间单元,每个单位时间区间看作是一个单元,即[0,1],[1,2],…,[b-1,b]看作b个单元,为了讨论方便增加一个辅助单元[-1,0].在每一个时间单元中可以完成一

7、个任务.3.按贪心算法,把{x1,x2,…,xn}依次安排在合适的时间单元中.开始时,每个时间单元都是一个空闲的区间.第一步,我们把x1安排在第di个空闲的区间中.第二步,把第di单元和第di-1单元合并为一个单元.在此,需要定义单元的一个等价类:单元i~单元j当且仅当单元i与单元j的左边(包括本身)的第一个空闲区间相同第三步,考察第i个作业xi时,用Find找出di所在的等价类,设di所在的等价类左边第一个空闲区间为k,则把xi安排在第k个区间,然后将单元k与单元k-1合并.若k=0(第0个单元指[-1,0]),则不能安排xi,即舍弃xi,考察下一个任务xi+

8、1.4.重复3中的第三步

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。