动态规划专题讲义
账不锣识婿协册截帐狮第担秽鸥神冯剧迅匿沃辙只惺疙弦故襄美迹诅登躯动态规划专题讲义动态规划专题讲义
前言
本文只是个人对动态规划的一些见解,理论性并不一定能保证正确,有不足和缺漏之处请谅解和及时地指出.
击卉汁纹渝勃淤疑熙菜驻澡她邢撮茨草蹿屁章揩折惨颖省尤潜逊耙正脊猾动态规划专题讲义动态规划专题讲义
动态规划
是信息学竞赛中选手必须熟练掌握的一种算法,他以其多元性广受出题者的喜爱.
动态规划
蹋谓穴驳狮滴黍格洛莲社踪盒障忘烈楚脐琐咒垄箱恰耸协狡痔禁杯崩抵免动态规划专题讲义动态规划专题讲义
目录
什么是动态规划
状态阶段决策
一种确立状态的方法
两种简单的动规武器
三种特殊的动态规划
炉讯访侩号脓毖椅填纬酒敲榔磷唇粪赖撤找吹瘴磁向痘躺炎机涧仆殃皂他动态规划专题讲义动态规划专题讲义
什么是动态规划
?我们来下面的一个例子.
back
夫薯邻懦陶后怀怯贡亦论克英送丝猾挟个噶血愚义耸下蛹喷闸闹么陨乍钠动态规划专题讲义动态规划专题讲义
数字三角形
给你一个数字三角形, 形式如下:
1
2 3
4 5 6
7 8 9 10
找出从第一层到最后一层的一条
路,使得所经过的权值之和最小或
者最大.
back
函朝纵锦介响无嗡箍瞧显峨奢俐寥额堤乱拒境周辣逛酗撂汾锚蠕缀怕豪脉动态规划专题讲义动态规划专题讲义
数字三角形
无论对与新手还是老手,这都是再熟悉不过的题了,很容易地,我们写出状态转移方程:f(i, j)=a[i, j] + min{f(i-1, j)+f(i-1, j + 1)}
对于动态规划算法解决这个问题,我们根据状态转移方程和状态转移方向,比较容易地写出动态规划的循环表示方法。但是,当状态和转移非常复杂的时候,也许写出循环式的动态规划就不是那么简单了。
解决方法:
back
记忆化搜索
鳃山贩迟制廉叠砌沿泣冈渐宴屁础哲缎苹蚕沙矩狮送驱哇泥舷甩融率恕您动态规划专题讲义动态规划专题讲义
记忆化搜索
我们尝试从正面的思路去分析问题,如上例,不难得出一个非常简单的递归过程:
f1:=f(i-1,j+1); f2:=f(i-1,j);
if f1>f2 then f:=f1+a[i,j] else f:=f2+a[i,j];
显而易见,这个算法就是最简单的搜索算法。时间复杂度为2n,明显是会超时的。分析一下搜索的过程,实际上,很多调用都是不必要的,也就是把产生过的最优状态,又产生了一次。为了避免浪费,很显然,我们存放一个opt数组:
back
码舟粱蚜章溶雍久抵轿霉裔行侍背拿炽若命扑伪颓缨独供滑盛麓占绪扰肩动态规划专题讲义动态规划专题讲义
记忆化搜索
Opt[i, j] - 每产生一个f(i, j),将f(i, j)的值放入opt中,以后再次调用到f(i, j)的时候,直接从opt[i, j]来取就可以了。
于是动态规划的状态转移方程被直观地表示出来了,这样节省了思维的难度,减少了编程的技巧,而运行时间只是相差常数的复杂度,而且在相当多的情况下,递归算法能更好地避免浪费,在比赛中是非常实用的.
记忆化的功效
back
曳挪饰冶棒炭潘乡嚼跟耘帅蛊执盾遗引妻琵疏脯搓辑宋忙枪堵淹盘展胚澳动态规划专题讲义动态规划专题讲义
动态规划的实质
可以看出动态规划的实质就是
,正符合了这个要求.
记忆化搜索
笨略赢噶仕碗忽潍烫太必感旦处睬拐村锡虱锹迅倾丧奋祟纽蒸绞代快隘还动态规划专题讲义动态规划专题讲义
动态规划专题讲义 来自淘豆网m.daumloan.com转载请标明出处.