正在加载图片...
第一种方法是基于问题的这样一个特点,即每项作业都是在单位 时间内完成的,因此,只要关注截止期限的不增序列是否可以插入其 它的作业期限即可。假设已经安排的作业的期限已经按递增的顺序排 好:DG)≤D(i2)≤…≤D(k),则下一个具有期限D()的作业可 以插入D()≤D(+1)如果下述两个条件满足: a).max{DG)q+1}≤D(); b). D()<D(g+1), D(i)>l for q<lsk 按这个准则,得到算法 GreedyInsertJob 带限期作业的贪心插入算法 GreedyInsertJob(D,J,n,k)∥D(1),…,D(n)是期限值。作业已按效 ∥益值p的不增顺序排列。J是最优解中第i个作业,终止时 ∥被选中的作业按期限值的不减次序排列D[J[i]≤D[J[+1] //1≤i<k integer D[O: n], J[O: n], 1,k,n,r D[O}=J[0]=0,∥始化 k=1;J[1]=1;∥初始记入作业 for i from 2 to n do k while DJ[r]PDi]&& du[[tr do endwhile if DJ[r]D[&&D[} r then/把作业i插入J第一种方法是基于问题的这样一个特点,即每项作业都是在单位 时间内完成的,因此,只要关注截止期限的不增序列是否可以插入其 它的作业期限即可。假设已经安排的作业的期限已经按递增的顺序排 好: ( ) ( ) ( ) 1 2 k D j ≤ D j ≤L≤ D j ,则下一个具有期限 D(i)的作业可 以插入 ( ) ( ) q ≤ q+1 D j D j 如果下述两个条件满足: a). max{D( j ), q 1} D(i) q + ≤ ; b). D i D j D j l for q l k ( ) < ( q+1), ( l) > < ≤ 。 按这个准则,得到算法 GreedyInsertJob: 带限期作业的贪心插入算法 GreedyInsertJob(D, J, n, k) // D(1), … , D(n)是期限值。作业已按效 //益值 pi的不增顺序排列。J[i]是最优解中第 i 个作业,终止时 //被选中的作业按期限值的不减次序排列 D[J[i]]≤ D[J[i+1]], //1≤ i<k. integer D[0:n], J[0:n], i, k, n, r ; D[0]=J[0]=0; //初始化 k=1; J[1]=1; //初始记入作业 for i from 2 to n do r=k; while D[J[r]]>D[i] && D[J[r]]≠r do r=r-1; endwhile if D[J[r]]≤D[i] && D[i]>r then //把作业 i 插入 J
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有