动态规划
动态规划与分治方法类似,都是通过组合子问题的解来求解原问题。而分治方法将问题划分为不相交的子问题,递归地求解子问题,再将解组合起来,求出原问题的解。与之相反,动态规划应用于子问题重叠情况,即不同的子问题具有公共的子子问题。在这种情况下,用分治方法求解,会反复求解那些公共子子问题。
事实上,子问题的个数是已知,那么我们可以把子问题的解求出来后,存储起来,下次需要时直接使用,便可以大大提高程序的效率。
下面介绍一下动态规划的相关概念。首先动态规划是来解决最优化问题的,再进一步说就是解决最优化问题中的多阶段决策问题。
以下是动态的定义内容,在各种基础书籍上都有相关讲解,在此仅列出,不做累述。
状态(State):表示事物的性质,是描述动态规划中的单元的量。
阶段(Stage):阶段是一些性质相近的状态集合。
决策(Decision):每个阶段做出的某种选择性行动,是程序所需要完成的选择。
状态转移方程(Equal):是前一个阶段的状态转移到后一个的状态的演变规律,是关于两个相邻阶段状态变化的方程,是动态规划的核心。
初始状态:由已知能够确定的状态。
目标状态:表示解或能够转化为解的状态。
后面会陆续介绍动态规划的相关算法。