第一次发帖,请各位高手看下下面这个问题的优化子结构是什么,点数不多,请大家见谅。。

mjf05 2010-06-02 08:44:26
这是算法导论上的一道动态规划题:假设有一台机器,以及在此机器上处理的n个作业a1,a2,...an的集合。每隔作业aj有一个处理时间tj,效益pj,以及最后期限dj。机器在一个时刻只能处理一个作业,而且作业aj必须在tj连续时间单位内不间断地运行。如果作业aj在最后期限dj之前完成,则获得效益pj,但如果在最后期限之后才完成,则没有效益。请给出一个动态规划算法,来寻找能获得最大量效益的调度,假设所有的处理时间都是1到n之间的整数。
...全文
111 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
michael122 2010-06-02
  • 打赏
  • 举报
回复
假设n个作业是按照最后期限dj的升序排列
这样问题及类似于01背包:第i个作业要不要做?
设函数f(i,x)表示当前是作业i且机器时间已经占用了x的情况下的最大效益(只表示作业i,...,n的最大效益)
则如果 x+ti<=di, f(i,x)=max{f(i+1,x+ti)+pi, f(i+1,x)}
若x+ti>di,则f(i,x)=f(i+1,x)
边界条件: 如果x+tn<=dn, 则f(n,x)=pn 否则f=0

这样应该就行了
fanster28_ 2010-06-02
  • 打赏
  • 举报
回复
这个都满足贪心条件的,不用动态规划
mjf05 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 michael122 的回复:]
假设n个作业是按照最后期限dj的升序排列
这样问题及类似于01背包:第i个作业要不要做?
设函数f(i,x)表示当前是作业i且机器时间已经占用了x的情况下的最大效益(只表示作业i,...,n的最大效益)
则如果 x+ti<=di, f(i,x)=max{f(i+1,x+ti)+pi, f(i+1,x)}
若x+ti>di,则f(i,x)=f(i+1,x)
边界条件: 如果x+tn<……
[/Quote]
恩,有道理。结贴了,有问题再请教你啊,呵呵。我想到了01背包问题,但是一直想好怎么处理任务期限
mjf05 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fanster28_ 的回复:]
这个都满足贪心条件的,不用动态规划
[/Quote]
不是吧,如果是平均最短执行时间,最大相容任务子集,应该是满足贪心条件的。这个不太一样。

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