全国站

热门城市 | 全国 北京 上海 广东

华北地区 | 北京 天津 河北 山西 内蒙古

东北地区 | 辽宁 吉林 黑龙江

华东地区 | 上海 江苏 浙江 安徽 福建 江西 山东

华中地区 | 河南 湖北 湖南

西南地区 | 重庆 四川 贵州 云南 西藏

西北地区 | 陕西 甘肃 青海 宁夏 新疆

华南地区 | 广东 广西 海南

资    源
  • 资    源
当前位置:查字典高考网>高中频道>信息学联赛知识>信息学联赛知识:动态规划的状态表示(一)

信息学联赛知识:动态规划的状态表示(一)

来自:查字典高考网 2009-11-12

一、引言

问题求解技术,包括两个方面的内容:表示和搜索。在这两个方面的内容中,搜索是重点,表示是基础。不同的状态表示对搜索的效率会产生极大的影响。一个粗糙的状态表示可能使得搜索时要对状态变换进行更多的操作,而采取简洁的表示,搜索时进行的操作可能就显得方便、高效,甚至由于状态表示准确描述了问题的本质,给人以启示,从而找到更好的搜索技术。动态规划是求解问题的一个重要技术,它的状态表示在整个算法中有着举足轻重的作用,对整个算法的影响也远比其他搜索技术中的状态表示更为深刻。

本文以实例对动态规划的状态表示进行一些讨论。

二、 动态规划对状态表示的要求

在动态规划程序设计中,我们主要利用了问题的两个性质:最优子结构和子问题重叠。最优子结构指问题的最优解包含了子问题的最优解,它是动态规划方法可行的理论基础。而一个问题具有子问题重叠性质是指用递归算法自顶向下解这个问题时,并不总是产生新的子问题,有些子问题被重复求解多次。

因为最优子结构性质,动态规划求问题最优解时,可以转化为求子问题的最优解,而对解决过的问题,动态规划则记录它的结果,当再次遇上已解决的问题,就可以直接利用结果。子问题重叠性质保证了这样做是有意义的。但一般的搜索技术,对于某个子问题不管是否已经解决过,只要遇上,就会再次对这个子问题进行求解。

很明显,动态规划与一般搜索技术最大不同的地方就是记录了已求解过的问题的结果。这里包含了两个方面的内容 :子问题的记录和子问题结果的记录。其中,子问题的记录是最重要,也是最为复杂的,它就是通常我们所说的状态表示。

通常我们用一个数、一组数或一个向量来实现状态表示。但无论采取什么方法,从动态规划的原理来看,状态表示要满足两个要求:正确、合理描述子问题和描述的子问题满足最优子结构性质;从算法实现角度来看,状态表示必须能够用基本数据结构实现并且能满足空间要求。

下面通过两个问题来阐述动态规划对状态表示的要求。

问题一:存在一个数字三角形,从顶到底有多条路径, 每一步可沿左斜线向下或沿右斜线向下。路径所经过的数字之和称为路径得分,要求求出最小路径得分。

例: 1 1

2 3 2 3

3 2 3 3 2 3

3 8 1 2 3 8 1 2

最小路径得分=6

状态表示1-1

最自然的作法是用一元组(X)描述问题,D(X)表示从顶到达第X层的得分。但是一元组(X)描述的子问题不能满足最优子结构性质, 因为D(X)的最优解可能不包含子问题D(X-I)的最优解。这样,动态规划方法是无法在状态表示1-1上应用的。

状态表示 1-2

用二元组D(X,Y)描述问题,D(X,Y)表示到达第X层第Y个位置时的得分,那么D(X,Y)的最优解包含了子问题D(X-1,Y)或D(X-1,Y-1)的最优解,状态转移方程为

D(X,Y)= Max {D(X-1,Y),D(X-1,Y-1)} + A[X,Y]

D(1,1)= A[1,1]

这样,最小路径得分可以通过比较底层的分数求得。

一般情况下,我们找到的状态表示应能刻划子问题的特征,困难的是如何找到描述的子问题能满足最优子结构性质的状态表示,而这一点恰恰是决定该问题能否应用动态规划方法的重要因素。状态表示1-1描述的问题是正确的,但它不能满足最优子结构性质,使得无法用它来建立动态规划数学模型。状态分析的过程实际上是分析问题最优子结构的过程,不同的状态表示正是从不同的角度去试图刻划问题的最优子结构。只有状态表示描述的子问题能满足最优子结构性质,我们才能在此基础上正确的建立起动态规划数学模型。

问题二 : 在茫茫大海中,有一座荒芜人烟的小岛,它有着肥沃的土地,终年四季如春。在许多年的沉寂后,移民者终于踏上了这块土地,接下来的事情就是对土地进行垦荒。小岛呈不规则多边形形状,为了便于管理,移民者决定将小岛划分为三角形区域且三角形区域的个数要最少,这些三角形区域的顶点必须是小岛的顶点。 显然, 用来描述小岛的多边形的任两个顶点不重合,任两条边不相交,三角形区域内只有陆地。

