算法设计的两个例子

算法设计的两个例子

标签(空格分隔): 算法知识文档


例1:调度问题

问题:

有n项任务,每项任务加工时间已知.从0时刻开始陆续安排到一台机器上加工.每个任务的完成时间是从0时刻到任务加工截至的时间.

求:

总完成时间(所有任务完成时间之和)最短的安排方案.

实例:

任务集: S={ 1,2,3,4,5} S = { 1 , 2 , 3 , 4 , 5 }
加工时间: t1=3,t2=8,t3=5,t4=10,t5=15 t 1 = 3 , t 2 = 8 , t 3 = 5 , t 4 = 10 , t 5 = 15

分析:

我们需要计算的是所有任务完成时间之和.因为只有一台机器,所以做第i项任务需等待第i-1项任务做完,我们所要求解的是如何安排做这些任务的顺序使得总时间最小.比如,如果按照实例所给出的5个任务顺序的进行加工,需要的总时间计算如下:

tsum=t1+(t1+t2)+(t1+t2+t3)+(t1+t2+t3+t4)+(t1+t2+t3+t4+t5) t s u m = t 1 + ( t 1 + t 2 ) + ( t 1 + t 2 + t 3 ) + ( t 1 + t 2 + t 3 + t 4 ) + ( t 1 + t 2 + t 3 + t 4 + t 5 )

求得: tsum=35+84+53+102+151=97 t s u m = 3 ∗ 5 + 8 ∗ 4 + 5 ∗ 3 + 10 ∗ 2 + 15 ∗ 1 = 97

贪心算法的解:

算法描述: 优先选择加工时间短的任务先完成
算法: 按照加工时间从小到大排列 (3,5,8,10,15) ( 3 , 5 , 8 , 10 , 15 )
解: 任务加工顺序 (1,3,2,4,5) ( 1 , 3 , 2 , 4 , 5 )

总完成时间: tsum=35+54+83+102+151=94 t s u m = 3 ∗ 5 + 5 ∗ 4 + 8 ∗ 3 + 10 ∗ 2 + 15 ∗ 1 = 94
当前总时间是最小的,后面会给出证明.我们先进行问题的建模.

问题建模

输入:
任务集合: S={ 1,2,3,...,n

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值