最優矩陣鏈乘(表示式上的動態規劃)

2021-09-25 17:17:53 字數 626 閱讀 6260

例如:假設a、b、c矩陣分別是 2 x 3、3 x 4、4 x 5 的,則 (a x b)x c   的運算量是 2 x 3 x 4 + 2 x 4 x 5 = 64,但是 a x(b x c)的運算量是 3 x 4 x 5 + 2 x 3 x 5 = 90。(想想運算量為什麼是這麼計算的。)顯然第一種計算方法比較節省計算量。

現在考慮下面的問題:給出n個矩陣組成的序列,設計一種方法,把他們按照一定的順序依次乘起來(你也可以理解為不斷地加括號),是的總的計算量盡量小。假設第i個矩陣 ai 是pi-1 x pi的。

大區間需要小區間,設dp[i][j]為第i個矩陣到第j個矩陣的最優解,則狀態轉移方程為dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+a[i-1]*a[k]*a[j]

#include#include#includeusing namespace std;

const int m=110;

int a[m],dp[m][m];

int solve(int l,int r)

return dp[l][r]=ans;

}int main()

printf("%d\n",solve(1,n));

}

最優矩陣鏈乘 動態規劃

給定n個矩陣 a1,a2,an 其中ai與ai 1是可乘的,i 1,2 n 1。如何確定計算矩陣連乘積的計算次序,使得依此次序計算矩陣連乘積需要的數乘次數最少。解答 我們按照動態規劃的幾個步驟來分析 1 找出最優解的性質,刻畫其特徵結構 對於矩陣連乘問題,最優解就是找到一種計算順序,使得計算次數最少...

矩陣鏈乘 解析表示式

題目 輸入n個矩陣的維度和一些矩陣鏈乘表示式,輸出乘法的次數。如果無法進行乘法,輸出error.假定a是m n矩陣,b是n p矩陣,則乘法次數為m n p 如果a的列數不等於b的行數,則乘法無法進行。解題思路 本體的關鍵是解析表示式。本題的表示式比較簡單,可以用乙個棧來完成 遇到字母時直接入棧,遇到...

矩陣鏈乘 動態規劃

普通矩陣相乘 define row a 2 define col a 2 define col b 3 void matrix mul int mata row a col a int matb 2 col b int c row a col b 兩個相容矩陣相乘,相容是指矩陣a的行必須等於矩陣b的...