贪心 & 动态规划
相同点:
贪心算法和dp都是一种递推算法,是一种解题的思想
都是由局部最优解来推导全局最优解
不同点:
贪心算法:
1.贪心算法中,作出的每步贪心决策都无法改变,因为贪心策略是由上一步的最优解推导下一步的最优解,而上一部之前的最优解则不作保留。
2.由(1)中的介绍,可以知道贪心法正确的条件是:每一步的最优解一定包含上一步的最优解
3.求最小生成树的Prim算法和Kruskal算法都是漂亮的贪心算法。背包问题。
动态规划:
1.全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有最优解
2.动态规划的关键是状态转移方程,即如何由以求出的局部最优解来推导全局最优解
3.边界条件:即最简单的,可以直接得出的局部最优解
4.计算二项式系数,Warshall算法求传递闭包,Floyd算法求完全最短路径,背包问题,矩阵连乘,最长公共子列