如何分析这个问题的最优子结构

ustcxp 2003-12-08 02:26:30
两台处理机a和b处理N个作业,第i个作业给a处理需要a[i]时间,给b处理b[i]时间,现要求每个作业只能由一台机器处理,每台机器不能同时处理两个作业,设计一个动态规划算法,使得两台机器可以同时处理这n个作业的时间最短.
...全文
240 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ustcxp 2003-12-21
  • 打赏
  • 举报
回复
实例:a[6]={2,5,7,10,5,2},b[6]={3,8,4,11,3,4}。
我在南大bbs上问来的最优子结构分析是这样的:
设F[i][x]表示已经做了1..i号工作,机器A化了x小时的情况下,机器B所花时间的最小值
则有最优方程:
F[i][x] = min{F[i-1][x] + b[i], F[i-1][x - a[i]]}
其中F[i-1][x] + b[i] 表示第i个工作由B完成,F[i-1][x - a[i]]表示第i个工作由A完成
最后在F[n][1.. MAX_X]中选择 max(F[n][j], j) 最小的一个即可。

大家帮我看看这个解答到底是怎么回事啊?
谁能把这个实例按这个分析,写一下?多谢了
--
3echo 2003-12-13
  • 打赏
  • 举报
回复
我想用平衡二叉树 可以吗
3echo 2003-12-13
  • 打赏
  • 举报
回复
贪心算法 我一下子不记得了
要用哈夫曼编码吗?
zhushizu 2003-12-12
  • 打赏
  • 举报
回复
每次选择的都是最效率最高的方法!
同时还要考虑给谁执行作业:
min{a[i],b[i]}

不过这个问题要用贪心法来做更直观哦!

呵呵

gushaoping 2003-12-12
  • 打赏
  • 举报
回复

用数组来做.
ustcxp 2003-12-11
  • 打赏
  • 举报
回复
能不能说的详细一点,不懂的说
geeksky 2003-12-09
  • 打赏
  • 举报
回复
让a尽可能多的解决最长的工作

然后b解决时间比a少的工作就行了

状态转移方程想想就知道了

33,028

社区成员

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

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