更多博客,请访问我的个人网站 点此访问
一、概念部分
第一部分比较抽象,建议先大体上浏览一下,有个初步印象,等熟悉第二部分的具体的例题之后,回过头再仔细总结这一部分。
1.1 动态规划法思想
首先说明一点,动态规划(dynamic programming)中的programming指的是一种表格法,而不是编程的意思。动态规划法的思想妙就妙在这个“表格”上。根据动态规划思想,要求解一个问题,先求解它的子问题,然后根据子问题的解,得到该问题的解。而要求解子问题,则要继续求解子问题的子问题,如此可以递归的进行下去。这里需要注意的是,不同的问题,可能具有公共的子问题,这些公共的子问题的解,求解一次之后,问题的解可以记录在表格中,避免多次求解。
1.2 动态规划 VS 分治法
共同点:动态规划与分治法类似,都是通过组合子问题的解来求解原问题。
不同点:分治法将问题划分为互不相交的子问题,递归地求解子问题,再将它们的解组合起来,求出原问题的解;而动态规划法用于子问题重叠的情况。
1.3 适用范围
最优化问题(optimization problem),这类问题可以有很多可行的解,每个解都有一个值