首页
登录
从业资格
某工程计算中要完成多个矩阵相乘(链乘)的计算任务。 两个矩阵相乘要求第一个矩阵
某工程计算中要完成多个矩阵相乘(链乘)的计算任务。 两个矩阵相乘要求第一个矩阵
免费题库
2022-08-02
33
问题
某工程计算中要完成多个矩阵相乘(链乘)的计算任务。两个矩阵相乘要求第一个矩阵的列数等于第二个矩阵的行数,计算量主要由进行乘法运算的次数决定。采用标准的矩阵相乘算法,计算Am×n*Bn×p,需要m*n*p次乘法运算。矩阵相乘满足结合律,多个矩阵相乘,不同的计算顺序会产生不同的计算量。以矩阵A110×100,A2100×5,A35×50三个矩阵相乘为例,若按(A1*A2)*A3计算,则需要进行10*100*5+10*5*50=7500次乘法运算;若按A1*(A2*A3)计算,则需要进行100*5*50+10*100*50=75000次乘法运算。可见不同的计算顺序对计算量有很大的影响。矩阵链乘问题可描述为:给定n个矩阵<A1,A2,….An>,矩阵Ai的维数为pi-1×pi,其中i=1,2,….n。确定一种乘法顺序,使得这n个矩阵相乘时进行乘法的运算次数最少。由于可能的计算顺序数量非常庞大,对较大的n,用蛮力法确定计算顺序是不实际的。经过对问题进行分析,发现矩阵链乘问题具有最优子结构,即若A1*A2*…*An的一个最优计算顺序从第k个矩阵处断开,即分为A1*A2*….Ak和Ak+1*Ak+2*…*An两个子问题,则该最优解应该包含A1*A2*…*Ak的一个最优计算顺序和Ak+1*Ak+2*…An的一个最优计算顺序。据此构造递归式,
其中,cost
[j]表示Ai+1*Ai+2*...Aj+1的最优计算的计算代价。最终需要求解cost[0][n-1]。【C代码】算法实现采用自底向上的计算过程。首先计算两个矩阵相乘的计算量,然后依次计算3个矩阵、4个矩阵、…、n个矩阵相乘的最小计算量及最优计算顺序。下面是算法的C语言实现。(1)主要变量说明n:矩阵数seq[]:矩阵维数序列cost[][]:二维数组,长度为n*n,其中元素cost
[j]表示Ai+1*Ai+2*…Aj+1的最优计算的计算代价trace[][]:二维数组,长度为n*n,其中元素trace
[j]表示Ai+1*Ai+2*Aj+1的最优计算对应的划分位置,即k(2)函数cmm#define?N?100int cost[N][N];int trace[N][N];int cmm(int n,int seq[]){int tempCost;int tempTrace;int i,j,k,p;int temp;for(i=0;i<n;i++){cost
=0;}for(p=1;p<n;p++){for(i=0;(1);i++){(2);tempCost=-1;for(k=i;k<j;k++){temp=(3);if(tempCost==-1||tempCost>temp){tempCost=temp;(4);}}cost
[j]=tempCost;trace
[j]=tempTrace;}}return cost[0][n-1];}【问题1】(8分)根据以上说明和C代码,填充C代码中的空(1)~(4)。【问题2】(4分)根据以上说明和C代码,该问题采用了(5)算法设计策略,时间复杂度(6)。(用O符号表示)【问题3】(3分)考虑实例n=6,各个矩阵的维数:A1为5*10,A2为10*3,A3为3*12,A4为12*5,A5为5*50,A6为50*6,即维数序列为5,10,3,12,5,50,6。则根据上述C代码得到的一个最优计算顺序为(7)(用加括号方式表示计算顺序),所需要的乘法运算次数为(8)。
选项
答案
解析
【问题1】(1)i<n-p(2)j=i+p(3)cost
[k]+cost[k+1][j]+seq
*seq[k+1]*seq[j+1](4)tempTrace=k【问题2】(5)动态规划法(6)O(n3)【问题3】(7)((A1A2)((A3A4)(A5A6)))(8)2010在解答本题时,需要注意的第一个问题便是矩阵的乘法到底是怎么进行的。一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个矩阵第j列上的m个数对应相乘后所有m个乘积的和。如:
在本题中,题干部分提到“发现矩阵链乘问题具有最优子结构”,这是利用动态规划法求解最优解问题的典型特征。所以(5)应填动态规划法。接下来分析(1)-(4)空,这几个空中,最容易回答的是(3)和(4)。(3)空可通过题目给出的递归式分析得到,其中cost数组部分与公式完全一致,而p数组在程序中是seq,所以回答时修正即可,(3)填:cost
[k]+cost[k+1][j]+seq
*seq[k+1]*seq[j+1]。第(4)空的上一句为:tempCost=temp,即保存当前状态最优解,由于在保存最优解时,不仅涉及cost的记录,还涉及其位置k的记录,所以需要在此进行tempTrace=k的操作。(1)与(2)相对复杂,其中(1)是对i值范围的确定,而(2)是对j的赋值操作(由于后面用到了j,但程序中没有对j的赋值,从而断定该空是对j的赋值)。两者一并起到一个效果,对cost数组操作时的操作范围与顺序。由于在进行矩阵链乘操作时,分析解空间所用到的是cost右上角的三角矩阵,而操作时,是对这个三角矩阵从左至右,呈斜线的访问(如图所示)。所以(1)和(2)分别填i<n-p和j=i+p。
该程序由于涉及3重循环,所以时间复杂度为:O(n3)。通过手动运行程序的方式可知最优解为:(A1A2)((A3A4)(A5A6))。总计算次数为2010。
转载请注明原文地址:https://tihaiku.com/congyezige/2409838.html
本试题收录于:
中级 软件设计师题库软件水平考试初中高级分类
中级 软件设计师
软件水平考试初中高级
相关试题推荐
有两个关系模式R(A,B,C,D)和S(A,C,E,G),则X=RxS的关系模式
两个函数依赖集F和G等价是指( )。A.F=G B.F+=G+ C.F→G
在进行进度安排时,PERT图不能清晰地描述( ),但可以给出哪些任务完成后才能
通过将一个关系拆分成两个更小的关系来使其满足范式时,必须()来保持数据的完整
假设有两个数据库表,product表和market表,分别存放商品信息和市场
对于两个关系E和F,一()的运算结果的任一元组,同时属于E和F。 A
下列不属于社会工程学攻击的是()A.攻击者编造一个故事使受害者信服,从而透露
在某企业的工程项目管理数据库中供应商关系Supp、项目关系Proj和零件关系P
某软件设计师按单位下达的任务,独立完成了一项应用软件的开发和设计,其软件著作权属
DM是从()演变而成的。A.系统工程 B.机器学习 C.运筹学 D.离
随机试题
WhatdidYangandCathyLaneusuallydoatweekends?Theyeithersaweachother
Theincreaseinglobaltrademeansthatinternationalcompaniescannotaffor
InBritain,theoldRoadTrafficActrestrictedspeedsto2m.p.h.(milesp
Forthispart,youareallowed30minutestowriteashortessayaboutyourfavo
我国对活期存款实行按()结息。A.日 B.月 C.季 D.年
共用题干 SpoiltforChoiceSomeresearchwhi
A. B. C. D.
已知某企业集团在A、B、C公司的表决股份分别为35%、55%、20%,2011年
(2021年7月真题)证券公司为期货公司提供中间介绍业务过程中发生重大事项的,应
在氯贝丁酯的不良反应中,下述哪一项是错误的A.有致恶性肿瘤的可能 B.可增加胆
最新回复
(
0
)