-
动态规划
判断一个问题是否能用动态规划的标准:如果求解一个问题的最优解,而且该问题能够分解成若干个子问题,并且子问题之间还有重叠的更小的子问题,就可以考虑用动态规划来求解。
在应用动态规划之前要先分析能否把大问题分解成小问题,分解后的每个小问题也存在最优解。如果把小问题的最优解组合起来能够得到整体的最优解,那么就可以应用动态规划来解决。
-
贪婪算法
贪婪算法和动态规划不一样,当应用贪婪算法解决问题的时候,每一步都可以做出一个贪婪的选择,基于这个选择,如果确定最后能够得到最优解,那么就可以应用贪婪算法。