動態規劃 矩陣鏈乘法

2021-07-09 12:12:36 字數 704 閱讀 2894

矩陣鏈乘法問題:給定n個矩陣的鏈,矩陣ai的規模為p[i-1]*p[i],求完全括號化方案,使得計算乘積a1a2…an所需標量乘法次數最少。

m[i][j]表示矩陣鏈ai…j所需標量乘法次數的最小值。

m[i][j]=0(i=j)

m[i][j]=m[i][k]+m[k+1][j]+p[i-1]p[k]p[j](i<=k)

s[1..n-1][2..n]來記錄最優m[i][j]對應的分割點k。

m[i][j]只依賴於那些少於j-i+1個矩陣的最優計算代價,演算法應該按長度遞增的順序來求解矩陣鏈括號化問題。

#include 

using

namespace

std;

void matrixchainorder(int p, int n, int m[7],int s[7])}}

}}//將矩陣序列加括號列印出來

void print(int i, int j, int s[7])

}int main() ;

int n = 6;

int m[7][7];

int s[7][7];

matrixchainorder(p, n, m, s);

print(1, 6, s);

return

0;}

動態規劃 矩陣鏈乘法

兩個矩陣相乘的計算量,對於一般的矩陣乘法來說,如矩陣a m,n 與矩陣b n,p 相乘需要進行的加法次數為m n p次乘法 由於矩陣乘法滿足結合律,因此矩陣相乘的結合性,會影響整個計算表示式的乘法執行次數 如下面的例子,a b c三個矩陣相乘,其中a 10,5 b 5,20 c 20,3 1 ab ...

動態規劃 矩陣鏈乘法

def matrix multipy a,b 乘法得到的是乙個 a.rows,b.cols 的矩陣,相當於a.rows個向量的b.cols次的向量線性加權 ifnot a.shape 1 b.shape 0 a組中向量的維度與b組中向量的維度一致 print error else 將每乙個元素都初始...

矩陣鏈乘法 動態規劃

1.問題 給定乙個n個矩陣的序列 矩陣鏈 用向量p輸入,求一種乘法的次序使得這個矩陣鏈的執行次數達到最小。解析 我們已知m i,j 為ai到aj採用最優的乘法次序得到的最小執行次數。m i,j min,該命題為真,需要證明的話請自行查詢相關資料。i k偽 另所有m i,j 的初值為0,s i,j 的...