算法合集之从鹰蛋一题浅析对动态规划算法优化.pptx
《算法合集之从鹰蛋一题浅析对动态规划算法优化.pptx》由会员分享,可在线阅读,更多相关《算法合集之从鹰蛋一题浅析对动态规划算法优化.pptx(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、引言 在当今的信息学竞赛中,动态规划可以说是一种十分常用的算法。它以其高效性受到大家的青睐。然而,动态规划算法有时也会遇到时间复杂度过高的问题。因此,要想真正用好用活动态规划,对于它的优化方法也是一定要掌握的。本文将就鹰蛋这道题目做较为深入的分析,并从中探讨优化动态规划的本质思想与一般方法。第1页/共45页问题 当鹰蛋从第E层楼及以下楼层落下时是不会碎的,但从第(E+1)层楼及以上楼层向下落时会摔碎。有一堆共M个鹰蛋,一位教授想研究这些鹰蛋的坚硬度E。他是通过不断从一幢N层的楼上向下扔鹰蛋来确定E的。如果鹰蛋未摔碎,还可以继续使用;但如果鹰蛋全碎了却仍未确定E,这显然是一个失败的实验。教授希望
2、实验是成功的。第2页/共45页问题 例如:若鹰蛋从第1层楼落下即摔碎,E=0;若鹰蛋从第N层楼落下仍未碎,E=N。这里假设所有的鹰蛋都具有相同的坚硬度。给定鹰蛋个数M与楼层数N(M,N=1000),求最坏情况下确定E所需要的最少次数。样例:M=1,N=10 ANS=10(解释:只能将这个鹰蛋从下往上依次摔)第3页/共45页算法一 由于是求最优值,我们自然想到了使用动态规划!第4页/共45页算法一状态定义:f(i,j):用i个蛋在j层楼上最坏情况下确定E所需要的最少次数。状态转移:i个鹰蛋 (j-w)层(i-1)个鹰蛋 (w-1)层i个鹰蛋 j层f(i-1,w-1)次f(i,j-w)次第5页/共
3、45页算法一状态定义:f(i,j):用i个蛋在j层楼上最坏情况下确定E所需要的最少次数。状态转移:f(i,j)=minmaxf(i-1,w-1),f(i,j-w)+1|1=w=时,直接输出 即可.算法的时间复杂度立即降为O(N2log2N)第9页/共45页算法二 这里,我们是通过减少状态总数而得到了优化的空间,从而大大提高了算法效率。这也是优化动态规划算法的一种常用方法。然而优化还远未结束!第10页/共45页算法三经观察发现,动态规划函数f(i,j)具有如下单调性:f(i,j)=f(i,j-1)(j=1)这条性质可以用数学归纳法进行证明,这里就从略了。那么,f(i,j)的单调性有什么作用呢?第
4、11页/共45页算法三(如图,令为f(i-1,w-1)的图象,为f(i,j-w)的图象,即为maxf(i-1,w-1),f(i,j-w)+1的图象)第12页/共45页算法三 这样,我们就成功地将状态转移的时间复杂度降为O(log2N),算法的时间复杂度也随之降为O(N(log2N)2).在对算法三进行研究之后,我们会萌生一个想法:既然现在f(i,j)都需要求出,要想找到更高效的算法就只能从状态转移入手,因为这一步是O(log2N),仍然不够理想。因此,算法四将以状态转移为切入点,进一步探究优化的空间。第13页/共45页算法四根据这个不等式,我们可以得到如下推理:若存在一个决策w使得f(i,j)
5、=f(i,j-1),则f(i,j)=f(i,j-1)若所有决策w均不能使f(i,j)=f(i,j-1),则f(i,j)=f(i,j-1)+1通过进一步挖掘状态转移方程,我们得到如下不等式:f(i,j-1)=f(i,j)=1)第14页/共45页算法四这里,我们设一指针p,并使p时刻满足:f(i,p)=f(i,j-1)-1 且 f(i,p+1)=f(i,j-1)由状态转移方程可知,决策时f(i,p)所对应的函数值是f(i-1,j-p-1).下面,我们将证明只需通过判断f(i,p)与f(i-1,j-p-1)的大小关系便可以决定f(i,j)的取值。第15页/共45页算法四f(i-1)f(i)jjpp+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 鹰蛋一题 浅析 动态 规划 优化
限制150内