矩陣鏈乘法

2021-09-02 15:24:08 字數 795 閱讀 1972

輸入:, ai是矩陣

輸出:計算a1 * a2 * ... * an的最小代價方法

優化解的代價方程

for  l=2 to  n do  /*計算地l對角線*/

for  i=1 to  n-l+1 do

j=i+l-1;

m[i, j]=∞;

for  k = i to  j-1 do /* 計算m[i,j] */

q=m[i, k]+m[k+1, j]+pi-1pkpj

if  qreturn m.

print-optimal-parens(s, i, j)

if j=i

then print「a」i;

else

print「(」

print-optimal-parens(s,i,s[i,j])

print-optimal-parens(s,s[i,j]+1,j)

print 「)」

計算代價的時間 (l,i,k)三層迴圈,每層至多n-1步  :

o(n)

總時間複雜性為:

使用陣列m和s

矩陣鏈乘法

設m i j 為計算矩陣ai.j所需標量乘法運算次數的最小值。對整個問題計算ai.n的最小代價就是m i,n 使用輔助表是s 1.n,1.n 來記錄計算m i,j 時取得最優代價處k的值。k是裂開的位置。include define n 6 void matrix int p,int m n 1 i...

矩陣鏈乘法

a1,a2.an,n個矩陣,矩陣ai的維數為p i 1 p i 資料矩陣鏈乘法加全部括號,使得計算乘法的次數最少 對矩陣ai,ai 1,其維數分別為p i 1 p i p i p i 1 ai ai 1要執行乘法運算的次數為p i 1 p i p i 1 m i j 為矩陣ai ai 1 aj最少的...

矩陣鏈乘法

題目難度 對於矩陣鏈乘法這道題目,我們先明確乙個概念 對於n各需要相乘的矩陣所構成的 鏈 要計算其乘積a1a2.an。我們需要對其加上n 1個括號,來確定其運算順序。例 明白括號概念之後,我們還需明白何為矩陣相乘。矩陣相乘或不如稱為縱橫相乘,意思就是對於p q,以及q r的兩個矩陣,對於第乙個矩陣的...