




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 62909-1:2025 EN Bi-directional grid-connected power converters - Part 1: General and safety requirements
- 肺结核胸痛护理措施
- 槐荫区面试数学试卷
- 湖北省孝感数学试卷
- 黑龙江期末联考数学试卷
- 2025年中国河南商业地产行业发展监测及市场发展潜力预测报告
- 中国整体软装行业市场运行现状及投资战略研究报告
- 上海市浦东新区南汇中学2025届物理高二下期末经典模拟试题含解析
- 健康知识讲座结核课件
- 健康的蔬菜试讲课件
- 第38届中国化学奥林匹克(决赛)第二场参考案
- 生态水利工程学的研究范式创新与实践需求分析
- SJG 130 – 2023《混凝土模块化建筑技术规程》
- DB37-T5321-2025 居住建筑装配式内装修技术标准
- 《视网膜色素变性》课件示例
- 2025-2030中国火箭发动机行业市场发展趋势与前景展望战略分析研究报告
- T-CHSA 090-2024 年轻恒牙根尖诱导成形术操作专家共识
- 区块链在虚拟电厂分布式能源管理中的应用-全面剖析
- 防性侵教师安全培训
- 污水处理设备验收方案
- 贵州企业招聘2025贵州贵旅国际旅行服务有限公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论