动态规划是对分治算法的一种改善,当它发现分解出来的子问题有重叠时,使用自底向上的策略来避免重复计算,从而提高了算法的效率。其特点是在每次做出选择前,将所有选择的效果都进行计算,在此计算的基础上选出最优的选项,所以动态规划的每次选择都是最优的。但是,当可选项的数目巨大时,算法将不堪重负,所以在这种条件下,有必要采用新的算法。
贪心算法的基本策略:一步一步地构建问题的最优解,其中每一步均只考虑眼前的最优选择,即希望通过局部最优达到全局最优。与动态规划不同的是,贪心策略将待要解决的问题分解为一个子问题(而不是动态规划里面的多个子问题),这个选择加上对剩下子问题的最优解将合成对原问题的最优解。贪心算法对解空间进行搜索时,并不是搜遍所有的空间,而是在局部范围内进行择优选取,所以贪心算法最终找到的是一个可行解,而不是所有的解,而且贪心算法并不是总能获得最优解。但是如果一个问具有贪心选择性质,则可以保证贪心算法能够得到最优解。在使用贪心算法时,要抓住两个重要特征:
(1)贪心选择性质:贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择&#