贪心算法
贪心算法原理
• 贪心算法的基本思想
–求解优化问题的算法包含一系列步骤
–每一步都有一组选择
–作出在当前看来好的选择
–希望通过作出局部优化选择达到全局优化选择
贪心选择性 :
若一个优化问题的全局优化解可以通过 局部优化选择得到,则该问题称为具有 Greedy选择性.
一个问题是否具有贪心选择性需证明
– 证明贪心选择的合理性
– 证明优化子结构
– 数学归纳法 过程相同,不是本质 贪心选择性
记住关键是要证明
若一个优化问题的优化解包含它的 子问题的优化解,则称其具有优化 子结构
• 可用贪心方法时,动态规划方法可能不适用
• 可用动态规划方法时,贪心方法可能不适用
• 证明算法所求解的问题具有贪心选择性
• 证明算法所求解的问题具有优化子结构
• 证明算法确实按照贪心选择性进行局部 优化选择
贪心思想: 为了选择最多的相容活动,每次选fi最小 的活动,使我们能够选更多的活动
需要证明
–活动选择问题具有贪心选择性
–活动选择问题具有优化子结构
–算法按照贪心选择性计算解
哈夫曼编码问题
我们需要证明
–优化前缀树问题具有贪心选择性
–优化前缀树问题具有优化子结构
最小生成树
定理1. 设uv是G中权值小的边,则必有一棵 小生成树包含边uv.
本章主要讲解了贪心选择性的证明及其算法的书写,重点学会证明贪心选择性以及优化子结构。