1 / 5
文档名称:

矩阵连乘算法.doc

格式:doc   大小:171KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

矩阵连乘算法.doc

上传人:q1188830 2019/11/15 文件大小:171 KB

下载得到文件列表

矩阵连乘算法.doc

文档介绍

文档介绍:福州大学数学与计算机科学学院《计算机算法设计与分析》上机实验报告(2)i<=k<j,则:m[i][j]=m[i][k]+m[k+1][j]+pi-1pkpj。由于在计算是并不知道断开点k的位置,所以k还未定。不过k的位置只有j-i个可能。因此,k是这j-i个位置使计算量达到最小的那个位置。综上,有递推关系如下:若将对应m[i][j]的断开位置k记为s[i][j],在计算出最优值m[i][j]后,可递归地由s[i][j]构造出相应的最优解。s[i][j]中的数表明,计算矩阵链A[i:j]的最佳方式应在矩阵Ak和Ak+1之间断开,即最优的加括号方式应为(A[i:k])(A[k+1:j)。从s[1][n]记录的信息可知计算A[1:n]的最优加括号方式为(A[1:s[1][n]])(A[s[1][n]+1:n]),进一步递推,A[1:s[1][n]]的最优加括号方式为(A[1:s[1][s[1][n]]])(A[s[1][s[1][n]]+1:s[1][s[1][n]]])。同理可以确定A[s[1][n]+1:n]的最优加括号方式在s[s[1][n]+1][n]处断开...照此递推下去,最终可以确定A[1:n]的最优完全加括号方式,及构造出问题的一个最优解。3、动态规划迭代算法设计:用动态规划迭代方式解决此问题,可依据其递归式自底向上的方式进行计算。在计算过程中,保存已解决的子问题的答案。每个子问题只计算一次,而在后面需要时只需简单检查一下,从而避免了大量的重复计算,最终得到多项式时间的算法。4、算法代码:1.//3d1-2矩阵连乘动态规划迭代实现2.//A130*35A235*15A315*5A45*10A510*20A620*253.//p[0-6]={30,35,15,5,10,20,25}4.#include""5.#include<iostream>;=7;(intn,int**m,int**s,int*p);(inti,intj,int**s);//()14.{[L]={30,35,15,5,10,20,25};**s=newint*[L];**m=newint*[L];(inti=0;i<L;i++)20.{[i]=newint[L];[i]=newint[L];23.}<<"矩阵的最少计算次数为:"<<MatrixChain(6,m,s,p)<<endl;<<"矩阵最优计算次序为:"<<endl;(1,6,s);;29.}(intn,int**m,int**s,int*p)32.{(inti=1;i<=n;i++)34.{[i][i]=0;36.}(intr=2;r<=n;r++)//r为当前计算的链长(子问题规模)38.{(inti=1;i<=n-r+1;i++)//n-r+1为最后一个r链的前边界40.{