动态规划1内容提要-理解动态规划算法概念掌握动态规划算法要素掌握设计动态规划算法的步骤.pptxVIP

  • 11
  • 0
  • 约1.07万字
  • 约 65页
  • 2019-10-29 发布于上海
  • 举报

动态规划1内容提要-理解动态规划算法概念掌握动态规划算法要素掌握设计动态规划算法的步骤.pptx

动态规划1内容提要-理解动态规划算法概念掌握动态规划算法要素掌握设计动态规划算法的步骤.pptx

动态规划内容提要: 理解动态规划算法概念 掌握动态规划算法要素 掌握设计动态规划算法的步骤 通过范例学习动态规划算法设计策略15.1 历史及研究问题动态规划(dynamic programming)是运筹学的一个分支,20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(Multistep decision process)的优化问题时,提出了著名的最优性原理,把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。多阶段决策问题:求解的问题可以划分为一系列相互联系的阶段,在每个阶段都需要做出决策,且一个阶段决策的选择会影响下一个阶段的决策,从而影响整个过程的活动路线,求解的目标是选择各个阶段的决策是整个过程达到最优。15.1 历史及研究问题动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),可以人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。动态规划是考察问题的一种途径,或是求解某类问题的一种方法。动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比其它方法求解更为方便。15.1 历史及研究问题基本概念:状态:表示每个阶段开始时,问题或系统所处的客观状况。状态既是该阶段的某个起点,又是前一个阶段的某个终点。通常一个阶段有若干个状态。状态无后效性:如果某个阶段状态给定后,则该阶段以后过程的发展不受该阶段以前各阶段状态的影响,也就是说状态具有马尔科夫性。适于动态规划法求解的问题具有状态的无后效性策略:各个阶段决策确定后,就组成了一个决策序列,该序列称之为一个策略。由某个阶段开始到终止阶段的过程称为子过程,其对应的某个策略称为子策略。15.2 最优性原理Bellman最优性原理:求解问题的一个最优策略序列的子策略序列总是最优的,则称该问题满足最优性原理。注:对具有最优性原理性质的问题而言,如果有一决策序列包含有非最优的决策子序列,则该决策序列一定不是最优的。T(n)n=T(n/2)T(n/2)T(n/2)T(n/2)15.3 总体思想动态规划的思想实质是分治思想和解决冗余动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题n/2n/2n/2n/2T(n)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)n=15.3 总体思想但是经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。n=n/2n/2n/2n/2T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)15.3 总体思想 如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。动态规划法用一个表来记录所有已解决的子问题的答案。具体的动态规划算法尽管多种多样,但它们具有相同的填表方式。T(n)15.3 总体思想 基本步骤:找出最优解的性质,并刻划其结构特征。 ?划分子问题递归地定义最优解的值。 ?给出最优解的递归式按自底向上的方式计算最优解的值。由计算出的结果构造一个最优解。注:步骤①~③是动态规划算法的基本步骤。如果只需要求出最优值的情形,步骤④可以省略;若需要求出问题的一个最优解,则必须执行步骤④,步骤③中记录的信息是构造最优解的基础;15.4 矩阵链乘法问题问题描述: 给定n个矩阵A1, A2, …, An,Ai的维数为pi-1 × pi (1≤i ≤ n),以一种最小化标量乘法次数的方式进行完全括号化。注意:设Ap ×q, A q×r两矩阵相乘,普通乘法次数为p ×q ×r;加括号对乘法次数的影响:15.4 矩阵链乘法问题穷举法:列举出所有可能的计算次序,并计算出每一种计算次序相应需要的数乘次数,从中找出一种数乘次数最少的计算次序。复杂性分析: 用p(n)表示n个矩阵链乘的穷举法计算成本,如果将n个矩阵从第k和第k+1处隔开,对两个子序列再分别加扩号,则可以得到下面递归式: 因此,穷举法不是一个有效算法。15.4 矩阵链乘法问题用动态规划法来求解:步骤1:分析最优解的结构15.4 矩阵链乘法问题步骤2:递归求解最优解的值记m[i][j]为计算A[i:j]的最少乘法数,则原问题的最优值为m[1][n],那么有 取得的k为A[i:j]最优次序中的断开位置,并

文档评论(0)

1亿VIP精品文档

相关文档