动态规划的技巧阶段的划分和状态的表示.docx

上传人:b****8 文档编号:23782127 上传时间:2023-05-20 格式:DOCX 页数:7 大小:38.56KB
下载 相关 举报
动态规划的技巧阶段的划分和状态的表示.docx_第1页
第1页 / 共7页
动态规划的技巧阶段的划分和状态的表示.docx_第2页
第2页 / 共7页
动态规划的技巧阶段的划分和状态的表示.docx_第3页
第3页 / 共7页
动态规划的技巧阶段的划分和状态的表示.docx_第4页
第4页 / 共7页
动态规划的技巧阶段的划分和状态的表示.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

动态规划的技巧阶段的划分和状态的表示.docx

《动态规划的技巧阶段的划分和状态的表示.docx》由会员分享,可在线阅读,更多相关《动态规划的技巧阶段的划分和状态的表示.docx(7页珍藏版)》请在冰豆网上搜索。

动态规划的技巧阶段的划分和状态的表示.docx

动态规划的技巧阶段的划分和状态的表示

动态规划的技巧——阶段的划分和状态的表示

动态规划的技巧——阶段的划分和状态的表示

在动态规划的设计过程中,阶段的划分和状态的表示是非常重要的两步,这两步会直接影响该问题的计算复杂性,有时候阶段划分或状态表示的不合理还会使得动态规划法不适用。

[例9] 街道问题

在下图中找出从左下角到右上角的最短路径,每步只能向右方或上方走。

这是一道简单而又典型的动态规划题,许多介绍动态规划的书与文章中都拿它来做例子。

通常,书上的解答是这样的:

按照图中的虚线来划分阶段,即阶段变量k表示走过的步数,而状态变量xk表示当前处于这一阶段上的哪一点。

这时的模型实际上已经转化成了一个特殊的多段图。

用决策变量uk=0表示向右走,uk=1表示向上走,则状态转移方程如下:

(这里的row是地图竖直方向的行数)

我们看到,这个状态转移方程需要根据k的取值分两种情况讨论,显得非常麻烦。

相应的,把它代入规划方程而付诸实现时,算法也很繁。

因而我们在实现时,一般是不会这么做的,而代之以下面方法:

(这里Distance表示相邻两点间的边长)

这样做确实要比上面的方法简单多了,但是它已经破坏了动态规划的本来面目,而不存在明确的阶段特征了。

如果说这种方法是以地图中的行(A、B、C、D)来划分阶段的话,那么它的"状态转移"就不全是在两个阶段之间进行的了。

也许这没什么大不了的,因为实践比理论更有说服力。

但是,如果我们把题目扩展一下:

在地图中找出从左下角到右上角的两条路径,两条路径中的任何一条边都不能重叠,并且要求两条路径的总长度最短。

这时,再用这种"简单"的方法就不太好办了。

如果非得套用这种方法的话,则最优指标函数就需要有四维的下标,并且难以处理两条路径"不能重叠"的问题。

而我们回到原先"标准"的动态规划法,就会发现这个问题很好解决,只需要加一维状态变量就成了。

即用xk=(ak,bk)分别表示两条路径走到阶段k时所处的位置,相应的,决策变量也增加一维,用uk=(xk,yk)分别表示两条路径的行走方向。

状态转移时将两条路径分别考虑

在写规划方程时,只要对两条路径走到同一个点的情况稍微处理一下,减少可选的决策个数:

从这个例子可以看出,合理地划分阶段和选择状态可以给解题带来方便。

[例10]LITTLESHOPOFFLOWERS(IOI’99)

PROBLEM

Youwanttoarrangethewindowofyourflowershopinamostpleasantway.Youhave F bunchesofflowers,eachbeingofadifferentkind,andatleastasmanyvasesorderedinarow.Thevasesaregluedontotheshelfandarenumberedconsecutively1through V,where V isthenumberofvases,fromlefttorightsothatthevase1istheleftmost,andthevase V istherightmostvase.Thebunchesaremoveableandareuniquelyidentifiedbyintegersbetween1and F.Theseid-numbershaveasignificance:

Theydeterminetherequiredorderofappearanceoftheflowerbunchesintherowofvasessothatthebunch imustbeinavasetotheleftofthevasecontainingbunch j whenever i < j.Suppose,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.

 

VASES

1

2

3

4

5

Bunches

1(azaleas)

7

23

-5

-24

16

2(begonias)

5

21

-4

10

23

3(carnations)

-21

5

-4

-20

20

