任务时间表问题.ppt_第1页
任务时间表问题.ppt_第2页
任务时间表问题.ppt_第3页
任务时间表问题.ppt_第4页
任务时间表问题.ppt_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,4.8.3 任务时间表问题,一个单位时间任务是恰好需要一个单位时间来完成的任务。 给定一个单位时间任务的有限集S。关于S的一个时间表用于描述S中单位时间任务的执行次序。时间表中第1个任务从时间0开始执行直至时间1结束,第2个任务从时间1开始执行至时间2结束,第n个任务从时间n-1开始执行直至时间n结束。 具有截止时间和误时惩罚的单位时间任务时间表问题可描述如下。 (1) n个单位时间任务的集合S=1,2,n; (2) 任务i的截止时间di ,1in,1din,即要求任务i在时间di之前结束; (3) 任务i的误时惩罚wi,1in,即任务i未在时间di之前结束将招致的wi惩罚;若按时完成则无惩

2、罚。 任务时间表问题要求确定S的一个时间表(最优时间表)使得总误时惩罚达到最小。,这个问题看上去很复杂,然而借助于拟阵,可以用带权拟阵的贪心算法有效求解。 对于一个给定的S的时间表,在截止时间之前完成的任务称为及时任务,在截止时间之后完成的任务称为误时任务。 S的任一时间表可以调整成及时优先形式,即其中所有及时任务先于误时任务,而不影响原时间表中各任务的及时或误时性质。 类似地,还可将S的任一时间表调整成为规范形式,其中及时任务先于误时任务,且及时任务依其截止时间的非减序排列。,问题描述,首先可将时间表调整为及时优先形式,然后再进一步调整及时任务的次序。 任务时间表问题等价于确定最优时间表中的

3、及时任务子集A的问题。一旦确定了及时任务子集A,将A中各任务依其截止时间的非减序列出,然后再以任意次序列出误时任务,即S-A中各任务,由此产生S的一个规范的最优时间表。 设AS是一个任务子集,若有一个时间表使得A中所有任务都是及时的,则称A为S的一个独立任务子集。 对时间t=1,2,3,.,n,设Nt(A)是任务子集A中所有截止时间是t或更早的任务数。考察任务子集A的独立性。,引理4.6:对于S的任一任务子集A,下面的各命题是等价的。 (1)任务子集A是独立子集。 (2)对于t=1,2,.n,Nt(A)t。 (3)若A中任务依其截止时间非减序排列,则A中所有任务都是及时的。 任务时间表问题要求

4、使总误时惩罚达到最小,这等价于使任务时间表中的及时任务的惩罚值达到最大。下面的定理表明可用带权拟阵的贪心算法解任务时间表问题。,定理4.7:设S是带有截止时间的单位时间任务表,I是S的所有独立任务子集构成的集合。则有序对(S,I)是拟阵。 由定理4.5可知,用带权拟阵的贪心算法可以求的最大权(惩罚)独立任务子集A,以A作为最优时间表中的及时任务子集,容易构造最优时间表。 任务时间表问题的贪心算法的计算时间复杂性是O(nlogn+nf(n))。 其中f(n)是用于检测任务子集A的独立性所需的时间。用引理4.6中性质(2)容易设计一个O(n)时间算法来检测任务子集的独立性。因此,整个算法的计算时间

5、为O(n2).具体算法greedyJob可描述如下:,di1in,是n个单位时间任务的截止时间,且n个单位时间任务已依其误时惩罚的非增序排列。 wi误时惩罚 jobi最优解中的第i个任务,将第K到r+1个任务依次向后移一位以插入新的任务,给定单位时间任务集S及各任务的截止时间和误时惩罚如下:,最优时间表为2,4,1,3,7,5,6。总误时惩罚为W5+W6=50,达到最小。,i=6, r=4,i=7, r=4,该方法教之前的greedyJob算法的不同之处在于如何确定部分解的可行性方面,两者的度量标准不同。 其方法是:如果Job是任务的可行子集,那么可以使用下述规则来确定这些任务中的每一个任务的

6、处理时间: 若还没给作业i 分配处理时间,则分配给它的时间片-1,其中应尽量取大且时间片-1,是空的。此规则就是尽可能推迟对任务的处理。于是,在将任务一个一个地装配到Job中时就不必为接纳新任务而去移动Job中哪些已经分配了时间片的任务。如果正被考虑的新作业不存在像上面那样定义的,这个作业就不能计入job。,fasterJob算法,public static intfasterJob(intd,intw,intjob,ints) intn=d.length-1; intf=newintn+1; for(inti=0;i0)/任务可放入及时任务中 k=k+1; jobk=i; if(fm1) t=U.Find(fm-1); U.Union(t,m);,elset=0; fm=ft; for(inti=1;i0) job+k=i; sum+=wi; returnsum;/返回最小惩罚数 ,算法fasterJob用到的find和union运算的次数都不超过n次。因此,如果不计预处理的时间,算法fasterJob所需的计算时间为O(nlog*n)。,fasterJob算法,设N=5,wi=(20,15,10,5,1),di=(2,2,1,3,3)。使用fasterJob算法如下:,Job 已分配的时间片 正被考虑的作业 动作, 无

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论