文章目錄
時間複雜度
o表示法
代價分攤
參考資料
演算法的空間複雜度是對執行過程中所需要的最大儲存資源的開銷的一種度量空間複雜度包括兩個部分:
時間複雜度是對演算法開始到結束所需要的執行時間的一種度量因為演算法執行的時間和硬體效能相關,為了避免這種硬體帶來的影響,時間複雜度的衡量單位需要遮蔽硬體差異,這就是程式步的意義所在。
程式步指的是演算法中在語法和語義上有意義的指令序列,該序列的執行時間與演算法的例項特性無關。具體而言,以下語句可以確定程式步:
o表示法做的是對原本的程式步做進一步的抽象,核心想法就是,只留下最高次的數量級。做了兩次抽象:f(1. 去掉了不是其主要作用的項;
2. 對於起主要作用的項,去除其前面的常數,改為1
o表示法可以用來表示時間複雜度,也可以用來表示空間複雜度
n)=o
(g(n
))當且僅當存在正值常數c和
n0,使得對於所有的n≥
n0,有f(
n)≤c
∗g(n
) (含義是:c∗
g(n)
是f(n
) 的上界)。為了表示更精確的資訊,g(
n)應該取滿足條件的最小的函式。
雖然我們可以通過計算準確的程式步來計算o(),但是這樣的做法不是很有效率,我們可以通過確定每一組語句的漸進複雜性,然後彙總推導得到
例子:計算binarysearch的最壞時間複雜性: t(
0)=a
t(n)=b+
t(n/
2)=b
∗2+t
(n/2
2)=.
..=b
∗log
2n+t
(0)=
o(lo
gn)
乙個演算法的空間複雜度只考慮在執行過程中為區域性變數分配的儲存空間的大小,它包括為參數列中形參變數分配的儲存空間和為在函式體中定義的區域性變數分配的儲存空間兩個部分。
代價分攤的思路是:孤立地看待每乙個呼叫程式的最壞時間複雜度,來累加程式最終的時間複雜度,會導致乙個比較糟糕的結果。所以提出代價均攤的方案,核心的思想是:通過對每個狀態s,賦予實數φ(s),稱為s的勢能,用來表示s進行高代價操作的可能性。具體怎麼做,此坑待填。
效能基礎理論
一 效能測試的意義 現狀 網際網路行業發展快,使用者量大大增加 業務和系統架構越來越複雜,資料越來越多,使用者不僅僅滿足於功能的實現,在某些場景下,更在意系統效能。二 什麼是效能測試 百科解釋 效能測試是通過自動化的測試工具模擬多種正常 峰值以及異常負載條件來對系統的各項效能指標進行測試。負載測試和...
效能測試基礎理論
一 什麼是軟體效能 定義 軟體的效能是軟體的一種非功能特性,它關注的不是軟體是否能夠完成特定的功能,而是在完成該功能時展示出來的及時性。由定義可知效能關注的是軟體的非功能特性,所以一般來說效能測試介入的時機是在功能測試完成之後。另外,由定義中的及時性可知效能也是一種指標,可以用時間或其它指標來衡量,...
貪心演算法基礎理論
greedy演算法基本思想 貪心演算法是一種在每一步選擇中都採取在當前狀態下最好或最優的選擇,從而希望結果是最好或最優的結果。希望通過做出區域性優化選擇達到全域性優化選擇。演算法不一定總產生優 化解。greedy演算法產生優化解的條件 具有優化子結構 具有貪心選擇性 優化子結構 若乙個優化問題的優化...