全国站

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

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

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

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

华中地区 | 河南 湖北 湖南

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

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

华南地区 | 广东 广西 海南

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

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

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

动态规划的状态表示(二)

三、状态表示对动态规划性能的影响

我们分析问题的时候,总是从不同的角度去思考,以便能全面、本质地认识问题。分析问题的状态表示,我们也是尽可能从不同角度去思考。由此会得到对问题的不同状态表示,从动态规划原理来看,其中有些状态表示不能合乎要求,而在满足要求的那些状态表示中,我们可以以之为基础,构造动态规划模型,实现动态规划算法。在通常情况下,基于不同的状态表示的动态规划算法性能存在着差异,这主要从算法的时间复杂度和空间复杂度体现出来。

上面介绍了问题二的两种状态表示, 状态表示2-1从问题的自然特征来思考, 提出对一般多边形的表示方法,具有其通用性,状态表示2-2则根据多边形划分中关于顶点划分的性质来思考,进而提出了半连续多边形, 现在我们考虑关于多边形边的划分性质,提出状态表示2-3, 并比较三种状态表示,探讨状态表示对动态规划性能的影响。

状态表示2-3

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

k0。图6中多边形(3,4,5,6,7)就是一个连续多边形。

性质2-3 对于一个多边形,它的任一条边一定与另一个顶点组成三角形。如图5,边(1,2)可以与顶点4等顶点相连,形成三角形。

根据性质2-3, 对多边形划分时,我们可以按需要选择边来与其他顶点相连,而不会遗漏多边形的任一种划分,自然也不会遗漏多边形的最优划分。

连续多边形(X,X+1,,,Y)可以用二元组(X,Y)来表示,则D(X,Y)表示连续多边形的划分区域数。

对于连续多边形(X,Y),只要我们选择边(X,Y)与顶点Z(XY)连接,那么(X,Y)划分为三部分:连续多边形(X,Z)、连续多边形(Z,Y)和三角形(X,Z,Y)。(X,Y)的最优划分包含了(X,Z)、(Z,Y)的最优划分,满足最优子结构性质。

注意到初始多边形是一个连续多边形,根据数学归纳法,它的子问题都是连续多边形。因此二元组(X,Y)是一个正确的状态表示。状态转移方程为

D(X,Y) = min(g(X,Y,Z) + D(X,Z)+D(Z,Y)), XY,

f(i,i) = 0, n+10,

当x,y,z在一条直线时,g(x,y,z) = 0, 否则g(x,y,z) = 1。

子问题空间复杂度是O(n2),在本文的假设条件下,使用基本堆空间可以处理顶点数700以内的多边形。下面是求连续多边形最优划分区域数的函数。

[算法2-3]:

function Dynamic(s, t : integer) : integer; {求连续多边形(s,t)的最优划分}

var j, tot : integer;

begin

if D[s, t][1] = 255 then

if t - s = 1 then D[s, t][1] := 0

else

begin

for j := s + 1 to t - 1 do {j 是边(s,t)要连接的顶点}

if 顶点j与顶点s、t连接合法 then

begin

Tot := Dynamic(s, j) + Dynamic(j, t); {子多边形的最优划分}

If 顶点s、t、j不在一条直线上 then Tot := Tot + 1;

if Tot D[s, t][1] then

begin

D[s, t][1] := Tot;

D[s, t][2] := j;

end;

end;

end;

Dynamic := D[s, t][1];

end;

图7

我们来比较三种状态表示描述的子问题空间以及相应动态规划算法的时空性能。在图7中,动态规划的时间复杂度、空间复杂度与子问题空间增长是同阶的。事实上,这样的关系不仅仅局限于这个例子,它具有普遍意义。首先,动态规划空间花费主要是用来存储描述子问题的状态表示,因此空间复杂度自然随着子问题的增多而增大。其次,动态规划的时间花费主要取决于要解决的不同子问题的数目,随着子问题数目的增多,时间复杂度当然就增大了。

既然不同的状态表示会描述不同大小的子问题空间,那么原因何在呢?在这道题中,我们仅仅从多边形的定义来看,有这样的关系:{连续多边形} 是{半连续多边形}的子集,{半连续多边形}是{多边形}的子集。由此可知,应该是状态表示描述子问题不精确造成。

回顾状态表示2-1和状态表示2-2、2-3的分析,我们之所以采取状态表示2-1 是基于对多边形自然特征的认识,而没有考虑到在特定环境下多边形划分而成的子多边形与多边形本身有特殊的联系。比较状态表示2-2、2-3,两者都利用了多边形划分的性质,但显然研究的深度不同。状态表示2-3保证了每种划分都是对多边形的不同划分,因为至少有一条边所在的三角形是与其他划分中所在的三角形不一样。状态2-2就不能保证这一点,如下图所示的两种划分顺序得出了同一种划分。因为这种无意义的划分而产生的多边形属于{半连续多边形}-{连续多边形},如半连续多边形(1,3,5)。

状态表示的改进不仅仅使动态规划的性能提高,通常也会使算法实现更加简洁。比较算法[2-2]、[2-3]我们就可以看出这一点。算法[2-3]的程序见附录。

以上,我们主要讨论状态表示描述的子问题空间不同而影响动态规划。这是状态表示影响动态规划性能的主要原因,但是在算法实现过程中,由于某种原因我们可能对同一子问题采取了不同的描述方法,存储空间会产生极大的差异。下面这个例子说明了这个问题。

