《动态规划初步》PPT课件.ppt
《《动态规划初步》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《动态规划初步》PPT课件.ppt(41页珍藏版)》请在三一办公上搜索。
1、常州市第一中学 林厚从,动态规划初步,JSOI2007夏令营B层次(泰州),常州市第一中学 林厚从,问题:城市交通 有n个城市,编号1n,有些城市之间有路相连,有些则没有,有路则当然有一个距离。现在规定只能从编号小的城市走到编号大的城市,问你从编号为1的城市走到编号为n的城市要花费的最短距离是多少?,输入格式:先输入一个n,表示城市数,n100。下面的n行,是一个n*n的邻接矩阵map1.n,1.n。mapi,j=0,表示城市i和城市j之间没有路相连,否则为两者之间的距离。输出格式:一个数,表示从城市1走到城市n的最短距离。输入数据保证可以从城市1走到城市n。,动态规划的引入,常州市第一中学
2、林厚从,输入样例:110 5 3 0 0 0 0 0 0 0 05 0 0 1 6 3 0 0 0 0 03 0 0 0 8 0 4 0 0 0 00 1 0 0 0 0 0 5 6 0 00 6 8 0 0 0 0 5 0 0 00 3 0 0 0 0 0 0 0 8 00 0 4 0 0 0 0 0 0 3 00 0 0 5 5 0 0 0 0 0 30 0 0 6 0 0 0 0 0 0 40 0 0 0 0 8 3 0 0 0 30 0 0 0 0 0 0 3 4 3 0,动态规划的引入,常州市第一中学 林厚从,设一个数组dis1.n,disi表示城市1到城市i的最短距离。题目就是要求
3、disn。,根据题目的限制条件:只能从编号小的城市到编号大的城市。显然,我们可以从城市1、城市2、城市n-1到城市n,前提是城市i与城市n之间有路,其中i=1,2,3,n-1。,所以,disn就应该取disi+mapi,n中的最小值,且要求mapi,n0,i=1,2,3,n-1。,也就是说要求disn,就必须先求出dis1disn-1,类似于递推算法中的“倒推法”,那么如何求disn-1呢?disn-1=min disi+mapi,n-1 且要求mapi,n-10,in-1。,城市交通分析,常州市第一中学 林厚从,现在我们把问题一般化,如何求disi呢?其中,i=1.n。,Disi=min d
4、isj+mapj,i,要满足:mapj,i0,j=1.i-1,这是一个类似于递归的公式,意思为:要求disn就要先求disn-1 dis1,要求disn-1就要先求disn-2 dis1,而要求disi,就要先求disi-1 dis1,而dis1=0。在具体计算的时候,只要从dis1开始“顺推”下去,依次求出dis2、dis3、disn-1、disn即可。,城市交通分析,常州市第一中学 林厚从,dis1:=0;for i:=2 to n dobegin min:=maxint;用打擂台的方法求出最小值 for j:=1 to i-1 do if mapj,i0 then if disj+map
5、j,imin then min:=disj+mapj,i;disi:=min;end;writeln(min=,disn);,城市交通分析,常州市第一中学 林厚从,动态规划是运筹学的一个分支。它是解决多阶段决策过程最优化问题的一种方法。1951年,美国数学家R.Bellman提出了解决这类问题的“最优化原则”,1957年发表了他的名著动态规划,该书是动态规划方面的第一本著作。动态规划问世以来,在工农业生产、经济、军事、工程技术等许多方面都得到了广泛的应用,取得了显著的效果。动态规划运用于信息学竞赛是在90年代初期,它以独特的优点获得了出题者的青睐。此后,它就成为了信息学竞赛中必不可少的一个重要
6、方法,几乎在所有的国内和国际信息学竞赛中,都至少有一道动态规划的题目。所以,掌握好动态规划,是非常重要的。,常州市第一中学 林厚从,动态规划简介,动态规划中有很多深奥的概念,使用动态规划也有很多前提条件,它与递推、递归也有着密切的联系,这些都要等到我们有一点编程经历后才好谈起,所以,我们先放开这些理论,不要被这些理论吓倒,而是去尝试分析和解决几个经典动态规划题目。学习动态规划最重要的是“一种思想方法和解题过程”,请大家积极动脑动手,跟着我一起分析和体会其中的方法和过程,然后再独立去思考和实践。,常州市第一中学 林厚从,动态规划简介,拦截导弹(NOIP1999)问题描述:某国为了防御敌国的导弹袭
7、击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹的枚数和导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,每个数据之间有一个空格),计算这套系统最多能拦截多少导弹?如果要拦截所有导弹最少要配备多少套这种导弹拦截系统?,样例输入:8 389 207 155 300 299 170 158 65 样例输出:6(最多能拦截的导弹数)2(要拦截所有导弹最少要配备的系统数),常州市第一中
8、学 林厚从,“拦截导弹”问题分析,先讨论第一问:假设ai表示拦截的最后一枚导弹是第i枚时,系统能拦得的最大导弹数。例如,样例中的a5=3,表示:如果系统拦截的最后一枚导弹是高度为299的话,最多可以拦截第1枚(389)、第4枚(300)、第5枚(299)三枚导弹。显然,a1a8中的最大值就是第一问的答案。关键是怎样求得a1a8?,我们换一个角度,假设现在已经求得a1a7(注:在动态规划中,这样的假设往往是很必要的),那么怎样求a8呢?,a8要求系统拦截的最后1枚导弹必须是65,也就意味着倒数第2枚被拦截的导弹高度必须不小于65,则符合要求的导弹有389、207、155、300、299、170、
9、158。,常州市第一中学 林厚从,假如拦截的倒数第2枚导弹是300,则a8=a4+1;假如拦截的倒数第2枚导弹是299,则a8=a5+1;类似地,a8还可能是a1+1、a2+1、。当然,我们现在要求得是以65结尾的最多导弹数目,因此a8要取所有可能值的最大值,即:a8=max a1+1,a2+1,a7+1=maxai+1(i=1.7)。,类似地,我们可以假设a1a6为已知,来求得a7。同样,a6、a5、a4、a3、a2也是类似求法,而a1就是1,即如果系统拦截的最后1枚导弹是389,则只能拦截第1枚。,“拦截导弹”问题分析,常州市第一中学 林厚从,这样,求解过程可以用下列式子归纳:a1=1ai
10、=maxaj+1 其中:i1,j=1.i-1,且hj=hi,第一问的答案就是a1a8中的最大值。,“拦截导弹”问题分析,常州市第一中学 林厚从,longest1:=1;for i:=2 to n do 分阶段求出每步的最优值 begin maxlong:=1;for j:=1 to i-1 do if himaxlong then maxlong:=longestj+1;longesti:=maxlong end;maxlong:=longest1;以下打擂台求出最大值 for i:=2 to n do if longestimaxlong then maxlong:=longesti;wri
11、teln(max=,maxlong);,这种解题方法就称为“动态规划”,“拦截导弹”问题分析,常州市第一中学 林厚从,“拦截导弹”问题分析,关于第二问:由于它紧接着第一问,所以很容易受前面的影响,多次采用第一问的办法,然后得出总次数,其实这是不对的。要举反例并不难,比如长为7的高度序列“7 5 4 1 6 3 2”,最长不上升序列为“7 5 4 3 2”,用多次求最长不上升序列的结果为3套系统;但其实只要2套,分别击落“7 5 4 1”与“6 3 2”。所以不能用多次“动态规划”的方法做,那么,正确的做法又是什么呢?,我们的目标是用最少的系统击落所有导弹,至于系统之间怎么分配导弹数目则无关紧要
12、,上面错误的想法正是承袭了“一套系统尽量多拦截导弹”的思维定势,忽视了最优解中各个系统拦截数较为平均的情况,本质上是一种贪心算法,但贪心的策略不对。如果从每套系统拦截的导弹方面来想行不通的话,我们就应该换一个思路,从拦截某个导弹所选的系统入手。,常州市第一中学 林厚从,“拦截导弹”问题分析,题目告诉我们,已有系统目前的瞄准高度必须不低于来犯导弹高度,所以,当已有的系统均无法拦截该导弹时,就不得不启用新系统。如果已有系统中有一个能拦截该导弹,我们是应该继续使用它,还是另起炉灶呢?事实是:无论用哪套系统,只要拦截了这枚导弹,那么系统的瞄准高度就等于导弹高度,这一点对旧的或新的系统都适用。而新系统能
13、拦截的导弹高度最高,即新系统的性能优于任意一套已使用的系统。既然如此,我们当然应该选择已有的系统。如果已有系统中有多个可以拦截该导弹,究竟选哪一个呢?当前瞄准高度较高的系统的“潜力”较大,而瞄准高度较低的系统则不同,它能打下的导弹别的系统也能打下,它够不到的导弹却未必是别的系统所够不到的。所以,当有多个系统供选择时,要选瞄准高度最低的使用,当然瞄准高度同时也要大于等于来犯导弹高度。,常州市第一中学 林厚从,“拦截导弹”问题分析,解题时用一个数组sys记下当前已有系统的各个当前瞄准高度,该数组中实际元素的个数就是第二问的解答。,sys1:=h1;tail:=1;for i:=2 to n dob
14、egin minheight:=maxint;for j:=1 to tail do 找一套最适合的系统 if sysjhi then if sysjminheight then begin minheight:=sysj;select:=j end;if minheight=maxint 开一套新系统 then begin tail:=tail+1;systail:=hi end else sysselect:=hiend;writeln(total=,tail);,常州市第一中学 林厚从,动态规划简介,数字三角形(IOI1994)问题描述 如下所示为一个数字三角形:73 88 1 02 7
15、 4 44 5 2 6 5 请编一个程序计算从顶至底的某处的一条路径,使该路径所经过的数字的总和最大。规定:每一步可沿直线向下或右斜线向下走;1三角形行数100;三角形中的数字为整数0,1,99;,样例输出:30,常州市第一中学 林厚从,动态规划简介,分析数字三角形,1、穷举法:最多100行,有299条路径,超时;,2、贪心法:不正确;,3、动态规划:,假设从顶至数字三角形的某一位置的所有路径中,所经过的数字的总和最大的那条路径,我们称之为该位置的最大路径。由于问题规定每一步只能沿直线向下或沿斜线向右下走,若要走到该位置,则其前一位置必为其左上方或正上方两个位置之一,由此可知,当前位置的最优路
16、径必定与其左上方或正上方两个位置的最优路径有关,且来自于其中更优的一个。,常州市第一中学 林厚从,动态规划简介,设ai,j表示数字三角形中第i行第j列的数,再设一个二维数组sum记录每个位置的最优路径的数字总和,则:,sumi,j=maxsumi-1,j,sumi-1,j-1+ai,j 其中:2=i=n,2=j=i,边界条件:sumi,1=sumi-1,1+ai,1 第1列sumi,i=sumi-1,i-1+ai,i 对角线,这个问题呈现出明显的阶段性:三角形的每一行都是一个阶段。对最大路径的求解过程,实际上是从上往下不断地按照阶段的顺序求解。对问题适当地划分阶段是动态规划解题中的一个重要步骤
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态规划初步 动态 规划 初步 PPT 课件
链接地址:https://www.31ppt.com/p-5472800.html