




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验四 动态规划算法设计与应用一. 实验目的和要求1.加深对动态规划算法的基本原理的理解,掌握用动态规划方法求解最优化问题的方法步骤及应用;2.用动态规划设计整数序列的最长递增子序列问题的算法,分析其复杂性,并实现;3.用动态规划设计求凸多边形的三角剖分问题的算法,分析其复杂性,并实现。4.选做题:用动态规划设计求解0/1背包问题的算法,分析其复杂性,并实现。二基本原理动态规划是一种非常重要的程序设计方法,常用于求解最优化问题。最优化问题:给定若干个约束条件和一个目标函数,在某指定集合中求满足所有约束条件的且使得目标函数值达最大或最小的元素和相应的目标函数值,即:问题的最优值和最优解。适用动态规划求解的问题的基本要素:(1)满足最优性原理:即一个最优化问题的最优解包含了其子问题的最优解。 (2) 无后向性:即某阶段状态一旦确定,就不受这个状态以后决策的影响。也即,某状态以后的过程不会影响以前的状态,只与当前状态有关,这种特性也被称为无后效性。 (2)具有重叠的子问题:即问题被分解成的子问题存在互相重叠。动态规划方法对于这些重叠的子问题只求解一次,以提高算法的效率。三 该类算法设计与实现的要点动态规划算法求解最优化问题的步骤:(1) 找出问题的最优子结构。分析问题的最优解(最优值)的结构特征。 (2) 递归地定义最优值。 根据最优子结构,确定最优值所满足的递归公式。(3) 计算最优值。根据最优值的递归公式,采用自底向上的迭代或自顶向下的递归,计算最优值。 (4) 构造最优解。在求解最优值的过程中要记录下得到最优值的相应最优解的信息,并根据该信息构造最优解。注意:在计算最优值时应保存相应的信息: (a) 已经求出的子问题的最优值(避免重复计算)。 (b) 最优解的有关信息。 动态规划算法求解其它问题的步骤:(1) 根据最优化原理分析问题的解的结构。(2) 递归地定义问题的解。(3) 计算问题的解。 根据解的递归公式,自底向上或自顶向下地计算解,计算过程中注意保存已经求出的子问题的解。其中,自底向上方法通过迭代来实现,适用于所有的子问题都需要解的情况,实现时要注意根据递归公式正确确定子问题的求解顺序。自顶向下方法通过递归来实现,适用于不必解所有的子问题的情况,实现时要注意标记子问题是否计算过,同一个子问题只在第一次递归调用时计算并存储结果。四实验内容(一) 最长递增子序列问题1.问题描述求一个由n个整数组成的整数序列的最长递增子序列。一个整数序列的递增子序列可以是序列中非连续的数按照原序列顺序排列而成的。 最长递增子序列是其递增子序列中长度最长的。2. 具体要求(若在ACM平台上提交程序,必须按此要求)平台上1700题输入:输入的第一行是一个正整数n,表示测试例个数。接下来几行是n个测试例的数据,每个测试例的数据由两行组成,其中第一行为一个正整数k (k=500),表示整数序列的长度,第二行给出整数序列,整数之间用一个空格隔开。(设给出的每个整数序列的最长递增子序列都是唯一的。)输出:对于每个测试例输出两行,第一行为最长递增子序列的长度,第二行为最长递增子序列,整数之间用一个空格隔开。两个测试例的输出数据之间用一个空行隔开,最后一个测试例后无空行。3代码如下:#include#define MAX 50void bubble(int r,int n,int B)int i,j,temp;for(i=0;in;i+)for(j=0;jrj+1)temp=rj;rj=rj+1;rj+1=temp;for(i=0;i0&j0)if(Hij=0)Ck-=Ai;i=i-1;j=j-1;elseif(Hij=1)i=i-1;elsej=j-1;C0=B0;for(i=0;iL;i+)printf(%4d,Ci);void Lcs(int AMAX,int BMAX,int n,int num)int i,j,length;int LMAXMAX,HMAXMAX;for(i=0;in;i+)Li0=0;for(j=0;jn;j+)L0j=0;for(i=1;i=n;i+)for(j=1;j=Lij-1)Lij=Li-1j;Hij=1;elseLij=Lij-1;Hij=2;printf( %d,Lnn);length=Lnn;printf(n);printf(第%d个子序列元素:,num+1);Lcss(H,n,A,length,B);void main()int m,i,j,AMAX,BMAX,CMAX,DMAX;printf(测试例的个数:n);scanf(%d,&m);for(i=0;im;i+)printf(第%d个的长度及元素:n,i+1);scanf(%d,&Ci);for(j=0;jCi;j+)scanf(%d,&Aj);Dj=Aj;bubble(A,Ci,B);printf(n);printf(第%d个子序列长度:,i+1);Lcs(D,B,Ci,i);printf(nn);(二) 凸多边形的三角剖分1. 问题描述设P是一个有n个顶点的凸多边形,P中的弦是P中连接两个非相邻顶点的线段。用P中的(n-3)条弦将P剖分成(n-2)个三角形(如下图所示)。使得(n-3)条弦的长度之和最小的三角形剖分称为最优三角剖分。2. 具体要求(若在ACM平台上提交程序,必须按此要求)平台上1701题输入:输入的第一行是一个正整数m,表示测试例个数,接下来几行是m个测试例的数据,每个测试例的数据由两行组成,第一行含一个正整数n (n=500),表示凸多边形的顶点个数;第二行含2n个实数x1 , y1 , x2 , y2 , xn , yn ,按顺时针方向依次给出n个顶点的坐标值(xi, yi) i=1, 2, , n,整数之间用一个空格隔开。输出:对于每个测试例输出一行,含一个实数(精确到小数点后三位),表示最优三角剖分的n-3条弦的长度之和。两个测试例的输出数据之间用一个空行隔开,最后一个测试例后无空行。 3. 代码如下:#include#includefloat distance100100;#define MAX 100void dis(int count,float xMAX,float yMAX)int i,j;for(i=0;iMAX;i+)for(j=0;jMAX;j+)distanceij=0;for(i=0;icount;i+)for(j=0;jcount;j+)distanceij=sqrt(xi-xj)*(xi-xj)+(yi-yj)*(yi-yj);float triangle(int zero,int num)int k,m=0;float s=40000,aMAX;if(num-zero=2)return 0;elsefor(k=zero+1;knum;k+)if(k=zero+1)am=triangle(k,num)+distancezero+1num;else if(k=num-1)am=triangle(zero,k)+distancezeronum-1;elseam=triangle(k,num)+distanceknum+triangle(zero,k)+distancezerok;m+;for(m=0;mam)s=am;return s;void main()int m,i,j,AMAX;float xMAX,yMAX,lengthMAX;printf(输入测例个数:n);scanf(%d,&m);for(i=0;im;i+)printf(输入第%d测例数的顶点数为:nn,i+1);s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025天津市西青医院招聘编外派遣制23人笔试备考题库及答案解析
- 化妆毕业论文总结
- 2025标准附期限借款合同样书
- 安向毕业论文
- 英语教育专业毕业论文网
- 广州大学金融系毕业论文
- 2025云南省玉溪市红塔区监察委员会招聘监察辅助人员(4人)笔试备考题库及答案解析
- 旅游酒店业客户体验提升策略研究
- 心理毕业论文讨论群
- 农业生产与销售实务手册
- 矿山隐蔽致灾普查治理报告
- 实心球课件教学课件
- 齐河经济开发区马寨小区安置楼工程临时用电组织设计(5月10日改)
- 220kV变电站土建工程项目管理实施规划(第二版)
- 《计算机网络技术》(第三版)教学指南
- 部编版小学语文四年级语文阅读理解练习试题含答案(全册)
- 机关党建与企业党建共建协议书范本
- 马凡综合征个案护理
- 2024四年级上册语文开学第一课教学课件
- 肉豆蔻丸的基于人工智能的药效预测
- 慢性肺源性心脏病的护理(内科护理学第七版)
评论
0/150
提交评论