最优性原则:子问题的局部最优解将会得出全局最优解。也就是说一个问题的最优解只取决于其子问题的最优解,非最优解对问题的求解没有影响。
例如,最短路径问题。
但是最长路径问题并不满足最优性原则。
动态规划的步骤:
1.设计一个能够表达原问题和原问题的子问题的结构。
2.证明最优性原则成立。
3.使用步骤1中的结构设计出原问题的解和子问题的解的递归的关系,指出递归关系的初始值,和什么时候停止。
4.写出计算递归关系的算法。
步骤1和步骤2可以调换顺序。
步骤3是动态规划的核心,如果没有证明最优性原则,那么就不能有理有据实现步骤3.
当完成以上4步后,一定会得到一个最优解,不需要额外证明解是最优的。
动态规划的应用
the Matrix Chain Problem
the All-Pairs Shortest Path Problem
Optimal Binary Search Trees