矩陣鏈乘法 動態規劃

2021-10-05 06:43:20 字數 756 閱讀 3444

1.問題

給定乙個n個矩陣的序列(矩陣鏈),用向量p輸入,求一種乘法的次序使得這個矩陣鏈的執行次數達到最小。

解析

我們已知m[i,j]為ai到aj採用最優的乘法次序得到的最小執行次數。

m[i,j]=min,該命題為真,需要證明的話請自行查詢相關資料。

i<=k偽**

//另所有m[i,j]的初值為0,s[i,j]的初值為i,1<=i<=j<=n

for r=

2 to n do

//r為當前問題規模

for i=

1 to n-r+1do

//i的起點不斷變化

j=i+r-

1//不同終點

m[i,j]

=m[i+

1,j]

+pi-

1pkpj //劃分為ai(ai+1....aj)

s[i,j]

=ifor k=i+

1 to j-1do

t=m[i,k]

+m[k+

1.j]

+pi-

1pkpj

if(t) then m[i,j]

=t s[i,j]

=k

分析

t(n)=ω(2^(n-1))

源**

動態規劃 矩陣鏈乘法

矩陣鏈乘法問題 給定n個矩陣的鏈,矩陣ai的規模為p i 1 p i 求完全括號化方案,使得計算乘積a1a2 an所需標量乘法次數最少。m i j 表示矩陣鏈ai j所需標量乘法次數的最小值。m i j 0 i j m i j m i k m k 1 j p i 1 p k p j i k s 1....

動態規劃 矩陣鏈乘法

兩個矩陣相乘的計算量,對於一般的矩陣乘法來說,如矩陣a m,n 與矩陣b n,p 相乘需要進行的加法次數為m n p次乘法 由於矩陣乘法滿足結合律,因此矩陣相乘的結合性,會影響整個計算表示式的乘法執行次數 如下面的例子,a b c三個矩陣相乘,其中a 10,5 b 5,20 c 20,3 1 ab ...

動態規劃 矩陣鏈乘法

def matrix multipy a,b 乘法得到的是乙個 a.rows,b.cols 的矩陣,相當於a.rows個向量的b.cols次的向量線性加權 ifnot a.shape 1 b.shape 0 a組中向量的維度與b組中向量的維度一致 print error else 將每乙個元素都初始...