多矩陣乘法運算的動態規劃法

在這裏插入圖片描述
在這裏插入圖片描述

在這裏我就不加上代碼解釋了,我就講解一下這個公式
在這裏插入圖片描述
這個公式是改題目的核心所在,將該公式理解透徹就能理解矩陣的多矩陣相乘的動態規劃的運算。
題目中已經簡單介紹了公式,但是我想對沒有接觸過矩陣的人說這個公式還有一些不明白中的地方。
我下面就拿出一個例子來,我想大家就會明白。在這裏插入圖片描述
看到這個矩陣的書寫方式,我想大家應該明白了一些公式中的參數代表的意思了。
Pi-1代表的是第i個矩陣的行數,爲什麼是i-1大家可以看上表p值行,稍加推理就能得出結果。

公式分解

該公式分爲兩大部分,第一部分i=j沒什麼好說的,也就是隻有一個矩陣的時候爲零,因爲只有一個矩陣乘法運算就沒有意義了。

第二部分

這纔是這個是該算法的重點。
我們先明白i,j,k代表的意義,分別代表第i個矩陣,第j個矩陣,第k個矩陣。同時第k個矩陣是介於i與j之間,將整個矩陣數列分爲兩部分。第一部分從i到k,第二部分從k+1到j。
然後我們看這個公式的第一部分
m【i,k】這一部分求得是前面在這部分重新遞歸回該公式。
m【k+1,j】這一部分是將後面這部分重新遞歸回該公式。
在這裏插入圖片描述
上面是第三部分,這是前面兩部分之間進行矩陣乘法運算的結果。這個爲什麼是結果,請大家細細品味,或者帶入上面的例子,自己嘗試。我相信以你的才華能夠理解。
我在這裏講解一下,這個第三部分並不是最終結果,只是兩部分矩陣的乘法結果。這個結果不是最終結果。因爲要想得整個過程的乘法運算次數,不止這兩部分的乘法運算次數。還有要得到這兩部分的最終矩陣,這兩部分的內部矩陣也是需要進行乘法運算的。所以請大家明白。
最優是從第二部分的整體上理解。
在這裏插入圖片描述
得出所有結果中的最小值。

例子講解

我們將上面的例子進行k值不同的兩次講解。希望能幫助到你。
忽然發現以我之力難以一步一步講解完畢。所以我們以三個矩陣爲例進行講解,就使用上面的那前三個矩陣講解。
三個矩陣時k的取值只有1和2.

當k=1時

k將上例中的局陣列分爲兩部分,第一部分第一矩陣到第一矩陣,第二部分第二矩陣到第三矩陣。
首先計算兩部分最終矩陣的計算量。也就是30355不明白的請看一下公式
然後將兩部分遞歸回公式。
第一部分遞歸因爲i=j所以結果爲零
第二部分遞歸
k值只有一個就是2.
遞歸結果是第一部分爲第二矩陣到第二矩陣,第三矩陣到第三矩陣。兩部分的運算結果爲30155
然後將兩部分遞歸回公式。因爲這兩部分都是i=j。所以結果都爲0.
返回最終結果: 30155+30355

當k=2時

k將上例中的局陣列分爲兩部分,第一部分第一矩陣到第二矩陣,第二部分第三矩陣到第三矩陣。
首先計算兩部分最終矩陣的計算量。也就是30155不明白的請看一下公式
然後將兩部分遞歸回公式。
第一部分遞歸
k值只有一個就是1.
遞歸結果是第一部分爲第一矩陣到第一矩陣,第二矩陣到第二矩陣。兩部分的運算結果爲303515
然後將兩部分遞歸回公式。因爲這兩部分都是i=j。所以結果都爲0.

第二部分遞歸爲零

返回k=2時最終結果: 303515+30155

最終結果

比較所有結果,取所有結果中中的最小值。
也就是比較30155+30355 和303515+30155取最小值。

然後我簡單寫一個前四個矩陣的運算結果圖。
這個圖有點大,超出我的預期,大家將就點看吧
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章