参考来源:http://www.cse.iitd.ac.in/~rjaiswal/2012/csl356/
王晓东:计算机算法设计与分析
贪心算法往往不能得到全局最优解,但最终结果确是最优解很好的近似解。
1.基本要素
贪心算法通过一系列的选择来得到问题的解,每个选择都是当前状态下局部最好选择,即贪心选择。这种启发式策略并不能总奏效,但可以用贪心算法求解的问题一般有以下重要性质:
1.1 贪心选择性质
即所求问题的最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法与动态规划的主要区别。
在动态规划中,每步的选择往往依赖于相关子问题的解,求解出相关子问题后做出选择;贪心算法是做出选择后再产生相应的子问题。所以由于这种差别,动态规划通常以自底向上的方式解决问题,贪心算法则以自顶向下的方式进行。
1.2 最优子结构性质
当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。例如,在活动安排问题中,其最优子结构性质表现为:若A是对于E的活动安排问题包含活动1的一个最优解,则相容活动集合是对于
的活动安排问题的一个最优解。
1.3 贪心算法与动态规划的区别