版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、动态规划法解矩阵连乘问题动态规划法解矩阵连乘问题实验内容给定n个矩阵A1,A2,其中Ai与Ai+1是可乘的,i=1,2,3n-1。我们要计算这n个矩阵的连乘积。由于矩阵乘法满足结合性,故计算矩阵连乘积可以有许多不同的计算次序。这种计算次序可以用加括号的方式确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号,则我们可依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。解题思路将矩阵连乘积A(i)A(i+1)-A(j)简记为Ai:j,这里i<=j。考察计算Ai:j的最优计算次序。设这个计算次序在矩阵A(k)和A(k+1)之间将矩阵链断开,i<=k<j,则其
2、相应完全加括号方式为(A(i)A(i+1)-A(k)*(A(k+1)A(k+2)-A(j)。特征:计算Ai:j的最优次序所包含的计算矩阵子链Ai:k和Ak+1:j的次序也是最优的。矩阵连乘计算次序问题的最优解包含着其子问题的最优解。设计算Ai:j,1<=i<=j<=n,所需要的最少数乘次数mi,j,则原问题的最优值为m1,n当i=j时,Ai:j=Ai,因此,mi,i=0,i=1,2,n当i<j时,mi,j=mi,k+mk+1,j+p(i-1)p(k)p(j)这里A(i)的维数为p(i-1)*(i)(注:p(i-1)为矩阵A(i)的行数,p(i)为矩阵Ai的列数)实验实验
3、代码#include<iostream>#include<vector>usingnamespacestd;classmatrix_chainpublic:matrix_chain(constvector<int>&c)cols=c;count=cols.size();mc.resize(count);s.resize(count);for(inti=0;i<count;+i)mci.resize(count);si.resize(count);for(i=0;i<count;+i)for(intj=0;j<count;+j)mci
4、j=0;sij=0;/记录每次子问题的结果voidlookup_chain()_lookup_chain(1,count-1);min_count=mc1count-1;cout<<"min_multi_count="<<min_count<<endl;/输出最优计算次序_trackback(1,count-1);/使用普通方法进行计算voidcalculate()intn=count-1;/矩阵的个数/r表示每次宽度/i,j表示从从矩阵i到矩阵j/k表示切割位置for(intr=2;r<=n;+r)for(inti=1;i<
5、=n-r+1;+i)intj=i+r-1;/从矩阵i到矩阵j连乘,从i的位置切割,前半部分为0mcij=mci+1j+colsi-1*colsi*colsj;sij=i;for(intk=i+1;k<j;+k)inttemp=mcik+mck+1j+colsi-1*colsk*colsj;if(temp<mcij)mcij=temp;sij=k;/fork/fori/forrmin_count=mc1n;cout<<"min_multi_count="<<min_count<<endl;/输出最优计算次序_trackback(
6、1,n);private:int_lookup_chain(inti,intj)/该最优解已求出,直接返回if(mcij>0)returnmcij;if(i=j)return0;/不需要计算,直接返回/下面两行计算从i到j按照顺序计算的情况intu=_lookup_chain(i,i)+_lookup_chain(i+1,j)+colsi-1*colsi*colsj;sij=i;for(intk=i+1;k<j;+k)inttemp=_lookup_chain(i,k)+_lookup_chain(k+1,j)+colsi-1*colsk*colsj;if(temp<u)u=
7、temp;sij=k;mcij=u;returnu;void_trackback(inti,intj)if(i=j)return;_trackback(i,sij);_trackback(sij+1,j);cout<<i<<","<<sij<<""<<sij+1<<","<<j<<endl;private:vector<int>cols;/列数intcount;/矩阵个数+1vector<vector<int>
8、>mc;/从第i个矩阵乘到第j个矩阵最小数乘次数vector<vector<int>>s;/最小数乘的切分位置intmin_count;/最小数乘次数;intmain()/初始化constintMATRIX_COUNT=6;vector<int>c(MATRIX_COUNT+1);c0=30;c1=35;c2=15;c3=5;c4=10;c5=20;c6=25;matrix_chainmc(c);/mc.calculate();mc.lookup_chain();return0;实验结果hij«i_mai111wiIl.J1JX彳AJFVk:11iLHI111-:VE.IllI:!£.HIIUK实验验证连乘矩阵假如为A1A2A3A4A5A630x3535>151555Z010x2020.25从m可知最小连乘次数为m16=15125从s可知计算顺序为(A1(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能家居管理与维护方案
- 户外探险团队面对恶劣天气的安全保障预案
- 机械自动化技术发展趋势报告
- 小学主题班会课件:绘画小天地:色彩与线条的魔法
- 项目管理流程与优化实践指南
- 2026年河南省郑州市事业单位人员招聘考试备考题库及答案详解
- 2026江苏淮南市八公山区招聘社区“两委”后备干部20人考试参考题库及答案详解
- 2026中国雄安集团有限公司暑期实习生招聘考试备考试题及答案详解
- 吉水县吉湖物业服务有限公司2026年面向社会公开招聘5名安保员的考试模拟试题及答案详解
- 2026年银川市金凤区事业单位人员招聘考试备考试题及答案详解
- 2026年安全生产管理人员培训试题(含答案)
- 2026年高考广东物理真题含答案
- 2026年房地产经纪人考试基础知识试卷附答案
- 2024 岛礁水域生物资源调查评估技术规范
- 2026年全国新高考2卷英语试卷(含答案及解析)+听力音频及听力原文
- 重庆市2026年普通高等学校招生全国统一考试 生物+答案
- 2026广东省纪委监委选调干部25人笔试参考题库及答案解析
- 2026年4月自考00097外贸英语写作试题
- 南京市既有建筑加固改造工程勘察导则(试行)2026
- 2026年小学一年级下册语文暑假衔接提升练习卷含答案
- GB/T 8325-2026塑料聚合物分散体和橡胶胶乳pH值的测定
评论
0/150
提交评论