几种算法的区别
每个阶段只有一个状态->递推;
每个阶段的最优状态都是由上一个阶段的最优状态得到的->贪心;
每个阶段的最优状态是由之前所有阶段的状态的组合得到的->搜索;
每个阶段的最优状态可以从之前某个阶段的某个或某些状态直接得到而不管之前这个状态是如何得到的->动态规划。
使用场景
那么什么情况下该使用动态规划呢?
① 最优化原理(最优子结构性质):
如果一个问题的最优策略它的子问题的策略也是最优的,则称该问题具有“最优子结构性质”。
② 无后效性:
当一个问题被划分为多个决策阶段,那么前一个阶段的策略不会受到后一个阶段所做出策略的影响。
③ 子问题的重叠性:
这个性质揭露了动态规划的本质,解决冗余问题,重复的子问题我们可以记录下来,供后阶段决策时直接使用,从而降低算法复杂度。
实质
动态规划这一思想的实质其实是以下两点:
1.分析问题,构造状态转移方程
2.以空间换时间