贪心算法在求解最优化问题时,从初始阶段开始,每一个阶段总是做一个使局部最优的贪心选择,
不断将问题化为规模更小的子问题。特就是说,贪心算法并不是从整体最优考虑,他所做出的选择只是在某种意义上的局部最优选择。
贪心算法的应用:如哈夫曼树,单源最短路径,构造最小生成树等
贪心算法求解步骤
- 初始化:已知问题有n个输入,置问题的解集合j为空;
- 选度量标准:根据题意,选取一种度量标准,按照这种度量标准对n个输入排序
- 考察输入:按序一次输入一个量,看该量能否和j中已选出来的元素(称为该量度意义下的部分最优解)加在一起构成新的可行解;如果可以,则把该量并入j集合,从而得到一个新的部分解集合;如果不可以,则丢弃该量,j集合保持不变。之后,继续上述过程,考察下一输入量,直到所有的输入都考察完毕
- 获得贪心解:所有的n个输入都被考虑完毕,则被记入到集合j中的输入量构成了这种量度意义下的问题的最优解、
贪心方法的求解关键
选取能够得到问题最优解的度量标准
如贪心活动:最少教室这种问题可以的标准是会议开始的时间
找零问题:标准可以是纸币面值的大小,即每一步尽可能选面值大的