2019年5月 软件设计师 上午题之二十一
摘要:对于【软件设计师】软考考试而言,真题无疑是最重要的学习资料之一。在软考备考过程中,吃透真题、掌握真题所考知识点、熟悉真题的出题思路,对我们提升分数的效果是最明显的,通过对真题的反复练习,还可以查漏补缺。今天,给大家带来【2019年5月 软件设计师 上午题】部分真题的详解,一起来看看吧~1、已知阳阵 Am*n和 Bn*p 相乘的时间复杂度为 O(mnp)矩阵相乘满足结合律
1、已知阳阵 Am*n和 Bn*p 相乘的时间复杂度为 O(mnp)矩阵相乘满足结合律,如三个矩阵A、B、C 相乘的顺序可以是(A*B)*C),也可以是A*(B*C).不同的相乘序所需进行的乘法次数可能有很大的差别,因此确定n 个矩阵相乘的最优计算顺序是一个非常重要的问题。已知确定n 个短阵 A,A2........An 相乘的计算顺序具有最优子结构,即 A1A2..........An 的最优计算顺序包含其子问题A1A2.......Ak和 Ak+1Ak+2.......An(<=kcn)的最优计算顺序。可以列出其递归式为其中,A 的维度为 pi-1*pi,m【i,j】,表示 AiAi+1…A j最优计算顺字的相乘次数,先釆用自底向上的方法求n 个矩阵相乘的最优计算顺序。则该问题的算法设计策略为(请作答此空),算法的时间复杂度为( ),空间复杂度为( )给定一个实例,(P0Pi........P5)=(20.15.4.10.20.25)最优计算顺序为( )
A、 分治法
B、 动态规划法
C、 贪心法
D、 回溯法
答案:B
答题解析:题干提到该问题具有最优子结构,并且由m[i,j]表示 AiAi+1…A j最优计算顺字的相乘次数,因此可判断该算法为动态规划法。
2、已知矩阵 Am*n和 Bn*p 相乘的时间复杂度为 O(mnp)矩阵相乘满足结合律,如三个矩阵A、B、C 相乘的顺序可以是(A*B)*C),也可以是A*(B*C).不同的相乘序所需进行的乘法次数可能有很大的差别,因此确定n 个矩阵相乘的最优计算顺序是一个非常重要的问题。已知确定n 个短阵 A,A2........An 相乘的计算顺序具有最优子结构,即 A1A2..........An 的最优计算顺序包含其子问题A1A2.......Ak和 Ak+1Ak+2.......An(<=kcn)的最优计算顺序。可以列出其递归式为其中,A 的维度为 pi-1*pim【i,j】,表示 AiAi+1…A j最优计算顺字的相乘次数,先釆用自底向上的方法求n 个矩阵相乘的最优计算顺序。则该问题的算法设计策略为( ),算法的时间复杂度为(请作答此空),空间复杂度为( )给定一个实例,(POPi........P5)=(20.15.4.10.20.25)最优计算顺序为( )
A、 O(n^2)
B、 O(n^2lgn)
C、 O(n^3)
D、 O(2^n)
答案:C
答题解析:
矩阵链乘法:
一个给定的矩阵序列A1A2...An计算连乘乘积,有不同的结合方法,并且在结合时,矩阵的相对位置不能改变,只能相邻结合。根据矩阵乘法的公式,10*100和100*5的矩阵相乘需要做10*100*5次标量乘法。那么对于维数分别为10*100、100*5、5*50的矩阵A、B、C,用(A*B)*C来计算需要10*100*5 + 10*5*50 =7500次标量乘法;而A*(B*C)则需要100*5*50+10*100*50=75000次标量乘法。
根据题干有A1-A5五个矩阵,分别为:20*15、15*4、4*10、10*20、20*25,分别带入65题各个选项,得到选项D是计算次数最少的选项。
具体计算结果为:
选项A:A1*A2=20*15*4=1200,(A1*A2)*A3)=20*4*10=800,(((A1*A2)*A3)*A4)=20*10*20=4000,(((A1*A2)*A3)*A4)*A5=20*20*25=10000,总的计算次数为1200+800+4000+10000=16000次。
选项B:A4*A5=10*20*25=5000,A3*(A4*A5)=4*10*25=1000,A2*(A3*(A4*A5))=15*4*25=1500,A1*(A2*(A3*(A4*A5)))=20*15*25=7500,总的计算次数为:5000+1000+1500+7500=15000次。
选项C:A1*A2=20*15*4=1200,(A1*A2)*A3)=20*4*10=800,A4*A5=10*20*25=5000,
((A1*A2)*A3)*(A4*A5)=20*10*25=5000,总的计算次数为1200+800+5000+5000=12000次。
选项D:A1*A2=20*15*4=1200,A3*A4=4*10*20=800,(A3*A4)*A5=4*20*25=2000,
(A1*A2)*((A3*A4)*A5)=20*4*25=2000,总的计算次数为1200+800+2000+2000=6000次。
该算法的,pi−1pkpj的值需要三重循环解决,因此时间复杂度为O(n^3),空间复杂度为O(n^2)。
3、已知矩阵 Am*n和 Bn*p 相乘的时间复杂度为 O(mnp)矩阵相乘满足结合律,如三个矩阵A、B、C 相乘的顺序可以是(A*B)*C),也可以是A*(B*C).不同的相乘序所需进行的乘法次数可能有很大的差别,因此确定n 个矩阵相乘的最优计算顺序是一个非常重要的问题。已知确定n 个短阵 A,A2........An 相乘的计算顺序具有最优子结构,即 A1A2..........An 的最优计算顺序包含其子问题A1A2.......Ak和 Ak+1Ak+2.......An(<=kcn)的最优计算顺序。可以列出其递归式为其中,A 的维度为 pi-1*pim【i,j】,表示 AiAi+1…A j最优计算顺字的相乘次数,先釆用自底向上的方法求n 个矩阵相乘的最优计算顺序。则该问题的算法设计策略为( ),算法的时间复杂度为( ),空间复杂度为(请作答此空)给定一个实例,(POPi........P5)=(20.15.4.10.20.25)最优计算顺序为( )
A、 O(n^2)
B、 O(n*2lgn)
C、 O(n^3)
D、 O(2n)
答案:A
答题解析:
矩阵链乘法:
一个给定的矩阵序列A1A2...An计算连乘乘积,有不同的结合方法,并且在结合时,矩阵的相对位置不能改变,只能相邻结合。根据矩阵乘法的公式,10*100和100*5的矩阵相乘需要做10*100*5次标量乘法。那么对于维数分别为10*100、100*5、5*50的矩阵A、B、C,用(A*B)*C来计算需要10*100*5 + 10*5*50 =7500次标量乘法;而A*(B*C)则需要100*5*50+10*100*50=75000次标量乘法。
根据题干有A1-A5五个矩阵,分别为:20*15、15*4、4*10、10*20、20*25,分别带入65题各个选项,得到选项D是计算次数最少的选项。
具体计算结果为:
选项A:A1*A2=20*15*4=1200,(A1*A2)*A3)=20*4*10=800,(((A1*A2)*A3)*A4)=20*10*20=4000,(((A1*A2)*A3)*A4)*A5=20*20*25=10000,总的计算次数为1200+800+4000+10000=16000次。
选项B:A4*A5=10*20*25=5000,A3*(A4*A5)=4*10*25=1000,A2*(A3*(A4*A5))=15*4*25=1500,A1*(A2*(A3*(A4*A5)))=20*15*25=7500,总的计算次数为:5000+1000+1500+7500=15000次。
选项C:A1*A2=20*15*4=1200,(A1*A2)*A3)=20*4*10=800,A4*A5=10*20*25=5000,
((A1*A2)*A3)*(A4*A5)=20*10*25=5000,总的计算次数为1200+800+5000+5000=12000次。
选项D:A1*A2=20*15*4=1200,A3*A4=4*10*20=800,(A3*A4)*A5=4*20*25=2000,
(A1*A2)*((A3*A4)*A5)=20*4*25=2000,总的计算次数为1200+800+2000+2000=6000次。
该算法的,pi−1pkpj的值需要三重循环解决,因此时间复杂度为O(n^3),空间复杂度为O(n^2)。
查看完整试题>>>
软考资料: 2024年软考论文范文> 软考考试核心重点难点汇总> 查看更多>
备考刷题:章节练习+每日一练> 软考历年试题+模拟题>查看更多>