基本知识回顾
- 贪心算法的基本要素
- 最优子结构性质:一个问题的最优解包含其子问题的最优解时,称这个问题具有最优子结构性质
- 贪心选择性质:所求问题的整体最优解可以通过一系列的局部最优解选择,也就是贪心选择来得到。
- 这也是贪心算法对于最优解问题可行的基本要素,是贪心算法区别于动态规划算法的主要区别
- 如果要使用贪心算法,一定要证明由算法所得到的解是最优的,通过局部最优可以得到整体最优
如何证明问题具有贪心选择性质
- 对于一个具体的问题,确定是否具有贪心选择的性质,必须证明每一步所作的贪心选择最终导致问题的整体的最优解
样例一:活动安排问题
- 分为两步:
- 证明总存在一个以贪心选择开始的最优活动安排方案
- 再证明每一步所作的贪心选择都将问题简化为一个更小的与原问题具有相同形式的子问题
问题描述
总有一个以贪心选择为开始的最优解
- 每一步所作的贪心选择都将问题简化为一个更小的与原问题具有相同形式的子问题
样例二、最优装载的贪心性证明
- 对于一个具体的问题,要确定她是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解
问题描述
证明过程
- 证明贪心性分两步
- 首先证明最佳装载问题有一个最优解以贪心选择开始的,即该最优解包含最轻的物体
- 然后证明每一个所作的贪心选择都将问题简化为一个更小的与原问题具有相同形式的子问题
- 该问题有一个最优解是贪心选择开始的
- 每一个所作的贪心选择,都将问题转化为与更小的与原问题相同形式的子问题
分析与总结
- 但愿考到
- 照葫芦画瓢,理解起来都好办