以下只是對此問題的乙個**實現,具體理論部分請參見王曉東《演算法設計與分析》第2
版3.1
節 矩陣連乘問題。
#include #include using namespace std;
#define max_count 20
//矩陣屬性
struct tagmatrixattribute
;//矩陣連乘加括號求解
void matrixchain( tagmatrixattribute mmatrix, int ncount,
int m[max_count], int s[max_count] )
}} }
}//構造結果
void traceback( int s[max_count], int i, int j )
cout << "(";
traceback( s, i, s[i][j] );
traceback( s, s[i][j]+1, j );
cout << ")";
}void printarray( int narray[max_count], int ncount )
cout << endl;
} cout << right;
}int main()
;// tagmatrixattribute mmatrixattrarray = ;
int ncount = _countof( mmatrixattrarray );
int m[max_count][max_count];
int s[max_count][max_count];
memset( m, 0, sizeof(m) );
memset( s, 0, sizeof(s) );
matrixchain( mmatrixattrarray, ncount, m, s );
printarray( m, ncount );
cout << endl;
printarray( s, ncount );
cout << endl;
//構造結果
矩陣連乘 動態規劃 動態規劃解矩陣連乘問題
一.矩陣鏈事例 矩陣鏈問題主要涉及的時在多個矩陣相乘,如何通過相乘的順序來減少程式執行。二.例題分析 這次分析過程按照動態規劃的三個基本條件來逐步解答 1 尋找最優子結構 假設我們已經找到父矩陣鏈最優解,當我們劃分到最後一步時都是兩個子矩陣鏈 分別被括號包圍 相乘,如 a1a2a3a4 a5a6a7...
python矩陣連乘 動態規劃 矩陣連乘問題
一 問題描述 給定n個數字矩陣a1,a2,an,其中ai與ai 1是可乘的,設ai是pi 1 pi矩陣,i 1,2,n。求矩陣連乘a1a2.an的加括號方法,使得所用的乘次數最少。例子三個矩陣連乘,可以有 a1a2 a3和a1 a2a3 兩種方法求積 乘法次數分別為 p0p1p2 p0p2p3和p0...
動態規劃 矩陣連乘問題
給定n 1個矩陣 a0,a1,a2,an 1 其中ai與ai 1是可乘的,i 0,1,2,n 2。矩陣乘法滿足結合律。考察這n個矩陣的連乘積,得出運算次數最少的結合。首先,考慮兩個矩陣相乘。如果a b兩個矩陣可以相乘,那麼a b的形式必定滿足 a p q b q r 設c a b,那麼c滿足c p ...