摘要:為幫助考生估分,希賽小編為大家整理了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個矩陣對較大的,可能的計算順序數量非常龐大,用蠻力法確定計算順序是不實際的。經過對問題進行分析,發(fā)現矩陣鏈乘問題具有最優(yōu)子結構,即若A1*A2**An的一個最優(yōu)計算順序從第k個矩陣處斷開,即分為A1*A2*…*Ak和Ak+1*Ak+2**An兩個子問題,則該最優(yōu)解應該包含A1*A2**Ak的一個最優(yōu)計算順序和Ak+1*Ak+2**An的一個最優(yōu)計算順序。據此構造遞歸式:
其中,cost【jj】表示Ai+1*Ai+2*Aj+1的最優(yōu)計算的計算代價。最終需要求解cost[O][n-1]。【C代碼】算法實現采用自底向上的計算過程。首先計算兩個矩陣相乘的計算量,然后依次計算3個矩陣、4個矩陣、…、n個矩陣相乘的最小計算量及最優(yōu)計算順序。下面是該算法的語言實現:
(1) 主要變量說明
n:矩陣數
seq[]:矩陣維數序列
cos[i][j]:二維數組,長度為n*n,其中元素cost[i][j]表示Ai+1*Ai+2**Aj+1的最優(yōu)的計算代價trace[][]:二維數組,長度為n*n,其中元素trace[i][j]表示Ai+1*Ai+2**Aj+1的最算對應的劃分位置,即k(2)函數cmmine N100 cost[N[N]
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代碼得到的一個最優(yōu)計算順序為_(7)(用加括號方式表示計算順序),所需要的乘法運算次數為(8)。
熱點推薦:2022上半年軟件設計師真題及答案解析
軟考備考資料免費領取
去領取