全国站

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

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

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

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

华中地区 | 河南 湖北 湖南

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

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

华南地区 | 广东 广西 海南

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

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

来自:查字典高考网 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堆空间才溢出。空间方面的要求强烈制约了的动态规划的处理问题能力。因此,应用动态规划时,我们采用的状态表示不仅要满足动态规划原理,还必须考虑实现状态表示的空间要求。这两方面体现了对状态表示正确性、可行性的要求,状态表示必须满足这两个要求,动态规划算法才能实现。

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

2007数学考试重点:和、差、倍角的三角函数 (1)

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

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

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

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

2007全国高中数学联赛江苏赛区初赛参考解答

专家点评:为什么上本科线的考生一样会落榜?

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

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

高三家长必读:考生每天要学会思考的一件事

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

网友关注

专家提醒:高考生应科学管理时间忌开夜车

参考广告排除盲目高考前专家支招保健品选购

高考前要平衡考生膳食巧搭配保证生活有规律

考前饮食应以清淡为主失眠千万别服用安眠药

营养师建议的科学食物搭配

距高考仅剩一个月高三“夜猫子”该调生物钟

专家特别提醒高考前别盲目为考生进补

靠吸氧不能缓解疲劳充分放松心情才是根本

上床太早凌晨一点睡不着让高考减分的小失误

高考细节之饮食篇:考生吃什么零食比较好?

专家提醒:忌以饮料代替水考生饮食7个宜忌

动物内脏补脑上品最受高考生青睐的八种食物

高考前饮食应做到“三大纪律八项注意”

高考家长流行手抄食谱称按谱吃饭可加30分?

高考冲刺饮食注意事项保健品不宜服用过多

备战2008高考:大考前需防5种“高考病”

专家提醒:食补忌破常规考前一日六餐不可取

不宜滥用营养滋补品医生提醒高考生四不宜

高考生考前需保证饮食规律多吃清淡的食物

专家提示:有些食物考生在考试前别多吃(图)

大脑要求多高考前给考生补充营养七个要素

抗疲劳保健品要慎选高考怎样科学选择保健品

红茶会使你神清气爽五种食物帮考生“解压”

高考前健康睡眠小秘诀:给自己选一个好枕头

有害还是有益高考前营养保健品该不该吃

合理安排考前饮食营养切勿滥用保健品

早饭中饭晚饭夜宵高考一天四餐巧安排

高考饮食家长最关心补脑均营养休息好是关键

少吃生冷防腹泻高考临近考生如何预防疾病

保健专家提醒:考生在高考前吃饭要五忌二宜

网友关注视频

老马讲高考真题第九季2018年高考地理新课标一卷第37题

这四首励志歌曲,送给为梦起航的高考学子们,听完心潮澎湃!

北京新闻 2019 5.9万余北京考生今日高考 语文试题鼓励创造性阅读与表达

乾坤已定,组合解读2019高考数学全国3卷理科18题,你是黑马吗?

张雪峰高考志愿填报指南 第28集 高考志愿分析,材料科学与工程专业,就业很一般,建议慎重选择

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

评测今年的高考语文卷

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

儿子高考英语没考,上了西京交大,老爸忍不了:复读!上清华!

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

招办面对面 第76集 阜阳师范学院信息工程学院

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

知道班里的高考成绩后,山东班主任气吐血了

高中语文知识清单高考语文总複习工具书第5次修订五全綵版五三曲一线科学备考基础知识手册知识大集结资料书参考书导书高一高二高三

amc传媒音乐影像 第一季 第598集 西安原创乐队走进英泰青卓 用音乐助力高考学子

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

一站到底:高考语文老师上台,穿长衫说Rap,全场笑翻了!

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

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

2019高考语文试卷解析

高考帮:招办面对面 第55集 上海视觉艺术学院

2019高考·语文试题有亮点 凸显时代主题 厚植家国情怀

星闻乐坊 第1272集 张杰的一首歌成了高考神曲

高级中学高考试卷分析专题教研评比活动

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

高级中学高考试卷分析专题教研评比活动

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

2019年高考数学全国2卷理科第4题讲解及答案

这!就是专业 第43集 河北经贸大学—计算机科学与技术专业

初二辍学,3次高考落榜,如今却成为最成功的音乐人之一