边学边记
概念
做出当前最优解
基本要素
1.贪心选择性质
所求问题的整体最优解可以通过一系列局部最优解的选择,即贪心选择来达到
贪心选择:贪心算法通过一系列选择得到来的问题的解,所做的每个选择都是当前状态下局部最好选择
2.最优子结构
当一个问题的最优解包含其子问题的最优解
适用贪心算法的前提:
局部最优解能推导产生全局最优解
实际上,适用贪心算法的情况较少
与动态规划的差异
动态规划
每步所做的选择往往依赖于相关子问题的解,因而只有在解出相关子问题后,才能做出选择。
即先解再选,自底向上
贪心算法
仅在当前状态下做出最好选择,即局部最优选择。再去解做出整个选择后产生的子问题。
贪心选择可以依赖以往所做过的选择,但决不依赖将来所做的选择,也不依赖子问题的解。
即边选边解,自顶向下。
贪心算法以迭代的方式做出相继的贪心选择,每迭代一次,就将所求问题简化为规模更小的子问题
设计过程
第一步:分析问题,抽象出来
实现框架
例如 背包问题的贪心框架
案例
活动安排问题
设计贪心选择方法
证明满足条件
代码设计
最优装载问题
证明过程略 ~
哈夫曼算法
哈夫曼树,数据结构内容,略 ~
多机调度问题
最优分解问题