- 一、概念
- 二、程序
- 三、练习
- 四、思考题
- 一、概念
- 二、程序
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、习题
- 四、思考题
- 一、题目描述
- 二、常规方法
- 三、常规方法的比较次数
- 四、方法改进一
- 五、第一次循环的可用信息
- 六、根据第一遍的可用信息作第二次循环
- 七、方法改进一的伪代码
- 八、方法改进一的比较次数
- 九、方法改进二
- 十、方法改进二的比较次数
- 十一、代码
- 一、概念
- 二、代码
- 三、练习
- 一、概念
- 二、代码
- 三、练习
- 一、概念
- 二、代码
- 三、练习
- 一、概念
- 二、练习
- 一、概念
- 二、代码
- 三、习题
- 一、概念
- 二、代码
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 四、思考题
- 一、综述
- 二、活动选择问题
- 三、贪心策略的基本内容
- 四、哈夫曼编码
- 五、思考题
- 一、定义
- 二、代码
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、练习
- 四、思考题
- 一、综述
- 二、理解
- 三、改进
- 四、代码
- 五、习题
- 四、思考题
- 一、综述
- 二、代码
- 三、练习
- 四、思考题
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
三、贪心策略的基本内容
(1)练习
16.2-2
经典的 0-1 背包问题
16.2-3
根据假设 w_1 <= w_2 <= ... <= w_n 并且 v_1 >= v_2 >= ... >= v_n。
贪心选择性质:如果该背包问题有解,则一定存在一个最优解包含物品 1。
证明:给定一个最优解,如果已经包含物品 1,则证明结束。否则用物品 1 替代背包中任何一个物品 i,因为 w_1 <= w_i,所以替换一定是可行的;其次,v_1 >= v_i,所以价值一定不会减小。可见替换后仍然是一个最优解。所以从按物品 1,2,...的顺序加入背包,直到不能加入为止。
16.2-4
设 ai 表示第 i 个加油站一第 i-1 个加油站的距离。
最后一次加满了油是在第 j 个站(j 初始时为 0)
若第 k 个站满足 aj + a|j+1 + …… +ak <= n 且 aj + a|j+1 + …… +a|k+1 > n,那么他应该在第 k 个站处加油
16.2-5
对所有点进行从小到大的排序,然后每次取值最小的点 xi,把区间[xi,xi+1]加入到所求的区间集合中,并把属于区间[xi,xi+1]的点 xj 从点集中除去。
16.2-6
常规算法:
先求 avgi= vi/wi,按照 avgi 从大到小排序,再贪心选择,时间复杂度为 O(nlgn)
改进:
更一般的情况,不需要排序,例如:如果 a1, a2,a3 是 avgi 最大的三个物品,如果它们的总量和不大于 W,我们是不需要知道它们间的相对顺序的。
O(n) 算法:
选择一个物品作为主元,对所有物品进行 Paitition 操作。将 avg 分为三个集合 G = {ai: avgi< m}, Q = {ai:avgi= m}, P = {ai: avgi> m}。分别对 G, Q, P 中元素求和得 SG, SQ, SP。
如果 W < SG, 则令物体的集合为 O = G,对集合 O 递归进行上述过程。
如果 SG<=W <= SG+SQ,则将集合 G 中的元素都放入包中,并将集合 Q 总元素尽可能多的放入包中,结束。
- 如果 SG+SQ < W, 将 G,Q 中元素放入包中。令物体集合 O = P,总重 W = W - SG - SQ。递归进行上述过程。
16.2-7
对集合 A 和 B 进行排序,每次取最大值,计算 a^b
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论