【教学课件】第3章动态规划.ppt
《【教学课件】第3章动态规划.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第3章动态规划.ppt(136页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章 动态规划3.1 3.1 动态规划法的基本概念动态规划法的基本概念3.2 3.2 动态规划法的应用专题动态规划法的应用专题算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 2 动态规划|动态规划(动态规划(Dynamic Programming)20世纪世纪50年代美国数学家贝尔曼(年代美国数学家贝尔曼(Richard Bellman)为研究最优控制问题而提出的。为研究最优控制问题而提出的。动态规划是运筹学的一个分支,是求解决策过程动态规划是运筹学的一个分支,是求解决策过程最优化的数学方法。最优化的数学方法。应用:应用:n动态
2、规划问世以来,在经济管理、生产调度、动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。工程技术和最优控制等方面得到了广泛的应用。算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 3 3.1 动态规划的基本概念3.1.1 什么是动态规划什么是动态规划n例例1:计算斐波那契数:计算斐波那契数3.1.2 动态规划的求解方法动态规划的求解方法n例例2:多段图的最短路径问题:多段图的最短路径问题n例例3:街道问题:街道问题n例例4:数字三角形问题:数字三角形问题3.1.3 动态规划小结动态规划小结3.1.4 矩
3、阵连乘问题矩阵连乘问题算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 4 3.1.1 什么是动态规划|动态规划是求解包含动态规划是求解包含重叠子问题重叠子问题的最优化方法的最优化方法基本思想:基本思想:n将原问题分解为相似的子问题,在求解的过程中通过子将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解(注意:不是简单问题的解求出原问题的解(注意:不是简单分而治之分而治之)。)。原问题的解原问题的解原问题原问题填填表表子问题子问题1子问题子问题2子问题子问题n算法设计与分析算法设计与分析动态规划动态规划 四川师范
4、大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 5 例1:计算斐波那契数|方法一:分治法方法一:分治法long fib(int n)long p;if(n=0|n=1)return n;else p=fib(n-1)+fib(n-2);return p;算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 6 法1:分治法|计算斐波那契数的过程(计算斐波那契数的过程(n=5)冗余计算f(5)f(3)f(2)f(1)f(2)f(4)f(0)f(1)f(0)f(3)f(2)f(1)f(1)f(0)f(1)11001010算法设计与
5、分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 7 法2:动态规划法|分析:分析:计算计算f(n)是以计算它的两个重叠子问题是以计算它的两个重叠子问题 f(n1)和和f(n2)的形式来表达的,所以,可以设计一张表填的形式来表达的,所以,可以设计一张表填入入n1个个f(n)的值。的值。动态规划法求解斐波那契数动态规划法求解斐波那契数f(9)的填表过程的填表过程01234567890112358132134算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 8 3.1.1 什么是动态规
6、划|动态规划法的设计思想:动态规划法的设计思想:将待求解问题分解成若干个将待求解问题分解成若干个相互重叠相互重叠的子问题,每个的子问题,每个子问子问题题对应决策过程的对应决策过程的一个阶段一个阶段。一般来说,子问题的重叠关系表现在对给定问题求解的递一般来说,子问题的重叠关系表现在对给定问题求解的递推关系(也就是动态规划函数)中。推关系(也就是动态规划函数)中。将子问题的解求解一次并将子问题的解求解一次并填入表填入表中,当需要再次求解此子中,当需要再次求解此子问题时,可以通过查表获得该子问题的解而不用再次求解,问题时,可以通过查表获得该子问题的解而不用再次求解,从而从而避免了大量重复计算避免了大
7、量重复计算。S0P1P2Pn多阶段决策过程多阶段决策过程S1S2Sn-1Sn算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 9 动态规划与分治法的异同点|相同点:相同点:动态规划算法与分治法类似,其基本思想也是将待求解问动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题或分为若干级(阶段),然后顺序题分解成若干个子问题或分为若干级(阶段),然后顺序求出各个子问题。求出各个子问题。|区别:区别:动态规划法:动态规划法:n经分解得到的子问题往往不是互相独立的。不同子问题经分解得到的子问题往往不是互相独立的。不同子问
8、题的数目常常只有多项式量级。的数目常常只有多项式量级。分治法:分治法:n经分解得到的子问题往往是互相独立的,在用分治法求经分解得到的子问题往往是互相独立的,在用分治法求解时,有些子问题被重复计算了许多次。解时,有些子问题被重复计算了许多次。算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 10 3.1.1 什么是动态规划|动态规划的基本要素动态规划的基本要素重叠子问题性质重叠子问题性质n能够分解为相互重叠的若干子问题;能够分解为相互重叠的若干子问题;n在用分治算法自顶向下对问题进行求解时,每次产生的在用分治算法自顶向下对问题进行求解
9、时,每次产生的子问题并不总是新问题,有些子问题可能被重复计算多子问题并不总是新问题,有些子问题可能被重复计算多次。次。动态规划算法利用此性质,对每个子问题只计算一动态规划算法利用此性质,对每个子问题只计算一次,然后将其结果保存起来以便高效重用次,然后将其结果保存起来以便高效重用。最优化子结构性质最优化子结构性质n若问题的最优解所包含的子问题的解也是最优的,则称若问题的最优解所包含的子问题的解也是最优的,则称该问题具有最优子结构性质(即满足最优化原理)该问题具有最优子结构性质(即满足最优化原理)算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院
10、刘芳刘芳 11 3.1.2 动态规划的求解方法|求解方法求解方法1.把问题分成许多个子问题(一般地每个子问题把问题分成许多个子问题(一般地每个子问题是互相关联和影响的)是互相关联和影响的)2.依次研究逐个问题的决策。依次研究逐个问题的决策。n常见的处理方法:常见的处理方法:u向前处理法向前处理法(forward approach):u向后处理法向后处理法(backward approach)算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 12 例2:多段图的最短路径|多段图多段图1 12 23 35 54 46 67 78 89
11、9101012 242 23 33 32 24 41 12 24 43 35 56 6 阶段阶段1 1阶段阶段2 2阶段阶段3 3阶段阶段4 4阶段阶段5 5算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 13 例2:多段图的最短路径|多段图多段图多段图多段图G(V,E)是一个有向图。是一个有向图。它有如下特点:它有如下特点:n图中结点被分成图中结点被分成 k 2个不相交的集合个不相交的集合Vi(1 i k);n其中:其中:V1和和Vk 分别只有一个结点分别只有一个结点s(源点源点)和和t(终点终点)。n图中的边图中的边(u,v)
12、有如下性质:若有如下性质:若u Vi,则则v Vi+1,(1 i k-1)。|多段图问题多段图问题求多段图中由求多段图中由s(源点)源点)到到t(终点)的最小成本路径。终点)的最小成本路径。算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 14 例2:多段图的最短路径|例如:例如:1 12 23 35 54 46 67 78 89 9101012 242 23 33 32 24 41 12 24 43 35 56 6 阶段阶段1 1阶段阶段2 2阶段阶段3 3阶段阶段4 4阶段阶段5 5算法设计与分析算法设计与分析动态规划动态规划
13、四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 15 例2:多段图的最短路径|1.分解最优解的结构分解最优解的结构不难说明多段图问题具有最优子结构性质。不难说明多段图问题具有最优子结构性质。|2.建立递归关系建立递归关系(1)向前处理法向前处理法n设设c为图的代价矩阵为图的代价矩阵n设设p(i,j)是一条从集合是一条从集合Vi中的结点中的结点j到终点到终点t的最小的最小成本路径;成本路径;ncost(i,j)是这条路径的成本。是这条路径的成本。算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 16 例2:多段图的最
14、短路径显然有:显然有:初始时,初始时,算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 17 例2:多段图的最短路径|3.计算最优值计算最优值V1 V2 V3 V4 V51 12 23 35 54 46 67 78 89 910101 12 24 42 23 33 32 24 41 12 24 43 35 56 6算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 18 例2:多段图的最短路径|4.根据计算最优值时得到的信息,构造最优解。根据计算最优值时得到的信息,构造最优
15、解。算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 19 例2:多段图的最短路径当然也可以采用:向后处理法当然也可以采用:向后处理法n设设BP(i,j)是一条从是一条从源点源点s到到集合集合Vi中的结点中的结点j的最的最小成本路径小成本路径;nBcost(i,j)是这条路径的成本。是这条路径的成本。算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 20 例2:多段图的最短路径显然有:显然有:初始时,初始时,算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师
16、范大学 计算机科学学院计算机科学学院 刘芳刘芳 21 例2:多段图的最短路径V1 V2 V3 V4 V51 12 23 35 54 46 67 78 89 910101 12 24 42 23 33 32 24 41 12 24 43 35 56 6算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 22 练习2120345678949387684756866537 一个多段图一个多段图最短路径:最短路径:03589,长度为,长度为16。算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学
17、院 刘芳刘芳 23 应用实例|路径规划路径规划车辆卫星定位系统车辆卫星定位系统路径规划:路径规划:n基于具有拓扑结构的道路网络,在车辆驶前或基于具有拓扑结构的道路网络,在车辆驶前或行驶过程中寻找车辆从起始点到目的地的最佳行驶过程中寻找车辆从起始点到目的地的最佳行驶路线的过程,它是多段图最短路径问题。行驶路线的过程,它是多段图最短路径问题。算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 24 例3:街道问题|问题描述:问题描述:在一个如下图所示的正方形组成的矩形地图中中在一个如下图所示的正方形组成的矩形地图中中找出从左下角到右上角的
18、最短路径,每步只能向找出从左下角到右上角的最短路径,每步只能向右方或上方走。右方或上方走。算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 25 状态转移方程(动态规划函数):状态转移方程(动态规划函数):算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 26 例4:数字三角形问题|数字三角形(数字三角形(P90)问题描述问题描述分析分析n穷举法穷举法n动态规划法动态规划法13118267121415671312118241311872612141567131211824
19、算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 27|动态规划函数动态规划函数算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 28 3.1.3 动态规划小结|1.动态规划基本步骤动态规划基本步骤找出最优解的性质,并刻划其结构特征找出最优解的性质,并刻划其结构特征递归地定义最优值递归地定义最优值计算最优值计算最优值根据计算最优值时得到的信息,构造最优解根据计算最优值时得到的信息,构造最优解算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学
20、学院计算机科学学院 刘芳刘芳 29 3.1.3 动态规划小结|2.应用动态规划法要注意:应用动态规划法要注意:阶段的划分是关键阶段的划分是关键最优化原理应在子问题求解中体现最优化原理应在子问题求解中体现 算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 30 3.1.3 动态规划小结|动态规划与分治法动态规划与分治法 相同点相同点不同点不同点|动态规划较之于穷举法的优势动态规划较之于穷举法的优势大大减少了计算量大大减少了计算量丰富了计算结果丰富了计算结果 算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机
21、科学学院计算机科学学院 刘芳刘芳 31 矩阵连乘问题|两个矩阵相乘两个矩阵相乘若若A是是pq矩阵,矩阵,B是是qr矩阵矩阵,则矩阵相乘运算共要:则矩阵相乘运算共要:pqr次乘法次乘法.|矩阵连乘矩阵连乘给定给定n个矩阵个矩阵A1,A2,An,其中,其中Ai与与Ai+1是可是可乘的,乘的,考察这考察这n个矩阵的连乘积个矩阵的连乘积 A1 A2 An问题:问题:n如何确定最优计算顺序?如何确定最优计算顺序?算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 32 3.1.4 矩阵连乘问题|例例1:设有三个矩阵设有三个矩阵A1,A2,A3,
22、它们的维数分别是它们的维数分别是n A1 10100,A2 1005,A3 550,则:则:则:则:(1)计算)计算(A1A2)A3)共需要共需要:n10*100*5+10*5*507500 乘法乘法(2)计算)计算(A1(A2A3)共需要共需要n100*5*50+10*100*5075000 乘法乘法算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 33 3.1.4 矩阵连乘问题|例例2:设有四个矩阵设有四个矩阵ABCD,它们的维数分别是:它们的维数分别是:16000 1050036000 8750034500算法设计与分析算法设
23、计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 34 3.1.4 矩阵连乘问题|因此:因此:由于矩阵乘法满足结合律,所以计算矩阵的连乘可以有许由于矩阵乘法满足结合律,所以计算矩阵的连乘可以有许多不同的计算次序。这种计算次序可以用多不同的计算次序。这种计算次序可以用加括号的方式加括号的方式来来确定。确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已积已完全加括号完全加括号,则可以依此次序反复调用,则可以依此次序反复调用2个矩阵相乘个矩阵相乘的标准算法计算出矩阵连乘积。的标准算法计算出矩阵连乘积
24、。|完全加括号的矩阵连乘积可递归地定义为:完全加括号的矩阵连乘积可递归地定义为:单个矩阵是完全加括号的;单个矩阵是完全加括号的;矩阵连乘积矩阵连乘积 A是完全加括号的,则是完全加括号的,则A可表示为可表示为2个完全加括个完全加括号的矩阵连乘积号的矩阵连乘积 B和和C 的乘积并加括号,即的乘积并加括号,即A(B C)。)。算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 35 矩阵连乘问题|问题提出:问题提出:给定给定n个矩阵个矩阵A1,A2,An,其中,其中Ai与与Ai+1是可乘是可乘的,的,考察这考察这n个矩阵的连乘积个矩阵的连乘
25、积A1 A2 An如何确定计算矩阵连乘积的计算次序(即确定矩如何确定计算矩阵连乘积的计算次序(即确定矩阵的完全加括号方式),使得依此次序计算矩阵阵的完全加括号方式),使得依此次序计算矩阵连乘积需要的数乘次数最少?连乘积需要的数乘次数最少?算法设计与分析算法设计与分析动态规划动态规划 四川师范大学四川师范大学 计算机科学学院计算机科学学院 刘芳刘芳 36 方法1:穷举法|穷举法穷举法基本思想基本思想n列举出所有可能的计算次序,并计算出每一种列举出所有可能的计算次序,并计算出每一种计算次序相应需要的数乘次数,从中找出一种计算次序相应需要的数乘次数,从中找出一种数乘次数最少的计算次序。数乘次数最少的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 章动 规划
限制150内