


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、算法分析与设计实验报告实验题目: 动态规划算法的设计与实现 1、实验目的通过本实验,掌握动态规划算法的设计的基本思想,进一步提高学生的编程能力。2、实验内容:给定n个矩阵A1,A2,An,其中Ai与Ai+1是可乘的,i=1,2,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。3、源程序#include using namespace std; #define N 100 int n,q; int mNN,sNN,pN+1; void matrixChain() /动态规划计算最优值算法 for(int i=1;i=n;i+) mii=0; for(int
2、 r=2;r=n;r+) /对角线循环 for(int i=1;i=n-r+1;i+) /行循环 int j = r+i-1; /列的控制,找mij的最小值,先初始化一下,令k=i mij=mii+mi+1j+pi-1*pi*pj; sij=i; /k从i+1到j-1循环找mij的最小值 for(int k = i+1;kj;k+) inttemp=mik+mk+1j+pi-1*pk*pj; if(tempmij) mij=temp; /s用来记录在子序列i-j段中,在k位置处断开能得到最优解 sij=k; int Recur(int i, int j) /直接递归计算最优值 if (i =
3、j) return 0; int u = Recur(i,i)+Recur(i+1,j)+pi-1*pi*pj; /递归 sij = i; for (int k=i+1; kj; k+) int t=Recur(i,k)+Recur(k+1,j)+pi-1*pk*pj; /从k处断开,分别求得每次的数乘次数 if (t0) return mij; if (i = j) return 0; int u=Look(i, i)+Look(i+1,j)+pi-1*pi*pj; sij=i; for (int k=i+1; kj;k+) int t=Look(i,k)+Look(k+1,j)+pi-1*
4、pk*pj; /递归 if (tu) u=t; /从k处断开,分别求得每次的数乘次数 sij=k; /返回t,k中较小的值,并记录断点处k mij=u; return u; void Traceback(int i,int j) /输出矩阵结合方式,加括号输出 if(i = j) /只有一个矩阵,直接输出 coutAi; else if(i+1 = j) /两个矩阵,加括号输出 cout(AiAj); else cout(; Traceback(i,sij); /递归,从最得到最优解的地方sij处断开 Traceback(sij+1,j); cout); void main() coutn;
5、cout输入第一个矩阵行数和第一个到第n个矩阵的列数:; for(int i=0;ipi; coutendl; cout请选择解决矩阵连乘问题的方法:endl; cout1.动态规划算法endl; cout2.直接递归算法endl; cout3.备忘录算法endl; cout0.退出.endl; coutendl; coutq; coutendl; while(q!=0) switch(q) case 1: matrixChain(); cout动态规划算法解决矩阵连乘问题:endl; cout最优计算次序为:; Traceback(1,n); coutendl; cout矩阵连乘的最优数乘次
6、数为:m1nendl; /最终解值为m1n break; case 2: Recur(0,n); cout直接递归算法解决矩阵连乘问题:endl; cout最优计算次序为:; Traceback(1,n); coutendl; cout矩阵连乘的最优数乘次数为:m1nendl; /最终解值为m1n break; case 3: Look(1,n); cout备忘录算法解决矩阵连乘问题:endl; cout最优计算次序为:; Traceback(1,n); coutendl; cout矩阵连乘的最优数乘次数为:m1nendl; /最终解值为m1n break; case 0: q=0; break; coutendl; cout请选择解决矩阵连乘问题的方法:endl; cout1.动态规划算法endl; cout2.直接递归算法endl; cout3.备忘录算法endl; cout0.退出.endl; coutq; coutendl; coutendl; 4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商业垃圾日清合同
- 汽车无偿赠与合同
- 企业投资决策咨询服务协议
- 医疗器械使用风险与责任豁免协议
- 工业机器人应用研发合作协议书
- 9《猎人海力布》教学设计-2024-2025学年语文五年级上册统编版
- 第13课 现代战争与不同文化的碰撞和交流 教学设计-2023-2024学年高二下学期历史统编版(2019)选择性必修3文化交流与传播
- 第六单元写作 《“劝学”新说》-议论的现实针对性 教学设计 2024-2025学年统编版高中语文必修上册
- 外籍人士租房备案专项协议
- 法拍房租赁权冲突处理协议
- 2023年广东省中考试卷(语数英物化史生等共11套)带答案解析
- DFX工艺设计方法介绍
- 洪恩识字识字卡(001-100)可直接打印剪裁
- 违反八项规定问题典型案例、法规依据和关注点
- J-STD-033D处理包装运输和使用湿度回流和过程敏感设备
- 文联述职报告
- SCI期刊的名称缩写与全称对照表
- 人机料法环测检查表
- 桂西北丹池成矿带主要金属矿床成矿特征及成矿规律
- 一年级上册综合实践活动导学案 各种各样的汽车 全国通用
- 妇产科护理学会阴部手术病人的护理
评论
0/150
提交评论