動態規劃 矩陣連乘問題

2021-10-05 12:02:38 字數 678 閱讀 5872

時間複雜度

前面步驟省略

2~3行:將m[i,i]值全賦0

4行:l為每次所分的矩陣鏈的長度(2到n)

5行:每個矩陣鏈的起始位置為i(1<=i<=n-l+1)

6行:每個矩陣鏈的起始位置為j(j==i+l-1)

7行:先將m[i,j]的值賦為極限大

8行:在第四行遍歷中所取得矩陣鏈中找到乙個斷裂點k(i<=k<=j-1),使得在此處斷開時矩陣計算量最小,從k=i開始遍歷,依次嘗試計算並記錄計算量

9行:記算在當前位置k斷裂時所需的計算量(pk是矩陣k的列數)

10行:如果當前計算量最小,

11行:就將當前計算量q寫入到m表的[i,j]位置上(矩陣鏈(i,j)計算所需的最小計算量),並將斷裂位置k寫入s表的[i,j]處(即矩陣鏈(i,j)在k斷開進行計算所需的計算量最小)

12行:返回結果

計算量主要取決於演算法中的三重迴圈。迴圈體內的計算量為o(1),三重迴圈的總迴圈次數為o(n3),因此計算時間的上界為o(n3)。演算法占用空間為o(n2)

矩陣連乘 動態規劃 動態規劃解矩陣連乘問題

一.矩陣鏈事例 矩陣鏈問題主要涉及的時在多個矩陣相乘,如何通過相乘的順序來減少程式執行。二.例題分析 這次分析過程按照動態規劃的三個基本條件來逐步解答 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 ...