最新信息学奥赛NOIP动态规划入门教学文案课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《最新信息学奥赛NOIP动态规划入门教学文案课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 信息学 NOIP 动态 规划 入门 教学 文案 课件
- 资源描述:
-
1、信息学奥赛NOIP动态规划入门引入:走楼梯引入:走楼梯已知一个楼梯有已知一个楼梯有n n级,从下往上走,一步可以走一级,也可以走两级,走到级,从下往上走,一步可以走一级,也可以走两级,走到第第NN级楼梯有多少种走法?级楼梯有多少种走法?【输入格式】【输入格式】一行一个整数一行一个整数n n。【输出格式】【输出格式】一行仅有一整数,表示走到第一行仅有一整数,表示走到第n n级有多少种走法。级有多少种走法。【输入样例】【输入样例】【输出样例】【输出样例】2 2 2 2【数据规模】【数据规模】对对100%100%的数据满足:的数据满足:0 0 n 30 n 30。最短路径问题最短路径问题-求求A A
2、到到E E的最短路的长度的最短路的长度穷举?贪心?搜索?思考思考:仔细观察本图路径的特殊性,可以分成仔细观察本图路径的特殊性,可以分成4 4个阶段:个阶段:第一阶段:第一阶段:A A经过经过A-B1A-B1或或A-B2A-B2到到B B第二阶段:第二阶段:B1B1有三条路通有三条路通;B2B2有两条通路有两条通路阶段阶段1阶段阶段2阶段阶段3阶段阶段4思考:倒着推;设F(x)表示x到E的最短路径的长度阶段阶段4 4:F(D1)=3;F(D2)=4;F(D3)=3F(D1)=3;F(D2)=4;F(D3)=3阶段阶段3 3:F(C1)=minF(D1)+C1F(C1)=minF(D1)+C1到到
3、D1D1的路径长度,的路径长度,F(D2)+C1 F(D2)+C1到到D2D2的路径长度的路径长度 F(C2)F(C2)阶段阶段1阶段阶段2阶段阶段3阶段阶段4 我们把我们把F(x)F(x)称为当前称为当前x x的的状态状态;在这个例子中每个在这个例子中每个阶段阶段的选择依赖当前的状态,又的选择依赖当前的状态,又随即引起状态的随即引起状态的转移转移,一个,一个决策序列决策序列(E D3-C4-(E D3-C4-B2-A)B2-A)就是在变化的状态中产生的,故有就是在变化的状态中产生的,故有“动态动态”的的含义。含义。阶段阶段1阶段阶段2阶段阶段3阶段阶段4基本概念基本概念阶段阶段:问题的过程被
4、分成若干相互联系的部分,我问题的过程被分成若干相互联系的部分,我们成为阶段,以便按一定的次序求解。们成为阶段,以便按一定的次序求解。状态状态:某一阶段的出发位置称为状态,通常一个阶某一阶段的出发位置称为状态,通常一个阶段包含若干状态。段包含若干状态。决策决策:对问题的处理中作出的每种选择的行动就是对问题的处理中作出的每种选择的行动就是决策。即从该阶段的每个状态出发,通过一次决策。即从该阶段的每个状态出发,通过一次选择性的行动移至下一个阶段的相应状态。选择性的行动移至下一个阶段的相应状态。Int F(int n)if(n=0|n=1)return 1;else return F(n-1)+F(n
5、-2);时间复杂度?能优化吗?例例1:1:斐波那契(斐波那契(FibonacciFibonacci)数列)数列例例1:1:斐波那契(斐波那契(FibonacciFibonacci)数列)数列/dp数组,用以保存已经计算过的结果/dpn记录F(n)的结果,dpn=-1表示没有计算过Int F(int n)if(n=0|n=1)return 1;if(dpn !=-1)return dpn;else dpn=F(n-1)+F(n-2);return dpn;时间复杂度?例2:数字三角形一个由非负数组成的三角形,第一行只有一个数,除了最下行之外每个数的左下方和右下方各有个数,从第一行的数开始,每次可
6、以选择向左下或是向右下走一格,一直走到最下行,把沿途经过的数全部加起来。如何走才能使得这个和尽量大?。数字三角形格子编号穷举?贪心?搜索?数组存储深搜(递归实现)程序清单:void f(int i,int j)s=s+a i j;if(i=4)if(s max)max=s;else f(i+1,j);s=s-a i+1 j;f(i+1,j+1);s=s-a i+1 j+1;格子编号分析:考察分析:考察设以格子(i,j)为首的“子三角形”的最大和为di,j(我们将不加区别的把这个子问题(subproblem)本身也称为di,j),则原问题的解是d1,1我们关心的是从某处出发到底部的最大和:从(2
7、,1)点出发的最大和记做d2,1;从(2,2)点出发的最大和记做d2,2;从(1,1)出发有两种选择(2,1)或(2,2)在已知d2,1和d2,2的情况下,应选择较大的一个。思考:考虑更一般的情况,当前位置(i,j)看成一个状态,定义状态(i,j)的指标函数d(i,j)为从格子(i,j)出发时能得到的最大和(包含格子(i,j)本身的值)。原题的解:?d(?,?)格子编号d1,1 思考:观察不同状态如何转移的。从格子(i,j)出发有两种决策。如果(i,j)格子里的值为a(i,j)向左走需要求“从(i+1,j)出发的最大和”,就是di+1,j。向右走需要求“从(i+1,j+1)出发的最大和”,就是
8、di+1,j+1。如何选呢?思考思考:边界条件?边界条件?其中较大的一个,再加上a(i,j)的值就是di,j。di,j=ai,j+maxdi+1,j,di+1,j+1思想:思想:从上向下思考,从底向上计算从上向下思考,从底向上计算数字三角形81321162324时间复杂度O(n2)在计算dij前,di+1j,di+1j+1已计算好了!方法1:递推计算void solve()int i,j;for(j=1;j=1;i-)for(j=1;j=0)return dij;dij=aij+max(solve(i+1,j),solve(i+1,j+1);return dij;时间复杂度O(n2)不必事先确
9、定各状态的计算顺序方法3:记忆化搜索动态规划基本思想 建立子问题的描述,建立状态间的转移关系,使用递推或记忆化搜索法来实现。状态定义用问题的某些特征参数描述一个子问题。在本题中用di,j表示以格子(i,j)为根的子三角形的最大和。在很多时候,状态描述的细微差别将引起算法的不同。状态转移方程即状态值之间的递推关系。这个方程通常需要考虑两个部分:一是递推的顺序,二是递归边界(也是递推起点)。从直接递归和后两种方法的比较可以看出:重叠子问题(overlapping subprob-lems)是动态规划展示威力的关键。考察:d(1,1);d(2,1);d(2,2)这些问题的共性:都是求从一个位置出发到
10、底部的最大值;是一个共同的问题。d(2,1)d(2,1)d(2,2)d(2,2)重叠子问题考察:d(1,1);d(2,1);d(2,2);可以发现每个子问题结果都是最优的。d(2,1)d(2,1)d(2,2)d(2,2)最优子结构什么是动态规划?什么是动态规划?动态规划是求解包含动态规划是求解包含重叠子问题重叠子问题的最优化方法的最优化方法 动态规划的性质?动态规划的性质?子问题重叠性质:子问题重叠性质:在用递归算法自顶向下对问题进行在用递归算法自顶向下对问题进行求解是,每次产生的子问题并不总是新问题,有些子问题求解是,每次产生的子问题并不总是新问题,有些子问题可能被重复计算多次。动态规划算法
展开阅读全文