问题三: #这个操作符被定义为一个双目运算符,且两个运算对象为正整数,对于整数X,Y,# 号运算定义为(X#Y)=十进制数X各数字之和*十进制数Y的最大数字+十进制数Y的最小数字。例

(9#30)=9*3+0=27,(30#9)=3*9+9=36

对于表达式我们约定或是一正数或是(表达式#表达式)。以下表达式是合法的表达式

a

(a#a)

((a#a)#a)

(a#(a#a)#(a#a)#a))

对于给定的十进制正数a和表达式的值K,计算具有K值的表达式中#的个数。具有k值的表达式可能有许多,并且具有不同的#个数,只需输出最小个数。a,k是均不大于1000000000的正整数。

运算时,我们描述的是正整数k的各位数字和、最大数字和最小数字两个信息(这里把最大、最小数字看成一个信息)以及得到k所用的最少 # 数,那么可以有两种状态表示。

状态表示3-1

我们用一元组(k)表示正数k, D(k)表示所用的#数目。(k)已经隐含了各数字和、最大数字和最小数字两个信息。

状态表示3-2

因为对每个数而言,各位数字和与最大数字、最小数字两个信息具有独立性,我们可以分别记录这两个信息。用一元组(X)表示各位数字和,用二元组(Y,Z)表示最大数字、最小数字。

我们对输入的数a进行特殊处理,而一次运算后的最大数字不超过738,状态表示3-1只要开一个数组,定义如下

Type NumBerType = array[1..738] of integer

因为一次运算后的数值最大是三位数,各位数值和不超过27,用来存储数值和的数组可定义为

Type TotalType = array[1..27] of integer

最大数字、最小数字与数大小无关,它们范围在[0,9],定义为

Type MaxMinType = array[0..9,0..9] of integer

状态表示3-1用一元组同时记录了两个信息,而状态表示3-2则分别记录了这两个信息。显然状态表示3-2所用的空间比状态表示3-1所用的要小的多。同样一个对象,只是由于我们采取不同的描述方法,所用的空间大小就迥然不同。程序见附录。

综上所述,状态表示对动态规划的性能的影响是多方面的。因此,在解决问题时,从各方面比较状态表示,根据具体情况选择高效的状态表示,才能进一步优化动态规划。

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

信息学联赛知识:基本程序题集

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

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

聚焦高中新课改:高一新生可按人生规划选课

信息学联赛知识:基本程序题集解题报告

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

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

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

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

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

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

网友关注

长风破浪会有时——2010重庆冬令营系列报道(四)

长风破浪会有时——2010重庆冬令营系列报道(三)

2006年全国高中数学联合竞赛(一试)试题参考答案及评分标准

2013年中国数学奥林匹克二等奖考生名单

2010国家集训队江西行特别报道之二

第30届全国中学生数学冬令营报道(二):前往重庆

2014年中国东南地区数学奥林匹克组队通知

第30届全国中学生数学冬令营报道(五):考试第二天

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

2010国家集训队江西行特别报道之一

2007年全国高中数学联赛江苏赛区初赛试卷

2007年全国高中数学联赛(吉林赛区)预赛试题

第30届全国中学生数学冬令营报道(四):考试第一天

2012第53届国际数学奥林匹克竞赛(IMO)中国获奖情况

竞赛加分再次取消,我们还玩儿竞赛吗?

近年北京高中数学竞赛多套决赛试题下载(含答案)

2013年中国数学奥林匹克一等奖考生名单

2014美国哈佛—麻省理工大学数学锦标赛报名通知

2006年全国高中数学联合竞赛浙江省预赛试卷

预祝北京队第28届中国数学奥林匹克取得优异成绩

近三年高中数学联赛北京赛区一等奖名单及保送高校

2011年全国高中数学联赛人大附中一等奖成绩

2012年中国数学奥林匹克三等奖获奖名单

查字典十一高中数学联赛模考(二试)解析

2007年全国高中数学联赛江西省预赛试题解答

如何学好高中数学竞赛

第30届全国中学生数学冬令营报道(三):开幕仪式

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

中国数学奥林匹克竞赛北京队斩获6金10银 2人获得满分

2007年全国高中数学联赛江西省预赛试卷

网友关注视频

女儿高考作文只得5分,怎料妈妈一听作文题目,瞬间懂了

武汉美术高考

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

高中信息技术

最新高考数学全国2第12题视频讲解及答案

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

这!就是专业 第18集 中国科学技术大学

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

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

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

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

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

1000张学生用草稿纸考研专用免邮空白便宜薄演草演算纸白纸本书写纸批发打草a4大张实惠装18k高考数学草稿本

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

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

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

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

组合名师余老师在线讲解2019高考数学全国3卷理科16题

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

加油吧考生:2019高考咨询大直播 第43集 科学填报志愿 规划精彩人生

优秀!英语数学双满分,广西“最牛”高考状元730分刷新最高纪录

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

最新高考数学全国2卷第12题视频解读

张雪峰高考志愿填报指南 第47集 高考志愿,令人头疼的数学系,才是专业万金油,毕业后机会多

高考英语作文分析2

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

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

张雪峰高考志愿填报指南 第15集 高考填报志愿,想学电子信息类专业,推荐报这六所高校,不出错

【姜浩张超画室】

高考体育四项生的日常训练——深蹲移动跳:发展膝关节,踝关节力量。