动态规划思想入门作者:陈喻(2008年10月7日)关键字:动态规划,最优子结构,记忆化搜索引言动态规划(dynamicprogramming)是运筹学的一个分支,是求解决策过程(decisionprocess)最优化的数学方法
20世纪50年代初美国数学家R
Bellman等人在研究多阶段决策过程(multistepdecisionprocess)的优化问题时,提出了著名的最优化原理(principleofoptimality),把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程优化问题的新方法——动态规划
1957年出版了他的名著DynamicProgramming,这是该领域的第一本著作
动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用
例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题用动态规划方法比用其它方法求解更为方便
虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解
动态规划的基本思想动态规划是:将待求的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它直接求解,并把答案保存起来,让以后再次遇到是直接引用答案,不必从新求解,其实质是分治思想和解决冗余
例1:求A—>B的最短路径图1这是一个利用动态规划思想的经典问题,通过直接观察图1我们可以枚举出20多条路径,并可以计算出其中最短的路径长度为16用动态规划的思想来分析,我们可以把这个问题转换成下面这个模型阶段图2阶段:根据问题的特点和需要,将问题按时间或空间特征分解为若干相互联系的阶段
在本例中,我们根据空间特性将问题分成了6个阶段