有期限的作业调度算法.doc
《有期限的作业调度算法.doc》由会员分享,可在线阅读,更多相关《有期限的作业调度算法.doc(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、有期限的作业调度算法一、典型算法贪心算法是以局部最优为原则,通过一系列选择来得到问题的一个最优解,它所做的每一个选择都是当前状态下某种意义上的最佳选择.贪心算法适合于解决这样的问题:局部的最优解能够导致最终结果的最优解。“有限期作业安排问题”描述如下:有n个任务J1,J2,.,Jn,每个任务Ji都有一个完成期限di,若任务Ji在它的期限di内完成,则可以获利Ci(1in);问如何安排使得总的收益最大(假设完成每一个任务所需时间均为一个单位时间).这个问题适合用贪心算法来解决,贪心算法的出发点是每一次都选择利润大的任务来完成以期得到最多的收益;但是对于本问题由于每一个任务都有一个完成的期限,因此
2、在任务安排过程中除了考虑利润Ci外,还要考虑期限di.(一)算法描述1假设用数组J存储任务,用数组C存储利润,用数组d存储期限,用数组P存储安排好的任务.按照利润从大到小的次序,调整任务的次序:对n个任务J1,J2,.,Jn进行调整,使其满足C1C2Cn.2将排序后的任务顺次插入输出数组P.A)任务J1排在P1;B)若已经优先安排了k个任务,则它们满足dPi i(1ik),即利润较高的k个任务能够在它们的期限内完成.那么,对于第k+1个任务Jk+1,显然Ck+1 Ci(1ik);比较dk+1和dPk:a)若dk+1大于dPk,那么将它排在第k+1位(Pk+1Jk+1);b)若dk+1小于等于d
3、Pk,那么,Jk能否插入,需比较k和dPk而定:i)若k等于dPk(其第k个任务已经排在可以满足的最迟时间),那么,因为CkCk+1,只好放弃任务Jk+1;ii)若k小于dPk(表示第k个任务还有推后的余地):若dk+1=k,将第k个任务后移一位(Pk+1Pk),将第k+1个任务排在第k位(Pk Jk+1).若dk+1k,则继续比较任务Jk+1与第k-1个任务,方法同上.C)重复B)直至处理完最后一个任务.3)输出P.(二)算法实现voidjob-arrangement(char*J,intd,intC,intP,intn)sort(C,J,d,n); /*按照降序调整数组C,同时对数组J!d
4、作相应调整*/P0=0;d0=0;P1=1;k=1;for(i=2;i=di)&dPr!=rr-; if(dPrr;h-) Ph+1=Ph; k+; Pr+1=i; output(P,J,n) (三)算法分析该算法在最坏情况下的时间复杂度是O(n),在最好情况下的是O(n)二利用UNION与FIND进行作业排序利用不相交集合的UNION与FIND算法以及使用一个不同的方法来确定部分解的可行性。如果J是作业的可行子集,那么可以使用下述规则来确定这些作业中的处理时间:若还没给作业I分配处理时间,则分配给它时间片-1,其中应尽量取大且时间片-1,是空的。所以在将作业一个一个地装配到J中时,就不必为接
5、纳新作业而移动J中已分配了时间片的作业。(一)算法描述 给定一批作业X=x,x,x,对每个i,与x相关联的d0和p0,d是x的时间期限,p是xi的收益,di和pi都是整数,1in.1对X=x1,x2,xn中的元素按pi的非增序重新排列得到xi1,xi2,xin,把新的序列仍记为x1,x2,xn,这时有p1p2pn.2令d=maxdi1in,再令b=minn,d.可知有效作业最多是b个.现在设置b个时间单元,每个单位时间区间看作是一个单元,即0,1,1,2,b-1,b看作b个单元,为了讨论方便增加一个辅助单元-1,0.在每一个时间单元中可以完成一个任务.3按贪心算法,把x1,x2,xn依次安排在
6、合适的时间单元中.开始时,每个时间单元都是一个空闲的区间.第一步,我们把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+1.4重复3中的第三步,直到结束(二)算法实现line procedure FLS(D,n,b,j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 期限 作业 调度 算法
限制150内