高斯消元法演算法複雜度怎麼計算?

時間 2021-05-30 00:01:35

1樓:沒有鰾De魚

首先來看下高斯消元法的步驟,假設等待進行消元的矩陣為乙個 N×N 的方陣:

第一行不變,不進行行交換

用第一行乘以某個數加到第二行,以使得第乙個主元(first pivot)下的數字為零,重複以上工作使得第三行在主元下的數字為零。最終目的使得第一列,除了第一行外,所有數字為零。

類似第二步,只是保持第二行不變,通過第二行乘以乙個數加到第三行,第四行等等。最終目的使得第二主元以下數字為零。

依次到第三行,第四行,最終達到高斯消元的目的。

演算法複雜度分析:

首先看上面的第二步,因為是 N×N 的矩陣,所以每一行有 N個元素,N個元素乘以某個數加到第二行,我們認為產生了N次乘法運算,N次加法運算。因為一共有N-1行需要進行運算,所以完成第一主元以下消零的工作,一共要產生的乘法運算次數是 N×(N-1),加法運算同理。

再看上面第三部,我們保持第二行不變,來消除第二個主元下面所有的元素為零。由於第一行不參與運算,且第一主元下都是零了。我們可以認為矩陣被壓縮成了 N-1的方陣。

每處理一行,有N-1次乘法,N-1次加法。可是需要處理的行由上面的N-1行變成了N-2行。所以實現第二主元下面的數字為零的工作我們需要(N-1)×(N-2)乘法,加法同理。

依次下來,我需要進行的運算次數是多少呢?

只考慮乘法運算的情況下

因為因此

當N 很大的時候,乘法的個數為 次,加法一樣。

參考: http://

math.mit.edu/~gs/linear

algebra/

2樓:蕭何夜下追

首先,消元第一步,將第一列的除第一行以外的元素全部變成 0,這一步需要 的時間,因為有 n 行,然後每一行有 n 個元素,在計算機裡面就要 的時間了,當然,現在平行計算,基於向量的計算,本質上還是 的時間,然後繼續校園,這個時間將是 。現在得到的是乙個上三角矩陣,接下來就是返回去減,然後除以對角線的值,這個時間是 。所以時間複雜度是

edmonds karp 演算法的複雜度?

證明 Edmonds Karp演算法時間複雜度為 閱讀如下詳細證明的前提是你已經完全掌握了EK演算法的步驟。證明開始 參考了網上找到的 證明1 證明2 a EK演算法中一次BFS尋找增廣路的時間複雜度為 每次BFS增廣,在增廣路上的未飽和邊會多出一條反向邊,故增廣操作導致的邊數增長不會使總邊數超過原...

STL庫里的演算法時間複雜度和空間複雜度都是最佳的嗎?

Alinshans 肯定不都是最佳的。但肯定比99 的人寫的都要好。競賽中不一定要求時間複雜度最小,但是基本上 嚴格一點的 要求達到乙個級別。比如複雜度能O nlogn 的你不要搞O n STL中的演算法肯定能確保你能達到,如果你的寫法沒有問題,但死活超時了 卡常數 我覺得題目出得有問題。另,你知道...

演算法時間複雜度為O(n )的是什麼演算法?

子正 O n 的演算法不稱其為演算法,它意味著這個問題尚未解決。n稍微大一點,就會耗盡CPU的算力。它比不斷摺紙 圍棋盤上擺大公尺得到的數更大。這種 演算法 是進行演算法改進的物件。演算法老師沒有花力氣說明這種演算法的荒謬之處倒是個很不可思議的事情。n 是個很大的數,你可以用windows自帶的計算...