今天看了好久的矩陣連乘演算法,總算有了一點頭緒,現在來細細總結一下。
首先我們知道的是,矩陣連乘演算法是一種動態規劃法,那麼和多段圖和弗洛伊德演算法一樣,它也體現了動態規劃法的特點。像弗洛伊德演算法,它的動體現在每加進乙個節點,那麼d和path者兩個二維表都會發生相應的變化,且朝著全域性最優解的方向去變化。那麼矩陣連乘演算法其實也是一樣的。這裡面也用到了兩個二維表,分別是m和s。弗洛伊德演算法其實和dijkstra演算法的思想是一致的,d和path表的改變都依賴於下乙個加進來的節點。而矩陣連乘演算法中兩個二維表的改變則依賴於該點左下角的值。如下圖:
演算法的步驟是這樣的:
1、主對角線上為0
2、次對角線上的設為初值為順序計算,而每次我們只需要左下方的值,所以每計算一次次對角線上的值,相應的我們可以從上到下計算得出從i為0到i為j的值,因為其左下方的值已經計算出來.計算的方法還需要乙個for迴圈,假設斷點的位置是中間的任何乙個,然後通過比較得出m值最小的那個斷點,並且修改兩個二維表
3、最後一步我們得出來的便是m【n-1】
Prim演算法精講
對prim演算法有了新的理解,現在此總結一下。我們現在主要講的是實現部分。我們的原點是0,那麼現在u集合中只有0,v u中和0相鄰接的頂點中,最小輕邊是0和2之間的那條,所以選擇2,現在u為0和2,之後我們繼續尋找,通過窮舉法我們找到了5,然後找到了3,然後找到了1,然後找到了4,最後程式結束。按照...
矩陣連乘演算法java實現
程式執行的結果是 0 15750 7875 9375 11875 15125 0 0 2625 4375 7125 10500 0 0 0 750 2500 5375 0 0 0 0 1000 3500 0 0 0 0 0 5000 0 0 0 0 0 0 簡單介紹一下 int p 儲存矩陣的資訊 ...
演算法設計 矩陣連乘問題
白天什麼也沒學,晚上才終於拿著筆,對著 寫寫畫畫,終於看明白是怎麼計算的了。以這6個矩陣連乘作為例子 a1a2 a3a4 a5a6 30 35 35 15 15 5 5 10 10 20 20 25 1 首先,要明白兩個矩陣相乘所需要做的乘法次數 2 由於連乘的矩陣必須滿足,前乙個矩陣的列數 後乙個...