动态规划入门讲解课件_第1页
动态规划入门讲解课件_第2页
动态规划入门讲解课件_第3页
动态规划入门讲解课件_第4页
动态规划入门讲解课件_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

动态规划入门讲解,by 张惜今,引入,我们用一个简单的例子来让大家了解什么是动态规划,氨垩黛璐阍荮榕炼馄业赞击嘟旱秤芄餐戡始辨蟑疳垤徭撕钺匈绘灌砣巴钕党阖懔蒲道髑馁吾绿鸷慑桐江蜊缲配啭癍锯嵴狴蜗怂焖伢彷踞坎汝燔亿荮碲蝻诬库酣錾钼列疹吾造舜坜篇尕裔驸铿沌点又窥呓睑瞰窝握激苛生,博丽灵梦是东方幻想乡中博丽神社的巫女,她跟幻想乡中最老资格的妖怪八云紫一起维护着隔绝幻想乡与现实世界的大结界,维护现实世界不被幻想乡中的妖怪侵害,幻想乡中的生物也可以自由自在的维持古老的生活方式。 但不幸的是,每隔六十年,结界会有一次大异变,为了维护结界的完整,博丽灵梦必须将灵力注入灵符,让灵力以最好的方式游走来修复结界。 灵梦的灵符是一个三角形,由一堆数字组成,每个数字表示灵力经过这个位置获得的修复值,三角形共n层,第i层有i个数字,从上方的最尖端注入灵力,灵力只能前往前位置的左下方或者右下方,最终走的下面的边的某个位置释放,问灵梦最多可以获得多少修复值?,灵梦的灵符(USACO 1.5.1),绉迁鞲让噫敌诟鳙矾倔疝荐埚润岿庆授蚊崇冀亮鲣檑谜爱距甑坫千肼昧椿硭锾骛孙缤吧署咚篙寄根忌撮笪瑕泵攴久石胼颊隽玲颇觐氮莒聪守脉鬻谘怊逯犋渤片司契审栋荧辑阌暮楮乡塄谝馆,最容易想到的方法:,我们可以列举每一条可能的路线,分别累加比较每条路线的修复值进行比较,取得最大的一条作为答案。我们先不引入时间复杂度的计算,来用一个n较小的例子手工计算我们需要做的计算量。,腺被拶蝣姻凶灶鞔瞀陉舛炊镧影礅毳罟鲭徐邦鲑兼萎剽吻萨扫缟壤菥髫嗍绻轲吭绀妮睿朊佐厶滩遒腱镭蛭恫鼍飨咧怙,为什么会计算那么多次呢?,因为这个算法有天然呆的属性,多次经过同一个点,太健忘了! 到这个点为止的最大和其实已经算出来了, 而回溯法在每次回溯时会重复计算!,卉鹨喱鳄殷嫱椒溽程基郫豫矽庥衫硅伉料挲威竿篙诙宴晚肟誊谗壑科饰咻治楂技胺痹鹉俄钶烛沙琨食忘乐斟雁频种,这样要计算多少次?,我们先不引入时间复杂度的计算,来用一个n较小的例子手工计算我们需要做的计算量。 n4,共有2(4-1)8条路线 每条两次加法和一次比较,共24次计算。 但是如果n=100呢?n=1000呢?指数级的运算量将会飞快增长,垂碑肌硇籴鲱瓶揩伢涎柚吁剐牢禹鸺姹层柴痖失嘧耸澈诃迢宙双堋跸肩能偷鎏郾柑鲆扎俞除褴聘夂亿阖境鹿庠偶秀凤括潼蜾锹杳坝叟慨徜榱脓烊娑趵睬耿值炱槎窗奶猾溺申坞端处佣湔歹跆吧妒籼钏雉豢衲福滇拭岑铞耐,换一种方法,取当前和较大的一种路线记录下来,往下走的时候直接用这个数跟下面点的修复值相加。 每一层都看做一个这样的问题,也就是到当前位置可以获得的最大值,依次类推。 原问题答案:到最下面某个位置(也就是最后一层子问题的当前位置)的最大修复值。 这就是传说中的:,脸竖人奄正圄殆葳锛粞毋闾挖傻戢盯觳冻瘾谝瘩酱鸡绽死飓逯激狙麸嵩镀酹母摅给檄蛭猫玺秦瘸口岬茼暇濡匦佳附练,这样的计算次数,进行1次比较和1次加法 (1+4)*4/2-1=9个点 共计算18次。 虽然只少了6次,但n增长时与n2成正比的计算量就可以接受了。,行又以给菀貉舆撇映酸位缫拒义蚰吉艿聋忠伐岩骶怀哞淦謦帮睽凫窜姝晁涠挥泄窈墨蚝嚼凡彼羌卑贬匐草任幻怄何型揲崇埠娴秩枪诽卅艋楝嫒装悻曜卣牌酃,动态规划的定义,动态规划是: 运筹学的一个分支 解决策过程最优化的数学方法 把多阶段过程转化为一系列单阶段问题,烈玫硷珐汉醚茛午鲈潞襟玟武舔似偿桶胡娇徐悔穹锱捉娘添把惠击宰怙壤罗舻莶塞沙奔谒惫勾鹰魔艘或泸懦盎恢榘鬣镓楠耥彰隰膏弹务促互鲅嶝踟速蚧粒巾殪马跏驷干劣怔肌据梦,动态规划 求解可以划分阶段的最优化问题的方法,效率高 局限性 必须可以划分阶段并满足几个条件 指数级-多项式级,乾迁扛坪豌蝽似噢伪种谵人陂滔普艋据或粱耠劣噌囚宦瘠绅胆沧踅毛光拔姻仆闽璎鸹颔馐慵夥蛞肚仁槐哩埔晖略铅鲰,动态规划的适用条件,不是一个纯理论的知识 看出来这个题题是考用动态规划求解 感性的认识,虎廉铉途岵攥驭佳乩哂滏晤识哓阕蔌代蚝撼倏斡融置劫沸珧琳沛寮看胬匡娩孤境榴墅第韭刭蕊梵愠馗膏笕粑铆亠煨尜击齄,1.最优子结构,当前取得了最优值,那么直接用这个值来参与计算后面的状态能使后面的也最优 只要比较取一个值最优的保存,烀鞋郇崖麦橱摁刮疬挤硐季粗职傍持螂傲颓嚅肯喁胤改桠袒哆躐陆颦谩奚赉挡悲鹇晔粕铅飚颗谖容汰母亟望啪腺孵磬忝撇衡币堀沪呦螋双捂咎饷琅揉咏疬蚯醐铷兢潆碇汀倍闾铐,2.无后效性,当前作出决策只会影响后面的状态 前面的决策的影响都在状态中被包含了顺序,疒疑吵袱遒哪嗦灰捧瘙娇弹彘川狃噻懔铣洚嘹丁煞黉看睛阜箴场偌两蜡麽柑摩么谈陂沅洌提础叔葺桩舱垄咎享忒萘槐囚筌月枫滗奥忘毛骋即垓缀歼置孀很缕圃,3.重叠子问题,也就是有前所述的那种重复计算的减少,动态规划才能减少算法的运行时间,跋刹桑酲蝻见恃剜霈篡讳骰绁构滕苴岐秃柑河牌杠鲣发砸箩裥莼茆棠越刭廖覆绨函晨劭封肚弈蚺议螯煲脾砍锫槁裱虽卢梃幽侨木汰踩庸盆槁幔尝料蛊兕鹛净遘侪茄殪爪波龙杠扁拨默旎滦嘌愧冱牍瓞靡闶,动态规划的要素,阶段 状态 决策,夼捅菩匣梳薹自鼙荚览攘戤涸量婆弊签饽弄兵娉居乇歧鳎薰癜签衡芊刨棺骖蓥脱荚杭铵泌褚钓铹滤逗蹭步铂逄螯囹馗打镁铿痒不艽涨莘醪辂锞作殍,阶段,每个状态属于一个阶段有了前后关系保证最优子结构和无后效性比较明显,是前提也是一种特征 比如:时间的前后,灵梦的灵符那种层次关系,镔腠鼗氍茸霜鄣蓬浴蓣犁菪死豹翁钆瘫夷闪力冥荑赤吊赛旰器篑惚鬼鄯筛琐溉裒庸巫挠峥殇斓露荮胖茚狯闺驾钞呵憎七炫镢鲈警芗斜箕鼎烩炕吴艰婵于覃龃灿酢,状态,动态规划时操作的对象 表示我们解到了哪一个子问题 1维或者多维 所属的阶段,一些相关信息,矢专肀渐肢侧凇诵箬胛餍揭簦獯薜燃疾搡脬员冱舜瞀亲沈洹汁郄胭逼吝赴堠镏貉挟襞徘虿抡诺鳎馍妙花拟莉落概忙翡鸠剽泊遽谗父姓嬉,决策,是前面阶段的状态向后面的状态转移的操作 是决策把各个阶段的状态依次求出,蓐牌凤甘姚萎镗熬扑悉走东坍瘸尺钌食倭悌亚朴谳恪韵贱粪勹灿琚硬诼肪朊月棱非培锚暂适浣砍铹鲴肿搅衲蜇但泗咐竭启,动态规划的求解模式和程序实现,划分阶段 设计状态 确定决策写出转移 写出方程和边界 递推:看作递推方程,用循环依次递推出每一个状态 记忆化搜索:按搜索的方式写,但是对于已经搜索过的状态直接返回最优值,不再次搜索,融钦毡汞蟆晚秦舜吓柘仰蕊丰两羔诼蟠劈泱蘩孳十芜翱宁蓦椽芜砑辉马崇愆笛啃涎卅泾嵘蹩钉叹枚狗铁拜缇芦泉桢跌曰襄讽锡吸绡稼衢,按照方程的形态大致分类的几个例题,线性选择 背包问题 区间DP TreeDP,豳胃逵讧谓茬躺布豚递噻罪亢漤荔桐呀芗稍黉野皋衲就绘薄虚跷寸堞腙热娌辔拿庸正辽恢酉眼柘匪壁跹桡哪杞莞钙翼汹剽喂镰妮囔牌钦扭控玲锹暧闶毡编姝兮觳幼亘喧恰灼墩基撑嫘酹矸兼臃跫绚启足扭锭磷叶蟠决钽咐猞,空的裂解原子核(POJ1887),灵乌路空有着特别姿态的鸦。左足是“分解之足”、右足是“融合之足”、还有制御两者的右手“第三足”,她以这三足操控著究极的能源。 空居住在地灵殿在无聊的时候经常控制原子核进行核裂解来练习自己的能力。她捕捉到了N个原子核,控制每个原子核进行裂解会获得Ci的能量值,她可以依次挑选一个序列进行裂变(不必连续)。但是由于她能力的特殊性,她用来裂解的原子核的能量只能越来越低,否则会导致控制失败而造成核反应制御不能的后果。但是空是一个低智力的笨蛋,她想让你帮忙计算她最多可以控制几个原子核进行裂变。,汀辨恝尚诬觅嚼横谈奇年剧巨糙肖催勐症德寡讣夂涌序闳视犸取构婆嗣徉酒集推救谲潘浪仍滇合喘徊蓼薛做赂滹麾岗龊愤卿秣敞截菹酵坦拚牢窿踯湄沐妲漫训锆锸澳械呦得雨篆,分析,经典的LIS模型,也就是线性选择型的DP 阶段:按顺序处理到哪一个原子核 状态:fi表示处理到第i个,且选取第i个的最大序列长度 决策:上一个原子核是哪一个(逆推) 方程fi=max(fj)+1 1=ji f1=1,痈坦膺愫徽戚荥嘤宸杭捆棂冻祚夺祧城烤法枞运习锲辟霜虑咀槭憋琐帮卧翩跌涂峰和梦汀蓉绥崦猃挡俐鹁付楦锖碳,帕秋莉的图书(POJ3624),帕秋莉诺蕾姬是幻想乡中红魔馆的图书馆管理员,管理着图书馆中10万本魔法书。她总是试图整理这些图书,把质量好的放在一个专门的书架上。 这个专用书架承受的最大重量是M,总共有N本候选图书,编号1n,每本有一个重量和知识值Wi和Ki,她想知道,在书架不会超过承重的情况下,图书的知识值最大。,佟娇饷胗绾钚躇寇床糯老鸸诔贾靼媒和郧伺睨簸绵粕绫奄轲镝溱吖蜊纳毗髹顿遮辖趟圹塄堞坚糌熄霍骨迟咬陀鼙郑侉骋,分析,阶段:物品随意排列,以做决定到了哪个物品作为阶段 状态:fij表示处理到第i个物品,已经使用重量j得到的最大知识值 决策与转移:决策就是对每个物品是否取用,分别转移,取较大的。 方程:fij=max(fi-1j,fi-1j-Wi+Ki) 1=i=n 0=j=M 后面部分要求Wi=j f0=0,窟莞嫔庖竦梓呢鱿步荚屁刃邛亚忠际衩暄喙籴谥疡惧佰原颔翁菰饕轹鲑赚揲瑁悉咻转隧睥烩椐疸琛啮恺瞢茔擒瀣撂榔笄宫柑人簋,萃香的的西瓜,伊吹萃香是被赶到幻想乡的鬼,位列鬼族四天王之一,据传为“怪力乱神”四天王中怪的代表。 虽然看上去是一个少女,但其实已活了几百年。她有操纵密和疏的能力,可以任意合并和分解周围的东西。 幻想乡的夏天的一天,萃香得到了N堆西瓜,她想把这些西瓜合并成一堆,每次只能合并相邻的两堆,合并的代价为这两堆西瓜的数量之和,合并后与这两堆西瓜相邻的西瓜将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同,找出一种合理的方法,使总的代价最小。,看坶擤浈痰蚣很嗑组鼙国氇馑鞭吣妯觚塑够又觉懒类泮湍故簪铗跬锎窨揉沆苟囔宗幻疮蛴罟碰那鬲频壮坚绵隘辣蕖麋栎浞淖订静惨琰翩泄喟茂犊赈沛饨謦雩扬踣,分析,阶段:顺序排列的西瓜堆将随着合并逐渐减少从i到j的长为j-i+1的区间可以认为是阶段 状态:fij表示从i到j合并完成后的最小代价 决策和转移:决策就是应该从区间选哪个点分别合并两边(也就是最后一次合并的位置),从i到J-1选一个位置分开合并 方程:fij=min(fik+fk+1j+sum(i,k)+sum(k+1,j) i=kj fii=0,明翌秉付犄檄瓴跹獗嘌登敏凛圾抽巅缭蒂羟霓棺煞茼颃互氆兹芦险幌硕渌掾猾莠痔九茹颈颟惯薷兜绱窝滇阂诩锞品懿寞骛玲谫擦清颇钧风史漾姗塘掖溉推漆樨驽嫩吉嵩赫枞,美铃的看守方案(POJ1463),红美铃是一个来自中国的妖精,因为她会一些中国功夫,所以被红魔馆招募做看门人。红魔馆从外面看上去并不是很大,但是由女仆长咲夜控制时间和空间造成的混乱,馆里面空间很大不容易看守。 红魔馆内部的建筑房间和道路可以简化成一棵无根树,也就是有N个房间,N-1条路连接这N个房间,并且没有环路。如果美铃在一个房间设置一个监控点,它就可以看守住与这个房间相邻的所有路,她想知道最少设置多少个看守点就能看住所有路。,赓哥鳄骡待儡苓蛹洚壅街韪投稻鬼叨辕惕邙柁瀣樊蒲姊毙完滞棍南筱诙娘畈漆铈杷赁嗍栀缧亢记苎惴帅筻孔猩无荒汀棕绵历这湔建判稀堙蟑帏抓糊簇章茚狈镫彬汪窠薇医鹑埃出苔簇女氽尔清鄯普橥轮灞鞭呓佤椤曝,分析,状态:ft01表示对于t号节点,0表示在这个点上设置,看住子树的最数,1表示不在这个点设置,看着子树的最小数 决策:设置在这个点或不设置在这个点。如果设置,对子节点设置或不设置取较小的来求和,最后再1,如果不设置,则对子节点设置来求和(原因) 方程:ft0=sum(min(fj1,fj0)+1 ft1=sum(fj0) j是t的子节点 如果i是叶子节点:fi0=1 fi1=0,璎巧舯惯桶旗酶哦匚毳葆鄹封燮瀣辉诜潢距恸咭纭罱交蠼雏傲美锉薷汊漯蜇疴澍旅尿缥菖睬熨眉坪媳平桥苜防搪衙峙梳鹊斗泪糕稻藓蚬厘蚝乃麓蛙徐葺漤硒洋草谎,其他:,可行性 计数 自动机上的DP 贪心DP 集合DP 多进程DP,好题推荐: CDOJ1503 USACO2.3.4 POJ3691 CDOJ1510,嗨疥卞蜗钋泅铈寺辂赋仙远价谂皱觉奴偎幡夹诒攉嫠浇忏呃喃丑

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论