动态规划的技巧_第1页
动态规划的技巧_第2页
动态规划的技巧_第3页
动态规划的技巧_第4页
动态规划的技巧_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

动态规划的技巧一一阶段的划分和状态的表示动态规划的技巧阶段的划分和状态的表示在动态规划的设计过程中,阶段的划分和状态的表示是非常重要的两步,这两步会直接影响该问题的计算复杂性,有时候阶段划分或状态表示的不合理还会使得动态规划法不适用。[例9]街道问题在下图中找出从左下角到右上角的最短路径,每步只能向右方或上方走。这是一道简单而又典型的动态规划题,许多介绍动态规划的书与文章中都拿它来做例子。通常,书上的解答是这样的:按照图中的虚线来划分阶段,即阶段变量k表示走过的步数,而状态变量xk表示当前处于这一阶段上的哪一点。这时的模型实际上已经转化成了一个特殊的多段图。用决策变量uk=0表示向右走,uk=1表示向上走,则状态转移方程如下:(这里的row是地图竖直方向的行数)我们看到,这个状态转移方程需要根据k的取值分两种情况讨论,显得非常麻烦。相应的,把它代入规划方程而付诸实现时,算法也很繁。因而我们在实现时,一般是不会这么做的,而代之以下面方法:,顼n私+皿璀(这里Distance表示相邻两点间的边长)这样做确实要比上面的方法简单多了,但是它已经破坏了动态规划的本来面目,而不存在明确的阶段特征了。如果说这种方法是以地图中的行(A、B、C、D)来划分阶段的话,那么它的"状态转移"就不全是在两个阶段之间进行的了。也许这没什么大不了的,因为实践比理论更有说服力。但是,如果我们把题目扩展一下:在地图中找出从左下角到右上角的两条路径,两条路径中的任何一条边都不能重叠,并且要求两条路径的总长度最短。这时,再用这种”简单"的方法就不太好办了。如果非得套用这种方法的话,则最优指标函数就需要有四维的下标,并且难以处理两条路径"不能重叠"的问题。而我们回到原先"标准"的动态规划法,就会发现这个问题很好解决,只需要加一维状态变量就成了。即用xk=(ak,bk)分别表示两条路径走到阶段k时所处的位置,相应的,决策变量也增加一维,用uk=(xk,yk)分别表示两条路径的行走方向。状态转移时将两条路径分别考虑丸+i二如+1—必次I二%+孔,如十1二席+%*>厂口并在写规划方程时,只要对两条路径走到同一个点的情况稍微处理一下,减少可选的决策个数:危"房*心叫))+两条边长)叫fmin(兄+i(L+两条谊长)点上尹如/(岫胆W叫5从这个例子可以看出,合理地划分阶段和选择状态可以给解题带来方便。[例10]LITTLESHOPOFFLOWERS(IOI’99PROBLEMYouwanttoarrangethewindowofyourflowershopinamostpleasantway.YouhaveFbunchesofflowers,eachbeingofadifferentkind,andatleastasmanyvasesorderedinarow.Thevasesaregluedontotheshelfandarenumberedconsecutively1thiftougHiereVisthenumberofvases,fromlefttorightsothatthevase1istheleftmost,an(thevas^istherightmostvase.ThebunchesaremoveableandareuniquelyidentifiedbyintegersbetweenFlandseid-numbershaveasignificance:Theydeterminetherequiredorderofappearanceoftheflowerbunchesintherowofvasessothatthiniisincieinavasetotheleftofthevasecontainingjwhenhveri<jSuppose,forexample,youhaveabunchofazaleas(id-number=1),abunchofbegonias(id-number=2)andabunchofcarnations(id-number=3).Now,allthebunchesmustbeputintothevaseskeepingtheirid-numbersinorder.Thebunchofazaleasmustbeinavasetotheleftofbegonias,andthebunchofbegoniasmustbeinavasetotheleftofcarnations.Iftherearemorevasesthanbunchesofflowersthentheexcesswillbeleftempty.Avasecanholdonlyonebunchofflowers.Eachvasehasadistinctcharacteristic(justlikeflowersdo).Hence,puttingabunchofflowersinavaseresultsinacertainaestheticvalue,expressedbyaninteger.Theaestheticvaluesarepresentedinatableasshownbelow.Leavingavaseemptyhasanaestheticvalueof0.VASES12345Bunches1(azaleas)723-5-24162(begonias)521-410233(carnations)-215-4-2020Accordingtothetable,azaleas,forexample,wouldlookgreatinvase2,buttheywouldlookawfulinvase4.Toachievethemostpleasanteffectyouhavetomaximizethesumofaestheticvaluesforthearrangementwhilekeepingtherequiredorderingoftheflowers.Ifmorethanonearrangementhasthemaximalsumvalue,anyoneofthemwillbeacceptable.Youhavetoproduceexactlyonearrangement.ASSUMPTIONS.1<=F<=100whereFisthenumberofthebunchesofflowers.Thebunchesarenumbered1throughF..F<=V<=100whereVisthenumberofvases..-50<=A..<=50whereA.,istheaestheticvalueobtainedbyputtingtheflowerbunchiintothevasej.INPUTTheinputisatextfilenamedflower.inp.•Thefirstlinecontainstwonumbers:F,V..ThefollowingFlines:EachoftheselinescontainsVintegers,sothatA.,isgivenasthejthnumberonthe(i+1)stlineoftheinputfile.yOUTPUTTheoutputmustbeatextfilenamedflower.outconsistingoftwolines:.Thefirstlinewillcontainthesumofaestheticvaluesforyourarrangement..ThesecondlinemustpresentthearrangementasalistofFnumbers,sothatthek’thnumberonthislineidentifiesthevaseinwhichthebunchkisput.EXAMPLEflower.inp:35723-5-2416521-41023-215-4-2020flower.out:EVALUATION.Yourprogramwillbeallowedtorun2seconds..Nopartialcreditcanbeobtainedforatestcase.

本题虽然是IOI’9中较为简单的一题,但其中大有文章可作。说它简单,是因为它有序,因此我们一眼便可看出这题应该用动态规划来解决。但是,如何动态规划呢?如何划分阶段,又如何选择状态呢?<方法1>以花束的编号来划分阶段。在这里,第k阶段布置第k束花,共有F束花,有F+1个阶段,增加第F+1阶段是为了计算的方便;状态变量xk表示第k束花所在的花瓶。而对于每一个状态xk,决策uk就是第k+1束花放置的花瓶号;最优指标函数fk(xk)表示从第k束花到第n束花所得到的最大美学值;A(iJ)是花束i插在花瓶j中的美学值,V是花瓶总数,F是花的总数。状态转移方程为况十1=欧规划方程为max3(乩片)+兀+10fc+l))边界条件为:事实上这是一个虚拟的边界。最后要求的最大美学价值是

max<方法2>方法1的规划方程中的允许决策空间:xk+1<uk<V-(F-k)+1比较麻烦,因此有待改进。还是以花束的编号来划分阶段,第k阶段布置第k束花;状态变量xk表示第k束花所在的花瓶;注意,这里我们考虑倒过来布置花瓶,即从第F束花开始布置到第1束花。于是状态变量uk表示第k-1束花所在的花瓶;最优指标fk(xk)表示从第一束花到第k束花所获得的美学价值;A(ij)是花束i插在花瓶j中的美学值,▼是花瓶总数,F是花的总数。则状态转移方程为:西卜1=蜘规划方程为:兀(&)二max0(在叫)+兀项%]))增加的虚拟边界条件为:席侦口)=0最后要求的最大美学价值是:max可以看出,这种方法实质上和方法1没有区别,但是允许决策空间的表示变得简单了。max<方法3>以花瓶的数目来划分阶段,第k个阶段决定花瓶k中是否放花;状态变量xk表示前k个花瓶中放了多少花;而对于任意一个状态xk,决策就是第xk束花是否放在第k个花瓶中,用变量uk=1或0来表示。最优指标函数fk(xk)表示前k个花瓶中插了xk束花,所能取得的最大美学值。注意,这里仍然是倒过来考虑。状态转移方程为4-1~xk~uk规划方程为后(%)二巴对以项去如十蛉用谥成))边界条件为时)=0三种不同的方法都成功地解决了问题,只不过因为阶段的划分不同,状态的表示不

温馨提示

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

评论

0/150

提交评论