一、贪心算法的基本要素(贪心选择性质,最优子结构性质)
对于一个具体的问题,是否可用贪心算法得到问题的最优解呢?问题应具有2个重要的性质∶
1、贪心选择性质
贪心选择性质:是指所求问题的整体最优解,可以通过一系列局部最优的选择,即贪心选择来达到。
贪心选择性质证明方法:一步步的贪心选择(局部最优)最终导致问题的整体最优解。
2、最优子结构性质。
当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。
因为最优解对应最优值,所以通常证明∶问题的最优值包含其子问题的最优值。
二、贪心算法与动态规划算法的差异
·性质相同点︰贪心算法和动态规划算法都要求问题具有最优子结构性质
·性质不同点∶贪心算法要求问题具有贪心选择性质,动态规划算法则不要求。·计算方式的不同:
动态规划算法通常以自底向上的方式解各子问题
贪心算法以自顶往下的方式进行,每做一次贪心选择就将问题变为规模更小的子问题。
三、例子