天天看點

矩陣連乘(動态規劃)

題目描述:給定n個矩陣{A1,A2,…,An},其中Ai與Ai+1是可乘的,i=1,2 ,…,n-1。如何确定計算矩陣連乘積的計算次序,使得依此次序計算矩陣連乘積需要的數乘次數最少。例如:

  A1={30x35} ; A2={35x15} ;A3={15x5} ;A4={5x10} ;A5={10x20} ;A6={20x25} ;

最後的結果為:((A1(A2A3))((A4A5)A6)) 最小的乘次為15125。

思路:動态規劃算法解此問題,可依據其遞歸式以自底向上的方式進行計算(即先從最小的開始計算)。在計算過程中,儲存已解決的子問題答案。每個子問題隻計算一次,而在後面需要時隻要簡單查一下,進而避免大量的重複計算,最終得到多項式時間的算法。

從2個矩陣開始計算: m[0][1] m[1][2] m[2][3] m[3][4] m[4][5] //m[0][1]表示第一個矩陣與第二個矩陣的最小乘次數、

以此類推 3個矩陣計算m[0][2] m[1][3] m[2][4] m[3][5]

。。。

一直到6個矩陣計算 m[0][5]即為結果

每次計算均取到上一矩陣計算儲存的結果

繼續閱讀