矩陣連乘問題

2021-10-06 10:17:52 字數 836 閱讀 3404

【題目描述】

給定n個矩陣{a1,a2,…,an},其中ai與ai+1是可乘的,i=1,2 ,…,n-1。如何確定計算矩陣連乘積的計算次序,使得依此次序計算矩陣連乘積需要的數乘次數最少。

【輸入】

輸入包含多組測試資料。第一行為乙個整數c,表示有c組測試資料,接下來有2*c行資料,每組測試資料佔2行,每組測試資料第一行是1個整數n,表示有n個矩陣連乘,接下來一行有n+1個數,表示是n個矩陣的行及第n個矩陣的列,它們之間用空格隔開.

【輸出】

你的輸出應該有c行,即每組測試資料的輸出佔一行,它是計算出的矩陣最少連乘積次數.

【輸入樣例】

450 10

10 40

40 30

30 5

【輸出樣例】

10500

分析:

設計算a[i: j],1≤i≤j≤n,所需要的最少數乘次數m[i, j],則原問題的最優值為m[1,n]

當i=j時,a[i: j]=ai,因此,m[i, i]=0,i=1,2,…,n

當i**

#include using namespace std;

#define num 51

int p[num];

int m[num][num];

int s[num][num];

void matrixchain(int n)

矩陣連乘問題

矩陣連乘問題 應用動態規劃演算法,將前面計算的重複值儲存,一次來推進下一步的計算,直到得到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的最優加括號方案。證明略。但可證明該假設...