动态规划和贪心算法都是一种递推算法 均用局部最优解来推导全局最优解
不同点:
贪心算法:
1.贪心算法中,作出的每步贪心决策都无法改变,因为贪心策略是由上一步的最优解推导下一步的最优解,而上一部之前的最优解则不作保留。
2.由(1)中的介绍,可以知道贪心法正确的条件是:每一步的最优解一定包含上一步的最优解。
典型的贪心算法:给定一个二维数组,每一行取一个数求和,要求和最大,只需要求出每一行的最大值即可。要求A最大,只需求B最大,要求B最大,只需要求C最大,问题可以顺藤摸瓜不断的转换成最终的子问题,全局最优是有最终的局部最优转化而成的。
动态规划算法:
1.全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有最优解
2.动态规划的关键是状态转移方程,即如何由以求出的局部最优解来推导全局最优解
3.边界条件:即最简单的,可以直接得出的局部最优解
典型的动态规划问题:0-1背包问题,给定n种物品(每种物品只有一种,只有放入和不放入两种状态)和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?这种问题只能求出所有的组合,然后取价值最大的情况。