第四章贪心算法思维导图

活动安排问题:

把会场要安排的所有活动作为一个集合W,初始开始时间标准为preStart,初始结束时间标准为preFinal.每次放入W的活动要在满足,开始时间s[i]>preStart的前提下f[i]最小。然后把f[i]赋值给preStart. 依次加入,直到加不进去为止。从而把问题解决。

最优装载问题:

每次都选择最轻的,然后再从剩下的n-1件物品中选择最轻的。把n件物品 从小到大排序,然后根据贪心策略尽可能多的选出前i个物品,直到不能装为止。

哈夫曼编码:

哈夫曼算法以自底向上的方式构造表示最优前缀码的二叉树 T ,算法以 | C | 个叶节点开始,执行 | C | - 1 次的 ” 合并 “ 运算后产生最终所要求的树 T 。设编码字符集中每个字符 c 的频率是 f ( c ) 。以 f 为键值的优先队列 Q 用在做贪心选择时有效确定算法当前要合并的两棵具有最小频率的树。一旦两棵具有最小频率的树合并后,产生一棵新的树,其频率为合并的两棵树的频率之和,并将新树插入优先队列 Q 。

单源最短路径:

设置顶点集合 S ,不断地做贪心选择来扩充这个集合。一个顶点属于集合 S 当且仅当从源到该顶点的最短路径长度已知。初始时,S 中仅有源。设 u 是 G 的某一个顶点,把从源到 u 且中间只经过 S 中顶点的路称为从源到 u 的特殊路径,并用数组 dist 记录当前每个顶点所对应的最短特殊路径长度。Dijkstra 算法每次从 V - S 中取出具有最短特殊路径长度的顶点 u ,将 u 添加到 S 中,同时对数组 dist 做必要的修改。一旦 S 包含了所有 V 中顶点,dist 就记录了从源到所有其他顶点之间的最短路径长度。

多机调度问题:

采用最长处理时间作业优先的贪心选择策略,可以设计出解多机调度问题的较好近似算法。
当 n <= m 时,只要将机器 i 的 [ 0 , ti ] 时间区间分配给作业i即可。
当 n > m 时,先将 n 个作业依其所需的处理时间从大到小排序,再依此顺序将作业分配给空闲的机器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值