演算法分析與優化

2021-10-01 19:23:38 字數 994 閱讀 2779

同一問題可用不同演算法解決,而乙個演算法的質量優劣將影響到演算法乃至程式的效率.演算法分析的目的在於選擇合適演算法和改進演算法.乙個演算法的評價主要從時間複雜度和空間複雜度來考慮.

1、時間複雜度

(1)時間頻度

乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。乙個演算法中的語句執行次數稱為語句頻度或時間頻度,記為t(n)。

(2)時間複雜度

在剛才提到的時間頻度中,n稱為問題的規模,當n不斷變化時,時間頻度t(n)也會不斷變化。但有時想知道它變化時呈現什麼規律.為此,引入時間複雜度概念.

一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記作t(n)=o(f(n)),稱o(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。

在各種不同演算法中,若演算法中語句執行次數為乙個常數,則時間複雜度為o(1),另外,在時間頻度不相同時,時間複雜度有可能相同,如t(n)=n2+3n+4與t(n)=4n2+2n+1它們的頻度不同,但時間複雜度相同,都為o(n2)。

按數量級遞增排列,常見的時間複雜度有:

常數階o(1),對數階o(log2n),線性階o(n),

線性對數階o(nlog2n),平方階o(n2),立方階o(n3),……,

k次方階o(nk),指數階o(2n)。隨著問題規模n的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。

2、空間複雜度

與時間複雜度類似,空間複雜度是指演算法在計算機內執行時所需儲存空間的度量。記作:

s(n)=o(f(n))

我們一般所討論的是除正常占用記憶體開銷外的輔助儲存單元規模。

演算法分析與優化策略

一 漸進時間複雜度 基本操作的數量往往可以寫成關於 輸入規模 的表示式,保留最大項並忽略係數後的簡單表示式稱為演算法的漸進複雜度,用於衡量基本運算元隨規模的增長情況。例如 設輸入規模為n時加法操作的次數為t n t n n n 1 n 2 6。當n很大時,平方項和一次項對整個多項式的影響不大,可以用...

演算法設計與分析課堂筆記(1)現代優化演算法

工程領域內存在大量的優化問題,這些優化問題難以求解的原因 搜尋空間的可能解數目太多以至於無法採用窮舉搜尋法尋找最優解 簡化模型得到的結果往往是沒有實際意義的 脫離眾多現實因素 階被嚴格限制,以至於找到乙個可行解都很難,遑論最優解 很多時候採用自然界最樸素的策略來應對這些問題,反而能夠得到不錯的結果。...

MySQL查詢分析與優化

mysql查詢分析與優化 show www.2cto.com show status 顯示狀態資訊 擴充套件show status like show variables 顯示系統變數 擴充套件show variables like show engine innodb status 顯示innod...