全国站

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

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

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

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

华中地区 | 河南 湖北 湖南

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

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

华南地区 | 广东 广西 海南

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

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

来自:查字典高考网 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所用的要小的多。同样一个对象,只是由于我们采取不同的描述方法,所用的空间大小就迥然不同。程序见附录。

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

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

信息学联赛知识:Complete Search

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

高中数学联赛培训讲义(三)

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

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

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

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

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

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

全国高中数学联合竞赛简介

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

网友关注

2012年上海市普通高校招生表演类专业统考合格线确定

西南交通大学2015年高水平运动队招生简章

东北师范大学2015年运动训练专业招生简章

湖南2010年艺考各专业合格线公布 均为150分

西华大学2015年高水平运动员招生简章

湖北大学2015年高水平运动员招生简章

2010年河北普通高校招生美术类联考合格线

2010年贵州省高考艺术专业考试合格分数线

2010年北京高考美术统考合格线划定

陕西2010年高校招生美术类专业统考成绩揭晓

天津2009年艺术体育类招生考试分数线

2010年安徽艺术高考统考专业合格线划定

2010年海南美术统考专业合格分数线

三峡大学2015年高水平运动员招生简章

西南石油大学2015年高水平运动员招生简章

西南政法大学2015年高水平运动员招生简章

青海:2012年省普通高校招生艺术统考合格线

新疆2010年美术类专业统考合格线公布

黑龙江省2012年美术联考合格线不低于180分

内蒙古2010年艺术高考美术类统考分数线

2012年上海市普通高校招生音乐类专业统考合格线确定

山东师范大学2015年高水平运动员招生简章

吉林省2010年艺术统考美术类专业分数线确定

上海2010年艺术高考专业合格线

2010年广东艺术高考分数线公布 专科不划线

山东2010年美术类专业统一考试合格线公布

山西2010年普通高校美术类省统考成绩揭晓

湖北2010年艺术高考美术专业合格线公布

2012年上海市普通高校招生美术类专业统考合格线确定

2010年广西艺术统考分数线划定

网友关注视频

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

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

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

视频|2019全国高考今日开考: 语文特级教师评析上海卷高考作文

你高考成绩高吗?这道题目怎能成立?高难度奥数,能不能把你难住

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

如何制作100万层的酥皮糕点?推算过程像数学高考题

体育大杂烩 第2217集 太厉害!马龙登上全国高考作文题

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

葛军大爷怒了:高考我出了个小学数学送分题,你们跟我说不会做?

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

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

评测今年的高考语文卷

2019高考语文全国2卷小说阅读解析

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

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

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

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

NBA流言收割机 第6集 神预测?高考数学试题暗示猛龙勇士4

这!就是专业 第15集 中国矿业大学——数学专业

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

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

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

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

高考帮:这!就是专业 第8集 安徽师范大学

这!就是专业 第20集 长沙理工大学—数据科学专业

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

高考英语作文分析2

这!就是专业 第1集 川农动物科学专业解读

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