第3章 动态规划_作业-3.22
- 格式:ppt
- 大小:629.50 KB
- 文档页数:25
动态规划讲解大全含例题及答案动态规划讲解大全动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。
20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。
1957年出版了他的名著Dynamic Programming,这是该领域的第一本著作。
动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。
例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。
虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。
动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。
不象前面所述的那些搜索或数值计算那样,具有一个标准的数学表达式和明确清晰的解题方法。
动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的设计方法对不同的问题,有各具特色的解题方法,而不存在一种万能的动态规划算法,可以解决各类最优化问题。
因此读者在学习时,除了要对基本概念和方法正确理解外,必须具体问题具体分析处理,以丰富的想象力去建立模型,用创造性的技巧去求解。
我们也可以通过对若干有代表性的问题的动态规划算法进行分析、讨论,逐渐学会并掌握这一设计方法。
基本模型多阶段决策过程的最优化问题。
在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果。
第3 章动态规划3.1 用表代替递归3.2 0-1背包问题3.3 矩阵链乘问题3.4 动态规划的基本元素3.5 备忘录方法3.6 装配线调度问题3.7 最长公共子序列3.8 最优二分检索树3.9 凸多边形最优三角剖分3.1 用表代替递归时的递归结构,由图3-1是利用递归算法计算斐波那契数F7此可见,重复计算的子问题数导致了指数级的复杂度。
,递归算法进行了多次重叠子问题图3-1表明,为了计算F7的递归调用,而这些重叠子问题导致了指数级的算法。
在这个例=8的子中,在第二次调用中忽略了前次调用所做的计算。
计算F6递归调用如图3-2所示。
树中每一个节点代表所计算的斐波那契数。
由于多重递归,导致了大量重复计算。
113832152353221 211111 1111111111111图3-1 计算斐波那契数算法的递归结构(n=7)第3 章动态规划1 F (1)8 F (6)5 F (5)3 F (4)2 F (3)1 F (2)1 F (1)0 F (0)1 F (2)1 F (1)0 F (0)2 F (3)1 F (1)1 F (2)1 F (1)0 F (0)3 F (4)2 F (3)1 F (2)1 F (1)1 F (2)1 F (1)0 F (0)1 F (1)与此相应,如果我们用一个数组作为数据结构,将计算的:前n个数存储在数组中,就可以用线性时间计算斐波那契数Fn F[0]← 0;F[1]← 1;for i← 2 to ndo F[i]←F[i-1]+F[i-2]计算结果F呈指数级增长,但是,所需数组规模较小。
例如,nF45=1836311903是32位整数所能表示的最大斐波那契数,因此,大小为46的数组即可。
这种技术为我们得到递归关系的数值解提供了直接途径。
在斐波那契数的情形下,我们甚至可以省略数组,只保存前两个数值;对于遇见的其他情形,也可能需要保存所有已知数值的一个数组。
递归方程是值为整数的递归函数。