• 沒有找到結果。

第三章 邊界成分分析演算法介紹

3.3 複雜度分析

判斷一個演算法的優劣,可以透過觀察程式的執行時間和程式運算時的儲存 空間使用量做為依據。但是演算法在實現時,每個人所採用的程式語言及程式設 計技巧都不一樣,所以執行時間和儲存空間使用量不是一個客觀的評斷標準。且 電腦效能的好壞也會影響到執行時間,例如在超級電腦上的執行時間一定比在一 般電腦的執行時間還要快。因此訂定一個共同的規則來比較複雜度,也就是時間 複雜度和空間複雜度。

3.3.1 演算法的時間複雜度分析

演算法的時間複雜度[7][20]是一個函數,跟輸入個數有關,與要運算的數據大 小無關,比如說 32 位元的數據相加使用了 30 個時脈,64 位元的數據相加使用了 60 個時脈,雖然使用的時脈不一樣長,但這都是運算一次加法所需的時間。時間 複雜度要比較的是運算次數,跟每次加法運算的時間無關,也就是當輸入 n 筆數據 時,則會運算n−1次加法。常用O符號來表示演算法的時間複雜度,代表所需要 時間的上界,他不包括這個函數的低階項和第一項係數,他考慮的是當輸入數量 趨近無窮時的情況。例如一個演算法輸入個數為n,需要62n2 + n3 +400運算次 數,則時間複雜度為O(n2)。計算時間複雜度的過程,需要分析一個演算法執行過 程中需要的基本運算,計算所有操作的運算次數。

比較演算法的時間複雜度之前,先定義幾個輸入數量,n為訊號源個數,m接收端個數, L 為數據長度,其大小關係為:L>>mn。另外,在這個演算法中 的運算大部分都是矩陣運算,因此列出矩陣運算相關的時間複雜度。下面使用

]

[n×m 來代表n×m大小的矩陣。

‧ 矩陣相乘的時間複雜度:假如是[n×m]×[m×L]的矩陣相乘,則時間複雜度為 )

(nmL

O ;假如是[1×n]×[n×1]的矩陣相乘則時間複雜度為O(n)。

‧ 矩陣相加和相減的時間複雜度:假如是[n×m]矩陣相加和相減,則時間複雜度 為O(nm)。

‧ 矩陣與實數相乘除的時間複雜度:假如是[n×m]矩陣與實數相乘除,則時間複 雜度為O(nm)。

33

‧ 矩陣求逆的時間複雜度:假如是[n× 矩陣求逆,則時間複雜度為n] O(n3)。

‧ 矩陣中每列的值比較大小的時間複雜度:假如是矩陣每列有 L 個元素,也就是 每列有 L 個要比較,所以時間複雜度為O(L)。

‧ 共變異數矩陣的時間複雜度:假如是[m×L]×[L×m]的共變異數矩陣相乘,則 時間複雜度為O(m2L)。

在 BCA 演算法中,主要用到的就是以上這幾項時間複雜度。其中分離矩陣B 與混合後矩陣 X 的矩陣相乘是每個演算法都會有的部分,這個矩陣相乘的時間複 雜度為O(nmL),數值非常大,若是列入比較後,此演算法的時間複雜度,就是此 矩陣相乘的時間複雜度。所以在比較演算法的時間複雜度時,比較其他運算部分 的時間複雜度才看的出複雜度的變化。在原本 BCA 演算法的每次疊代中,第二大 的時間複雜度是計算共變異數矩陣的時間複雜度,為O(m2L);而在 RGBCA 演算 法的每次疊代中,因為使用相對梯度法的關係,乘上BTB做修正,運算完後求取 共變異數矩陣的部分剛好會簡化為單位矩陣,所以就不用求取共變異數矩陣,因 此第二大的時間複雜度是求取矩陣中每列的最大值和最小值,為O(L)。又因為每 列都要求取最大值和最小值,總共有 n 列,也就是訊號源個數,所以最後時間複雜 度為O(nL)。時間複雜度從原本的O(m2L)變為O(nL)。因此使用相對梯度法後,

RGBCA 演算法有效減少時間複雜度。

3.3.2 演算法的空間複雜度分析

空間複雜度是用來度量演算法的儲存空間,包括演算法的輸入數據和輸出數 據的儲存空間,還有運算過程中使用的儲存空間。下面列出矩陣運算相關的空間 複雜度,大小關係跟時間複雜度相同,L>>mn

‧ 矩陣相乘的空間複雜度:假如是[n×m]×[m×L]的矩陣相乘,則空間複雜度為 )

(nL

O ;假如是[1×n]×[n×1]則空間複雜度為O(1)。

‧ 矩陣相加和相減的空間複雜度:假如是[n×m]矩陣相加和相減,則空間複雜 度為O(nm)。

‧ 矩陣與實數相乘除的空間複雜度:假如是[n×m]矩陣與實數相乘除,則空間

34

複雜度為O(nm)。

‧ 矩陣求逆的空間複雜度:假如是[n× 矩陣求逆,則空間複雜度為n] O(n2)。

‧ 矩陣中每列的值比較大小的空間複雜度:假如是矩陣每列有 L 個元素,所以每 列有 L 個數要比較,但是最後儲存的就只有最大值和最小值,所以空間複雜 度為O(1)。

‧ 共變異數矩陣的空間複雜度:假如是[m×L]×[L×m]的共變異數矩陣相乘,則 空間複雜度為O(m2)。

在 BCA 演算法中,主要用到的就是以上這幾項空間複雜度。其中輸出矩陣的 運算所占用的空間複雜度為O(nL),是輸出數據所占用的儲存空間,數值非常大。

若是列入比較,此演算法的空間複雜度就是此矩陣相乘的空間複雜度。所以在比 較演算法的空間複雜度時,比較其他運算部分的空間複雜度才看的出複雜度的變 化。在原本 BCA 演算法的每次疊代中,第二大的空間複雜度是計算共變異數矩陣 的空間複雜度,為O(m2);而在 RGBCA 演算法的每次疊代中,因為使用相對梯度 法的關係,運算完後求取共變異數矩陣的部分剛好會化簡為單位矩陣,所以就不 用求取共變異數矩陣,因此第二大的空間複雜度是矩陣相加相減的部分,為

) (nm

O 。於是空間複雜度從原本的O(m2)變為O(nm),當接收端個數大於訊號源個 數時,RGBCA 演算法有效減少空間複雜度。

3.3.3 複雜度比較

表 3.7 為複雜度的比較表,使用相對梯度法做為最佳化的方法,加上使用單位 矩陣做為分離矩陣的初始值,使時間複雜度從O(m2L)減少為O(nL);空間複雜度 則從O(m2)變為O(nm)。當訊號源個數與接收端個數相同時,空間複雜度沒有改 變,但在程式上,還是可以知道少了白化、反矩陣和共變異數矩陣的運算,程式 明顯變短。因此,RGBCA 演算法有效降低複雜度。

表 3.7 時間複雜度與空間複雜度比較

BCA RGBCA

時間複雜度 O(m2L) O(nL)

空間複雜度 O(m2) O(nm)

35

相關文件