2022上半年软件设计师下午真题(四)

软件设计师 责任编辑:胡媛 2022-05-29

添加老师微信

备考咨询

加我微信

摘要:为帮助考生估分,希赛小编为大家整理了2022上半年软件设计师下午真题(四),希望对大家估分会有帮助。

为方便广大考生考后估分对答案,希赛网特向广大学员和网友搜集整理了2022上半年软件设计师下午真题(四),供大家参考。希赛网老师也将在考后进行真题答案解析,敬请广大考生关注。

试题四(共15分)

阅读下列说明和C代码,回答问题至问题3,将解答写在答题纸的对应栏内。

【说明】

工程计算中经常要完成多个矩阵相乘的计算任务,对矩阵相乘进行以下说明。

(1)两个矩阵相乘要求第一个矩阵的列数等于第二个矩阵的行数,计算量主要由进行乘法运算的次数决定,假设采用标准的矩阵相乘算法,计算Amxn*Bxp"需要m*n*p次行乘法运算的次数决定、乘法运算,即时间复杂度为O(m*n*p)。

(2)矩阵相乘满足结合律,多个矩阵相乘时不同的计算顺序会产生不同的计算量。以矩阵AI5×100,A2100*8,A38x50三个矩阵相乘为例,若按(A1*A2)*A3计算,则需要进行5*100*8+5*8*50-6000次乘法运算,若按A1*(A2*A3)计算,则需要进行100*8*50+5*100*50=65000次乘法运算。

矩阵链乘问题可描述为:给定n个矩阵对较大的,可能的计算顺序数量非常庞大,用蛮力法确定计算顺序是不实际的。经过对问题进行分析,发现矩阵链乘问题具有最优子结构,即若A1*A2**An的一个最优计算顺序从第k个矩阵处断开,即分为A1*A2*…*Ak和Ak+1*Ak+2**An两个子问题,则该最优解应该包含A1*A2**Ak的一个最优计算顺序和Ak+1*Ak+2**An的一个最优计算顺序。据此构造递归式:

image.png

其中,cost【jj】表示Ai+1*Ai+2*Aj+1的最优计算的计算代价。最终需要求解cost[O][n-1]。【C代码】算法实现采用自底向上的计算过程。首先计算两个矩阵相乘的计算量,然后依次计算3个矩阵、4个矩阵、…、n个矩阵相乘的最小计算量及最优计算顺序。下面是该算法的语言实现:

(1) 主要变量说明

n:矩阵数

seq[]:矩阵维数序列

cos[i][j]:二维数组,长度为n*n,其中元素cost[i][j]表示Ai+1*Ai+2**Aj+1的最优的计算代价trace[][]:二维数组,长度为n*n,其中元素trace[i][j]表示Ai+1*Ai+2**Aj+1的最算对应的划分位置,即k(2)函数cmmine N100 cost[N[N]

image.png

return cost[0][n-1];

【问题1】(8分)

根据以上说明和C代码,填充C代码中的空(1)~(4)。

【问题2】(4分)

根据以上说明和C代码,该问题采用了(⑤)算法设计策略,时间复为(6)(用O符号表)。

【问题3】(3分)

考虑实例n=4,各个矩阵的维数为A1为15*5,A2为5*10,A3为10*20,A4为20*25,即维度序列为15,5,10,20和25。则根据上述C代码得到的一个最优计算顺序为_(7)(用加括号方式表示计算顺序),所需要的乘法运算次数为(8)。


更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取