要求输入多边形的顶点数 n和它的顺时针坐标,返回最小区域数和具体的划分方法。

例 : 给定如左图所示的小岛, 可有右图所示的两种划分, (1)划分为3个区域,是最优的。(2)划分为4个区域。

图(1) 图(2)

状态表示2-1

根据多边形的自然特征,一个多边形顶点的顺时针序列将正确的描述多边形的特征。例如在图(1)中,序列(1,2, ,N-1 ,N)可以表示多边形A,序列(1,2,,K)可以表示多边形B,同样序列(K,K+1,,N)可以表示多边形C。

由于在问题二中,多边形的顶点的序号已经隐含了顶点之间的顺序,我们只要记录多边形的顶点,而不必记录顶点顺序。基于这个性质,我们可以用一个十进制数来表示一种状态。一个十进制数通过它对应的二进制数来描述多边形。二进制数X第k位上的0、1值代表这个多边形是否包含第k个顶点。例如 (011011)2的1,2,4,5位上数值是1,则 这个二进制数代表多边形(1,2,4,5),用相应的十进制数表示就是27。

于是用一元组(A)描述多边形, D(A)表示多边形A的划分区域数。多边形B、C是由多边形划分A而成的两个多边形,那么,这种划分下,多边形的最优划分必然包含多边形B、C的最优划分,问题满足最优子结构性质。

那么状态转移方程可以表示为

D(A)= Min(D(B)+ D(C))

子问题的空间复杂度为O(2n),当n=20,基本堆空间就溢出了(本文假设基本堆空间是219=524288 byte并且每个子问题的状态表示只要1 byte) ,动态规划只能处理顶点数小于20的多边形。

状态表示2-2

定义2-2 多边形(A1,A2,,Ak)是由多边形(1,2,,N)划分而来的多边形,我们称多边形(A1,A2,,Ak)为半连续多边形,当且仅当Ai+1 = Ai+1 ,

k1。图4中多边形(1,4,5,6,7)就是一个半连续多边形。

性质2-2 对于一个多边形,它的任一顶点a只有两种划分情况:一是顶点a的两个相邻顶点连接,一是顶点a与其他顶点连接,并且这两种划分必有其一。如图3,顶点1的划分情况:顶点1的相邻顶点(2,9)连接;顶点1与顶点4连接。

我们可以用一个三元组(X,Y,Z)描述半连续多边形,D(X,Y,Z)表示半连续多边形(X,Y,Y+1,,Z)的划分区域数。

根据性质2-1,对半连续多边形(X, Y, Z)可以只考虑顶点X 的划分,划分后的多边形仍然是半连续多边形,于是,状态表示2-2不但可以描述问题的特征,也可以正确描述子问题的特征。考虑到(X,Y,Z)最优划分包含了它的子半连续多边形的最优划分,状态表示2-2描述的子问题满足最优子结构性质。

根据定义,初始多边形是一个半连续多边形,表示为(1,2,N)。状态转移方程为

D(X,Y,Z) = Min {D(Y,Y+1,Z)+g(X,Y,Z), D(X,J,Z)+D(X,Y,J)}, ZY

f(J,I,I) = 0, n+1J0,

当X,Y,Z在一条直线时,g(X,Y,Z) = 0, 否则g(X,Y,Z) = 1。

状态表示2-2的子问题空间只有 O(n3),动态规划最多可以处理顶点数 80的多边形。以下给出求半连续多边形最优划分区域数的函数。

[算法2-2]:

function Dynamic(x, y, z : integer) : integer;

{求半连续多边形(x,y, z)的最优划分}

var j, tot : integer;

begin

if D[x, y, z] = 255 then

if y - z = 1 then

if x,y,z三点共线 then D[x, y, z] := 0 else D[x,y,z] := 1

else

begin

if 顶点y与顶点z连接合法 then

begin

D[x,y,z] := Dynamic(y,y+1,z);

If x,y,z 三点不共线 then D[x,y,z] := D[x,y,z]+1;

End;

for j := y + 1 to z - 1 do {j 是顶点x要连接的顶点}

if 顶点x与顶点j 连接合法then

begin

Tot := Dynamic(x, y, j) + Dynamic(x, j, z);

{子多边形的最优划分}

if Tot D[x, y, z] then

begin

D[x, y, z] := Tot;

end;

end;

end;

Dynamic := D[x, y, z];

end;

上述两种状态表示都能正确描述多边形,并且描述的多边形都能满足最优子结构性质,从动态规划原理要求来看,已经满足要求了,在状态表示2-1、状态表示2-2基础上可以正确的建立动态规划数学模型。但是,具体实现方面仍有一些问题没有解决。

从图中可以看到,状态表示2-1的空间要求随着顶点数n的增大急剧增长,正如前面所分析的,当n=20时,常用的堆空间就溢出了。而随着顶点数n的增大,状态2-2的空间要求的增大相对就缓慢多了,n一直到81堆空间才溢出。空间方面的要求强烈制约了的动态规划的处理问题能力。因此,应用动态规划时,我们采用的状态表示不仅要满足动态规划原理,还必须考虑实现状态表示的空间要求。这两方面体现了对状态表示正确性、可行性的要求,状态表示必须满足这两个要求,动态规划算法才能实现。

