所謂矩陣連乘問題,就是用動態規劃的方法來求出如何「分解」連乘式,例如a1a2a3可以分為兩種計算方法,一種是(a1a2)a3,另一種是a1(a2a3),如果三個矩陣分別為10×100,100×5,5×50,則第一種所需要的乘法次數為7500,而第二種的乘法次數為75000。(m×n和n×p的的兩個矩陣相乘所需要的乘法次數為m×n×p)。
我們需要兩個二維陣列m(i,j)用來表示第i個矩陣到第j個矩陣的所需乘法次數最少的數量(最優值),s(i,j)用來存放i到j的中間斷開點,例如s(2,4)=2,則a2*(a3*a4)
乙個一維陣列p用來存放各個矩陣的
//p用來存放各個矩陣的列,p0為第乙個矩陣的行數 }}
}}當得到了m和s後,我們可以通過遞迴的方式來求解最優解。
矩陣連乘問題
矩陣連乘問題 應用動態規劃演算法,將前面計算的重複值儲存,一次來推進下一步的計算,直到得到m 1 n 的值,為最少的乘法次數 m i j 表示計算a i.j 所需的最少數乘次數 m i j min i s i j 記錄斷開位置,也就是最少計算次數的中間位置。include using namespa...
矩陣連乘問題
由於矩陣的乘法滿足結合律,故計算矩陣的連乘積可以有許多不同的計算次序。這中計算次序 可以用加括號的方式來確定。例如,矩陣連乘積a1a2a3a4可以有5種不同的完全加括號方式 a1 a2 a3a4 a1 a2a3 a4 a1a2 a3a4 a1 a2a3 a4 a1a2 a3 a4 矩陣a和b可乘的條...
矩陣連乘問題
矩陣連乘問題 問題分析 最優子結構性質假設n個矩陣連乘的最優加括號方案為 a1.ak ak 1.an 注 此處省略了a1.ak,ak 1.an兩個子矩陣內部的括號 則加括號方案 a1.ak 是子矩陣鏈a1.ak的最優加括號方案,ak 1.an 是ak 1.an的最優加括號方案。證明略。但可證明該假設...