




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
动态规划在信息学奥林匹克竞赛中的应用一.动态规划含义:在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都要做出决策,从而使整个过程达到最好的活动效果.因此,各个阶段决策确定后,组成一个决策序列,因而也就确定了整个过程的一条活动路线.这种把一个问题看作是一个前后关联具有链状结构的多阶段过程,就称为多阶段决策过程,这种问题称为多阶段决策问题.在多阶段决策问题中,各个阶段采取的决策,一般来说是和时间有关的,决策依赖于当前状态,又随即引起状态的转移,一个决策序列就是在变化的状态中产生出来的,故有动态的含义,我们称这种解决多阶段决策最优化的过程为动态规划. 二.动态规划特征动态规划的显著特征是:无后效性,有边界条件,且一般划分为很明显的阶段.动态规划一般还存在一条或多条状态转移方程.三.例题1. Catcher防卫导弹 (GDOI98)题目讲得很麻烦,归根结底就是求一整串数中的最长不上升序列这道题目一开始我使用回溯算法,大概可以拿到1/3的分吧,后来发现这其实是动态规划算法中最基础的题目,用一个二维数组C1.Max,1.2来建立动态规划状态转移方程(注:C1.Max,1表示当前状态最多可击落的导弹数,C1.Max,2表示当前状态的前继标志):Ci=MaxCj+1,(j=i+1.n),然后程序也就不难实现了.示范程序:program catcher_hh;varf:text;i,j,k,max,n,num:integer;a:array 1.4000 of integer; 导弹高度数组c:array 1.4000,1.2 of integer; 动态规划数组procedure readfile;beginassign(f,catcher.dat); reset(f);readln(f,num);for i:=1 to num doreadln(f,ai);end;procedure work;beginfillchar(c,sizeof(c),0); cnum,1:=1; 清空数组,赋初值开始进行动态规划for i:=num-1 downto 1 dobeginn:=0; max:=1;for j:=i+1 to num doif (aiaj) and (maxmax then begin max:=ci,1; n:=i; end;返回寻找路径repeatwriteln(n, ); n:=cn,2;until n=0;end;beginreadfile; work;end.2. Perform巡回演出 (GDKOI2000)题目描述:Flute市的Phlharmoniker乐团2000年准备到Harp市做一次大型演出,本着普及古典音乐的目的,乐团指挥L.Y.M准备在到达Harp市之前先在周围一些小城市作一段时间的巡回演出,此后的几天里,音乐家们将每天搭乘一个航班从一个城市飞到另一个城市,最后才到达目的地Harp市(乐团可多次在同一城市演出).由于航线的费用和班次每天都在变,城市和城市之间都有一份循环的航班表,每一时间,每一方向,航班表循环的周期都可能不同.现要求寻找一张花费费用最小的演出表.输入:输入文件包括若干个场景.每个场景的描述由一对整数n(2=n=10)和k(1=k=1000)开始,音乐家们要在这n个城市作巡回演出,城市用1.n标号,其中1是起点Flute市,n是终点Harp市,接下来有n*(n-1)份航班表,一份航班表一行,描述每对城市之间的航线和价格,第一组n-1份航班表对应从城市1到其他城市(2,3,.n)的航班,接下的n-1行是从城市2到其他城市(1,3,4.n)的航班,如此下去.每份航班又一个整数d(1=d=30)开始,表示航班表循环的周期,接下来的d个非负整数表示1,2.d天对应的两个城市的航班的价格,价格为零表示那天两个城市之间没有航班.例如3 75 0 80表示第一天机票价格是75KOI,第二天没有航班,第三天的机票是80KOI,然后循环:第四天又是75KOI,第五天没有航班,如此循环.输入文件由n=k=0的场景结束.输出:对每个场景如果乐团可能从城市1出发,每天都要飞往另一个城市,最后(经过k天)抵达城市n,则输出这k个航班价格之和的最小值.如果不可能存在这样的巡回演出路线,输出0.样例输入:3 62 130 1503 75 0 807 120 110 0 100 110 120 04 60 70 60 503 0 135 1402 70 802 32 0 701 800 0样例输出:4600初看这道题,很容易便可以想到动态规划,因为第x天在第y个地方的最优值只与第x-1天有关,符合动态规划的无后效性原则,即只与上一个状态相关联,而某一天x航班价格不难求出S=C(x-1) mod m +1.我们用天数和地点来规划用一个数组A1.1000,1.10来存储,Ai,j表示第i天到达第j个城市的最优值,Ci,j,l表示i城市与j城市间第l天航班价格,则Ai,j=MinAi-1,l+Cl,j, beginfor l:=1 to n dobeginif (jl)i (l=1.n且Cl,j,i0),动态规划方程一出,尽可以放怀大笑了.示范程序:program perform_hh;varf,fout:text;p,l,i,j,n,k:integer;a:array 1.1000,1.10 of integer; 动态规划数组c:array 1.10,1.10 of record 航班价格数组num:integer;t:array 1.30 of integer;end;e:array 1.1000 of integer;procedure work;begin人工赋第一天各城市最优值for i:=1 to n dobeginif c1,i.t10then a1,i:=c1,i.t1;end;for i:=2 to k dobeginfor j:=1 to n doand (cl,j.t(i-1) mod cl,j.num+10) 判断存在航班and (ai,j=0) or (ai-1,l+cl,j.t(i-1) mod cl,j.num+1ai,j) 判断比当前解优then ai,j:=ai-1,l+cl,j.t(i-1) mod cl,j.num+1; 赋值end;end;end;ep:=ak,n; 第p个场景的最优值end;procedure readfile; 读文件beginassign(f,PERFORM.DAT); reset(f); assign(fout,PERFORM.OUT); rewrite(fout);readln(f,n,k); p:=0;while (n0) and (k0) dobeginp:=p+1;fillchar(c,sizeof(c),0);fillchar(a,sizeof(a),0);for i:=1 to n dobeginfor j:=1 to i-1 dobeginread(f,ci,j.num);for l:=1 to ci,j.num doread(f,ci,j.tl);end;for j:=i+1 to n dobeginread(f,ci,j.num);for l:=1 to ci,j.num doread(f,ci,j.tl);end;end;work;readln(f,n,k);end;输出各个场景的解for i:=1 to p-1 dowriteln(fout,ei);write(fout,ep);close(f);close(fout);end;beginreadfile;end.四.小结动态规划与穷举法相比,大大减少了计算量,丰富了计算结果,不仅求出了当前状态到目标状态的最优值,而且同时求出了到中间状态的最优值,这对于很多实际问题来说是很有用的.这几年,动态规划已在各省市信息学奥林匹克竞赛中占据相当重要的地位,每年省赛8道题目中一般有23道题目属于动态规划,动态规划相比一般穷举也存在一定缺点:空间占据过多,但对于空间需求量不大的题目来说,动态规划无疑是最佳方法!五.课后题目1. m个人抄n本书,每本书页数已知,每个人(第一个人除外)都必须从上一个人抄的最后一本书的下一本抄起(书必须整本整本的抄),求一种分配方法,使抄书页数最多的人抄书页数尽可能少. (GDOI99 Books).2. 有一字符串有多种编码方式可供人选择,将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025跨国技术合作合同
- 2025年法制宣传日法律基础知识竞赛题库及参考答案
- 地理知识培训感受课件
- 地球队清洁工课件
- 2025年高热的护理试题及答案
- 跨部门协作的标准化工作流程
- 学校的香樟树350字(12篇)
- 股东社区建设协议
- 互联网+教育产业链整合协议
- 产品设计标准化开发流程
- 福建省福州市联盟校2023-2024学年高一下学期期末考试英语试题(解析版)
- 2025文化和旅游部直属事业单位招聘社会人员29人模拟试卷附答案详解
- 2024-2025学年重庆市万州区八年级(下)期末语文试卷
- 2025年乒乓球二级裁判考试题及答案
- 血标本采集考试试题附有答案
- 2025年公共安全生产试题及答案
- 员工工资及考勤管理制度
- 浙江省温州市龙湾区2024-2025学年七年级下学期学业水平期末检测数学试题
- 2025年江苏省苏豪控股集团有限公司校园招聘笔试备考试题及答案详解(必刷)
- (完整)中小学“学宪法、讲宪法”知识竞赛题库及答案
- 2025年行政执法人员执法证考试必考多选题库及答案(共300题)
评论
0/150
提交评论