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 將每乙個元素都初始...