A 為(8×4)矩陣、B 為(4×10)矩陣、C 為(10×3)矩陣、D 為(3×20)
矩陣、E 為(20×4)矩陣, 請列出此5 個矩陣相乘A B C D E 所有
可能的乘法順序(請用括號表示乘法順序)。(5 分) 請使用Dynamic
Programming(動態規劃)的技巧計算出此五個矩陣相乘A B C D E 的
最佳乘法順序(請用括號表示乘法順序),使得五個矩陣相乘所需要花費
的乘法數量最少。(15 分) 請列出此五個矩陣相乘所需要花費的最少
乘法數量。(5 分)(注意:未說明Dynamic Programming 的計算過程,
不予計分。)
二元搜尋法(binary search)使用divide-and-conquer(分而治之)演算法
技巧,對一個已排序的(sorted)且長度為n 的陣列A[0:n 1],以二元化
方式進行資料值x 的搜尋,其最差時間複雜度(worst case time
complexity)可降到 (log n)。 請使用C++或Python 語言,修改此二元
搜尋法,使其能對未排序的(unsorted)且長度為n 的陣列A[0:n 1],進
行三元化搜尋,即以divide-and-conquer 技巧將此陣列切成三個子陣列,
並在可能包含資料值x 的子陣列繼續進行divide-and-conquer 技巧的搜
尋,如果找到則回傳1,如果找不到則回傳0。(17 分)(注意:請寫一
個searching 類別,內含一個search 功能) 請分析修改後的三元化搜尋
法其最差時間複雜度(worst case time complexity)以order 的方式表示。
(8 分)
(注意:不可將此陣列數值進行排序,請加註解說明程式碼作法。)
第4題
請使用C 語言寫一副程式void FindMeanAverage(int A [], int n, int *
mean, int * average),對一個未排序的(unsorted)且長度為n 的陣列
A[0:n 1],尋找陣列中的中位數與平均數,並分別存入mean 及average
運算複雜度。(17 分) 請舉例說明此副程式最差情況(worst case)所
花費的運算複雜度。(8 分)(注意:請加註解說明程式碼作法。)