【信息学联赛知识:动态规划的状态表示(一)】相关文章:

2006年全国高中数学联赛江西省预赛试卷答案及评分标准

高二数学联赛讲座三角函数及其最值(三)

高中数学竞赛基本知识集锦(四)

信息学联赛知识:ISBN号码

北京示范校巡礼:建在农村的示范校永乐店中学

高中数学竞赛基本知识集锦(一)

2005年全国高中数学联赛考点诠释(一)

信息学联赛知识:贪心策略的特点与在信息学竞赛中的应用

2007年江苏省高中数学联赛初赛试题参考答案及评分标准

2007年高中数学联赛四川赛区初赛试题参考答案及评分标准

[标签:竞赛联赛,数学联赛]

网友关注

2004年云南高考优秀作文:那时花开

2005年江苏高考优秀作文:生命的绝唱

2005年浙江高考优秀作文:花草的意义

2004年云南高考优秀作文:挫折、痛苦、人生

2005年江苏高考优秀作文:下辈子还在您的女儿

2005年浙江高考优秀作文:折射

2004年福建高考优秀作文:苏轼的赤壁

2004年广东高考优秀作文:语言与沟通

2004年湖北省高考优秀作文:镜中日本

2005年浙江高考优秀作文:众生

2005年浙江高考优秀作文:见微之著

2005年江苏高考优秀作文:青春从四十岁开始

2004年天津高考优秀作文范文:我是人才吗

2005年浙江高考优秀作文:枯树·世界

2004江苏高考优秀作文:稳中求胜

2004年广东高考优秀作文:语言,沟通的基石

2004年北京高考优秀作文:兼容并包

2004年福建高考优秀作文:任是“无情”也动人

2004年广东高考优秀作文:语言—沟通的加速

2004年湖北省高考优秀作文:买好一面镜 胜过百黄金

2004年黑龙江高考优秀作文:一蓑烟雨任平生

2004年辽宁高考优秀作文:平凡与自豪

2004年福建高考优秀作文:人生的斗士

2004江苏高考优秀作文:永远的葱郁 永远的中国

2004年湖南高考作文范文:蝶的翅膀 鱼的泪光

2005年浙江高考优秀作文:一江清流

2004年辽宁高考优秀作文:我平凡,我自豪

2004年福建高考优秀作文:治世之能臣,乱世之奸雄

2004年广东高考优秀作文:沟通,勿轻语言

湖北省2003高考满分作文:普朗克的忏悔书

网友关注视频

高中数学必修5 高考数列选填真题技巧秒杀讲解

盘点今年最难的高考数学题

高考作文:全国2卷 材料作文破题分析 2019高考助力

2019高考数学全国2卷理科第16题视频讲解及答案

2019高考数学第四题技巧秒出答案

励志歌曲《阳光总在风雨后》送给高考的莘莘学子,祝金榜题名!

沈阳音乐学院郎亦农教授的女高音高考曲目解析课程 第9集 《赛吾里麦》演唱讲解,音乐表现一定要自然流畅

2019 广西:帅气学霸高考730分 数学英语满分!

招办面对面 第2集 中国科学技术大学

探秘历史 第二季 第479集 河南叛逆高考生,写下8000字批判作文,现状如何?

2019全国高考志愿填报攻略 第50集 天津市高考历史三年本科录取排名

印度美术高考美术联考,考前培训班

男孩考上理想大学,却因为网瘾休学在家,高中班主任上门劝导

探秘历史 第二季 第211集 此人高考数学考了0分,因作文写3句话被重点大学录取

爆笑班主任 第一季 第221集 高考结束学生有多疯狂?山东王老师疯狂吐槽

高考英语作文分析2

【高考英语】七选五解析,不算太难

一边扔试卷一边玩摇滚?这个学校的高考减压方式,真是帅到没朋友

衍声高考琴行2019高本硕学生暑假音乐会 张俊瀚《陕北民歌主题变奏曲》《阿根廷舞曲》第三乐章

amc传媒音乐影像 第一季 第600集 高中校长演唱《记忆花园》为高考学子助力打气

凤凰县高级中学高考试卷分析专题教研会

高考阅卷名师给考生的高考作文密训课 第4集 高考作文审题实操方法精讲(二)

美术联考用纸上海考试模拟试卷纸高考统考纸 4k水粉纸素描纸 速写纸卡纸美术模拟测试试卷纸 美术考试专用纸

武汉美术高考

高中信息技术

高中数学 107 高考如何秒杀数列

小品:马云被宋小宝调侃当年数学高考考一分!

广州早晨 2019 山西一高中班主任带学生骑行1800公里去上海

爆笑班主任 第一季 第220集 高考前最后一只视频,山东王老师揭秘高考的秘密

学渣男高考英语全写B,老师给老爸说成绩,老爸直接听懵了!