Floyd演算法過程矩陣的計算

2021-05-28 01:28:23 字數 691 閱讀 2037

前幾天在看floyd

演算法的時候,雖然感覺程式很簡單,但是讓你動手寫那些過程矩陣的時候就感覺不怎麼簡單了,就上網找找看有木有簡便的計算方法,搜尋之後沒有發現有現成的例子,只搜到了兩句「弄兩條線,從左上角挪到右下角」,「十字交叉法,從左上角到右下角」,除此之外就再也木有找到有用的東西了,既然沒有現成的就自己根據這兩句來吧,於是就有了下面的這篇。。。。。。

下面的純屬個人見解,如有不正確的還請大家不吝賜教。。。

以高分筆記上p148頁上的例題為例:

先來簡單分析下,由於矩陣中對角線上的元素始終為0,因此以k為中間點時,從上乙個矩陣到下乙個矩陣變化時,矩陣的第k行,第k列和對角線上的元素是不發生改變的(這點很容易就可以得出了具體分析過程就不寫了,想不明白的去找塊豆腐吧。。。。),因此每一步中我們只需要判斷4*4-3*4+2=6個元素是否發生改變即可,也就是要判斷既不在第k行第k列又不在對角線上的元素。具體計算步驟如下:以k為中間點(1)「三條線」:劃去第k行,第k列,對角線(2)「十字交叉法」:對於任乙個不在三條線上的元素x,均可與另外在k行k列上的3個元素構成乙個2階矩陣,x是否發生改變與2階矩陣中不包含x的那條對角線上2元素和有關,若二者之和小於x,則用它們的和替換x,對應的path矩陣中的與x相對應的位置用k來替代。。。

下面來具體看高分筆記上面的那個題目吧。。。。

經過以上4步就可以得到最終結果了。。。寫的比較繁瑣,但是看明白了之後,計算將會非常簡單啊。。。。。

計算矩陣演算法

to change this template,choose tools templates and open the template in the editor.package testmutlchat author administrator public class computematri...

floyd演算法簡單化表示過程

無論是在有向圖還是無向圖中,尋找兩個點的最短路徑,會用到floyd演算法。通俗一點,floyd演算法關鍵是找中間者來傳遞,例如matric 0 2 matric 0 1 matric 1 2 算0到2的最短路徑就經過了1,1就是中間者。如果有n個數,則會更新n次。define inf 0x3f3f3...

矩陣乘法次數的計算過程

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