




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构与算法设计 课程实验报告课 题 矩阵相乘的算法设计专业班级 网工专业1405班 学 号姓 名 陈晓露 指导教师 陶跃进 目录1、 问题描述2、 问题分析1、 分析最优解的结构2、 建立递归关系3、 递归实现的复杂性4、 算法迭代实现3、 结果输出4、 实验总结一、问题描述给定n个矩阵A1,A2,. ,An,其中这n个矩阵是可相乘的,i1,2,.,n-1。算出这n个矩阵的相乘积A1A2 。An。补充:如果两个矩阵A和B是可相乘的,那么A的列数要和B的行数是相同的,否则,这两个矩阵是不可相乘的。它们的相乘结果矩阵C的行数是A的行数,而列数是B的列数。设A1,A2,An为矩阵序列,Ai为Pi-1Pi阶矩阵,i = 1,2,n. 确定乘法顺序使得元素相乘的总次数最少.输入:向量P = 实例:P = A1: 10 100, A2: 100 5, A3: 5 50乘法次序:(A1 A2)A3: 10 100 5 + 10 5 50 = 7500A1(A2 A3): 10 100 50 + 100 5 50 = 75000搜索空间的规模先将矩阵链加括号分为两部分,即P=A1*A2*.*An=(A1*A2.*Ak)*(Ak+1*.An),则有f(n)=f(1)*f(n-1)+f(2)*f(n-2)+.+f(n-1)*f(1)种方法。动态规划算法输入P=,Ai.j 表示乘积 AiAi+1Aj 的结果,其最后一次相乘是:mi,j 表示得到Ai.j的最少的相乘次数。递推方程:为了确定加括号的次序,设计表si,j,记录求得最优时最一位置。二、问题分析由于矩阵乘法满足结合律,故连乘积的计算可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序已完全确定,也就是说该连乘积已完全加括号,则我们可以通过反复调用两个矩阵相乘的标准算法计算出矩阵连乘积。1.分析最优解的结构为了方便起见,我们将矩阵连乘AiAi+1 。Aj记为Ai:j。经分析,计算A1:n的一个最优次序所包含的计算矩阵子链A1:k和Ak:n的次序也是最优的。因此,矩阵连乘计算次序问题的最优解包含着子问题的最优解。2.建立递归关系用矩阵mnn来存放Ai:j相乘的计算次数,用pn+1用来存放矩阵的行数和列数。constintN=5;intmNN;/mij存储Ai到Aj的最小乘法次数intsNN;/sij存储Ai到Aj之间加括号的位置intRecurMatrixChain(intP,inti,intj)mij=100000;sij=i;if(i=j)mij=0;elsefor(intk=i;kj;k+)intq=RecurMatrixChain(P,i,k)+RecurMatrixChain(P,k+1,j)+Pi*Pk+1*Pj+1;if(qmij)mij=q;sij=k;returnmij;intmain()intPN+1=30,35,15,5,10,20;for(inti=0;iN;i+)mii=0;m0N-1=RecurMatrixChain(P,0,N-1);return0;3.递归实现的复杂性复杂性满足递推关系:可见递归实现的复杂性虽然较一般算法有改进,但还是较高。分析原因,主要是子问题重复程度高。如下图所示:1.4表示计算Ai.j中i=1,j=4的子问题,其子问题包括A1.1,而A1.2,A1.3中都包括子问题A1.1,所以很多子问题被重复计算了多次。于是,我们想到用自底向上的迭代实现。4.算法迭代实现迭代实现主要思想是子问题由小到大,每个子问题只计算一次,并且把结果保存起来,后来用到这个子问题时,直接代入。voidMatrixChain(intP,intn)intr,i,j,k,t;for(i=0;iN;i+)for(j=0;jN;j+)mij=0;/r为当前计算的链长(子问题规模)for(r=2;r=n;r+)/n-r+1为最后一个r链的前边界for(i=0;in-r+1;i+)/计算前边界为r,链长为r的链的后边界j=i+r-1;/将链ij划分为A(i)*(A(i+1).A(j)mij=mi+1j+Pi*Pi+1*Pj+1;/记录分割位置sij=i;for(k=i+1;kj-1;k+)/将链ij划分为(A(i).A(k)*(A(k+1).A(j)t=mik+mk+1j+Pi*Pi+1*Pj+1;if(tmij)mij=t;sij=k;intmain()intPN+1=30,35,15,5,10,20;MatrixChain(P,N);三、结果输出再写一个打印结果,以及打印优化函数备忘录m和标记函数的s的函数:voidPrintMatrixChain(intsN,inti,intj)if(i=j)coutAi+1;elsecout(;PrintMatrixChain(s,i,sij);PrintMatrixChain(s,sij+1,j);cout);voidPrintMS(intmN,intsN,intN)for(intr=0;rN;r+)for(inti=0;iN-r;i+)intj=i+r;coutmi+1,j+1=mijt;coutendl;for(intr=1;r5;r+)for(inti=0;iN-r;i+)intj=i+r;coutsi+1,j+1=sij+1t;coutendl;*一个简单的测试实例用一个N=5,P=的简单实例,运行上述代码:4、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 谈礼貌课件教学课件
- 诺贝尔瓷砖产品知识培训课件
- 2025年建筑工地保安兼职服务合同范本
- 2025版森林资源承包管理与利用合同
- 2025年度综合交通枢纽用地土地平整施工合同
- 2025年度居间合同范本:专业居间服务协议
- 2025版皮毛原料绿色采购与供应链管理合同
- 2025版消防水电工程消防安全检测服务合同
- 2025版托盘制造企业产品认证与质量管理体系合同
- 2025版挖掘机操作人员培训及考核合同范本
- 化学工程与工艺专业人才培养方案
- 《家庭营养配餐》课件
- 产后恢复-中级-1738220692478
- 二零二五版森林抚育项目苗木种植及管护合同2篇
- 药物作用机理创新-洞察分析
- 毕业设计(论文)-口腔助手微信小程序的设计与实现
- ICH《M10:生物分析方法验证及样品分析》
- 电力金具选型手册输电线路金具选型
- 初中开学第一课安全课件
- 2025年企业知识产权管理高效执行方案全面贯标体系实操模板集锦
- 鼻咽通气管日常护理
评论
0/150
提交评论