矩陣連乘優化

2021-10-02 03:29:42 字數 571 閱讀 2787

矩陣乘法次數的計算:

以兩個矩陣相乘為例,a1xa2,a1和a2為兩個矩陣,假設a1的行列數是pxq,a2的行列數是qxr。那麼對於a1xa2而言,我們需要分別執行pxr次對應a1的行元素乘以a2的列元素,根據線性代數知識,可以得到一共需要執行pxqxr次乘法。

對於兩個矩陣相乘,一旦矩陣的大小確定下來了,那麼所需執行的乘法次數就確定下來了。那麼對於兩個以上的矩陣呢?是不是也是這樣呢。實際上,對於多個矩陣相乘,乘法執行的次數與「劃分」有關。例如:

以矩陣鏈為例,假設三個矩陣的規模分別為10x100,100x5和5x50。

①以((a1*a2)*a3)方式劃分,乘法執行次數為:10*100*5+10*5*50=5000+2500=7500次

②以(a1*(a2*a3))方式劃分,乘法執行次數為:100*5*50+10*100*50=25000+50000=75000次

我們可以發現,對於同樣的矩陣鏈相乘而言,由於採用了不同的劃分,乘法次數相差10倍。

####矩陣乘法次數的計算是看矩陣乘積結果中每個元素運算的次數之和。

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...

矩陣連乘問題

矩陣連乘問題 應用動態規劃演算法,將前面計算的重複值儲存,一次來推進下一步的計算,直到得到m 1 n 的值,為最少的乘法次數 m i j 表示計算a i.j 所需的最少數乘次數 m i j min i s i j 記錄斷開位置,也就是最少計算次數的中間位置。include using namespa...

最優矩陣連乘

time limit 1 ms memory limit 128 mb difficulty 3 乙個n m矩陣由n行m列共n m個數排列而成。兩個矩陣a和b可以相乘當且僅當a的列數等於b的行數。乙個n m的矩陣乘以乙個m p的矩陣等於乙個n p的矩陣,運算量為nmp。矩陣乘法滿足結合律,a b c...