一种更快的作业排序FJS

一种更快的作业排序FJS

题目,算法 来源《计算机算法基础》余祥宣 崔国华 邹海明

给出代码

首先,搞懂一下一些变量是什么意思

F-数组,当前作业可用的最大整数的时间片,因为作业分配是动态的,例如期限是4,起初F(4)=4,(这里的F(i)=时间片[i-1, i])但是在分配过程中,有时F(4)已经分配,这时候F(4) =3,

这样依次进行。

但是在程序中怎么表示这种关系呢?

这就需要用到树的概念,当F(4)已经被使用之后,我们建立一种连接让F(4)指向F(3),这样再考虑下一个作业,如果下一个作业的期限值也是4,那么,我们只需要找到F(4)的根节点例如F(i),那么就可以给作业分配空间[i-1,i]了,当然如果,找到的根节点是0,那代表这个作业不可进行归入可行解,因为已经没有时间片,供他使用。

 

利用贪心法和并查集思想可以获得一个更高效的带期限的作业调度算法-快速作业调度算法JFS。利用该算法求解下面的带期限的作业调度问题。n=7,期限值为:(d1…d7)=(2,4,1,1,3,4,2) 对应的效益值为(p1…p7)=(30,25,23,18,15,10,9)。

 

 

 

  • 8
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值