首先我们先代入问题来认识一下贪心算法涉及的问题
找钱问题
给顾客找钱,希望找零的钞票尽可能少,零钱种类和数量限定
找钱问题满足最优子结构
最快找零(贪心):为得到最小的找零次数,每次最大程度低减少零额
活动安排问题
设 个活动都需要使用某个教室,已知它们的起始时间和结束时间,求合理的安排使得举行的活动数量最多
贪心:使得每次安排后,教室的空闲时间最多
解决过程如下:
贪心算法求得的相容活动集是最大的
第一步:证明最优解中包含结束时间最早的活动
设相容集 A 是一个最优解,其结束最早的活动为 a,则 ( A - { a }) U { 1 } 也是一个最优解
第二步:证明去掉结束时间最早的活动后,得到的子问题仍是最优的:反证法
理解贪心算法
贪心算法总是做出当前最好的选择
- 贪心选择的依据是当前的状