Accordingtothetable,azaleas,forexample,wouldlookgreatinvase2,buttheywouldlookawfulinvase4.

Toachievethemostpleasanteffectyouhavetomaximizethesumofaestheticvaluesforthearrangementwhilekeepingtherequiredorderingoftheflowers.Ifmorethanonearrangementhasthemaximalsumvalue,anyoneofthemwillbeacceptable.Youhavetoproduceexactlyonearrangement.

ASSUMPTIONS

∙1<= F <=100where F isthenumberofthebunchesofflowers.Thebunchesarenumbered1through F.

∙F <= V <=100where V isthenumberofvases.

∙-50<= Aij <=50where Aij istheaestheticvalueobtainedbyputtingtheflowerbunch i intothevase j.

INPUT

Theinputisatextfilenamed flower.inp.

∙Thefirstlinecontainstwonumbers:

 F, V.

∙Thefollowing F lines:

Eachoftheselinescontains V integers,sothat Aij isgivenasthe jth numberonthe(i+1)st lineoftheinputfile.

OUTPUT

Theoutputmustbeatextfilenamed flower.out consistingoftwolines:

∙Thefirstlinewillcontainthesumofaestheticvaluesforyourarrangement.

∙Thesecondlinemustpresentthearrangementasalistof F numbers,sothatthe k’thnumberonthislineidentifiesthevaseinwhichthebunch k isput.

EXAMPLE

flower.inp:

35

723-5-2416

521-41023

-215-4-2020

flower.out:

53

245

EVALUATION

∙Yourprogramwillbeallowedtorun2seconds.

∙Nopartialcreditcanbeobtainedforatestcase.

本题虽然是IOI’99中较为简单的一题,但其中大有文章可作。

说它简单,是因为它有序,因此我们一眼便可看出这题应该用动态规划来解决。

但是,如何动态规划呢?

如何划分阶段,又如何选择状态呢?

<方法1>

以花束的编号来划分阶段。

在这里,第k阶段布置第k束花,共有F束花,有F+1个阶段,增加第F+1阶段是为了计算的方便;状态变量xk表示第k束花所在的花瓶。

而对于每一个状态xk,决策uk就是第k+1束花放置的花瓶号;最优指标函数fk(xk)表示从第k束花到第n束花所得到的最大美学值;A(i,j)是花束i插在花瓶j中的美学值,V是花瓶总数,F是花的总数。

状态转移方程为 

规划方程为

边界条件为:

事实上这是一个虚拟的边界。

最后要求的最大美学价值是

<方法2>

方法1的规划方程中的允许决策空间:

xk+1≤uk≤V-(F-k)+1比较麻烦,因此有待改进。

还是以花束的编号来划分阶段,第k阶段布置第k束花;状态变量xk表示第k束花所在的花瓶;注意,这里我们考虑倒过来布置花瓶,即从第F束花开始布置到第1束花。

于是状态变量uk表示第k-1束花所在的花瓶;最优指标fk(xk)表示从第一束花到第k束花所获得的美学价值;A(i,j)是花束i插在花瓶j中的美学值,V是花瓶总数,F是花的总数。

则状态转移方程为:

规划方程为:

增加的虚拟边界条件为:

最后要求的最大美学价值是:

可以看出,这种方法实质上和方法1没有区别,但是允许决策空间的表示变得简单了。

<方法3>

以花瓶的数目来划分阶段,第k个阶段决定花瓶k中是否放花;状态变量xk表示前k个花瓶中放了多少花;而对于任意一个状态xk,决策就是第xk束花是否放在第k个花瓶中,用变量uk=1或0来表示。

最优指标函数fk(xk)表示前k个花瓶中插了xk束花,所能取得的最大美学值。

注意,这里仍然是倒过来考虑。

状态转移方程为

规划方程为

边界条件为

三种不同的方法都成功地解决了问题,只不过因为阶段的划分不同,状态的表示不同,决策的选择有多有少,所以算法的时间复杂度也就不同。

这个例子具有很大的普遍性。

有很多的多阶段决策问题都有着不止一种的阶段划分方法,因而往往就有不止一种的规划方法。

有时各种方法所产生的效果是差不多的,但更多的时候,就像我们的例子一样,两种方法会在某个方面有些区别。

所以,在用动态规划解题的时候,可以多想一想是否有其它的解法。

对于不同的解法,要注意比较,好的算法好在哪里,差一点的算法差在哪里。

从各种不同算法的比较中,我们可以更深刻地领会动态规划的构思技巧。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1