一.贪心算法的概念
顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体
最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得
到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对
许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况
下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。
二.贪心算法的基本要素
(1)最优子结构性质
当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。问题的最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征
(2)贪心选择性质
所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,
即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态
规划算法的主要区别。
动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下
的方式进行,以迭代的方式作出相继的贪心选择,每作一次贪心选择就将所求问
题简化为规模更小的子问题。
三.贪心算法与动态规划算法的差异
贪心算法:
1.贪心算法中,作出的每步贪心决策都无法改变,因为贪心策略是由上一步的最优解推导下一步的最优解,而上一部之前的最优解则不作保留。
2.贪心法正确的条件是:每一步的最优解一定包含上一步的最优解。
动态规划算法:
1.全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有最优解
2.动态规划的关键是状态转移方程,即如何由以求出的局部最优解来推导全局最优解
3.边界条件:即最简单的,可以直接得出的局部最优解
1.贪心算法中,作出的每步贪心决策都无法改变,因为贪心策略是由上一步的最优解推导下一步的最优解,而上一部之前的最优解则不作保留。
2.贪心法正确的条件是:每一步的最优解一定包含上一步的最优解。
动态规划算法:
1.全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有最优解
2.动态规划的关键是状态转移方程,即如何由以求出的局部最优解来推导全局最优解
3.边界条件:即最简单的,可以直接得出的局部最优解