- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华北电力大学
实 验 报 告
|
|
实验名称 算法设计与分析实验
课程名称 算法设计与分析
|
|
专业班级:计科1203 学生姓名:
学 号: 成 绩:
指导教师:牛为华 实验日期:2014年10月实验一、矩阵连乘
实验目的及要求
1、了解并掌握动态规划算法解矩阵连乘问题的原理;
2、通过上机实验,对矩阵连乘的知识进行巩固;
3、用程序实现矩阵连乘。
实验原理
1、两个矩阵相乘,第一个矩阵的列数=第二个矩阵的行数;
2、三个矩阵相乘时:
A1 * A2 * A3 =((A1 * A2 ) * A3 )
A1 * A2 * A3 =(A1 * ( A2 * A3 ))
不同的运算顺序,所需的乘法次数就不一样;在算分设计与
分析中,我们知道,乘法的次数越多,消耗的空间就越大,所需
的时间就越多。
3、当多个矩阵相乘时:
我们假设Mi,j就是第i个矩阵到第j个矩阵的矩阵连乘,
即
Mi,j=Mi Mi+1 …… Mj
选中一个k值,i=k=j,使得:
Mi,k-1 = MiMi+1…Mk-1,Mk,j =MkMk+1…Mj
用数组C[i][j]表示第i个矩阵到第j个矩阵的矩阵连乘
最优解,有:
三、问题分析及算法设计思路
1、计算最优值算法:建立两张表(,一张表存储矩阵相乘的最小运算量,主对角线上的值为0,依次求2个矩阵、3个矩阵…、直到n个矩阵相乘的最小运算量,其中每次矩阵相乘的最小运算量都在上一次矩阵相乘的最小运算量的基础上求得,最后一次求得的值即为n个矩阵相乘的最小运算量;另一张表存储最优断开位置。 2、输出矩阵结合方式算法:矩阵结合即是给矩阵加括号,打印出矩阵结合方式,由递归过程完成。分三种情况: (1)只有一个矩阵,则只需打印出A1; (2)有两个矩阵,则需打印出(A1A2); (3)对于矩阵数目大于2,则应该调用递归过程两次,构造出最优加括号方式。
四、程序代码
#include iostream
using namespace std;
#define N 100
int n,q;
int m[N][N],s[N][N],p[N+1];
//计算最优值和最优解,最优值存储在m[i][j],最优解存储在s[i][j]
void matrixChain()
{
for(int i=1;i=n;i++)
{
m[i][i]=0;
}
for(int r=2;r=n;r++)
{
for(int i=1;i=n-r+1;i++)
{
int j = r+i-1;
m[i][j]=m[i][i]+m[i+1][j]+p[i-1]*p[i]*p[j];
s[i][j]=i;
for(int k = i+1;kj;k++)
{
int temp=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];
if(tempm[i][j])
{
m[i][j]=temp;
s[i][j]=k;
}
}
}
}
}
//显示输出
void Traceback(int i,int j)
{
if(i == j)
{
coutAi;
}
else if(i+1 == j)
{
您可能关注的文档
最近下载
- 食品安全管理手册(含程序文件 ).doc VIP
- 82页精益制造数字化转型智能工厂三年规划建设方案PPT.pptx VIP
- 高级建筑电气工程师考试题及答案.pdf VIP
- 2025年各省市全民国防教育知识竞赛题库及答案.docx
- 2022届广州市高三12月调研考(零模)语文试题.doc VIP
- 国家电网公司电力安全工作规程第5部分:风电场.pdf VIP
- 2024年中级通信工程师传输与接入(有线)知识点.pdf
- 废锂离子动力蓄电池处理污染控制技术规范(试行)(HJ1186—2021).pdf VIP
- GB50652-2011 城市轨道交通地下工程建设风险管理规范.docx VIP
- 2.3《游戏中的观察》教学设计 2025教科版科学一年级上册.pdf
文档评论(0)