1.算法的定義:
算法是對特定問題求解步驟的一種描述,它是指令的有限序列,其中的每條指令表示一個或多個操作。
2.算法的特性:
(1)有窮性:一個算法必須總在執行有窮步之后結束,且每一步都在有窮時間內完成。
(2)確定性:算法中每條指令必須有確切的含義,對於相同的輸入只能得到相同的輸出。
(3)可行性:算法中描述的操作都可以通過已經實現的基本運算執行有限次來實現。
(4)輸入:一個算法有零個或多個輸入。
(5)輸出:一個算法有一個或多個輸出。
‘好’的算法考慮到以下目標:
(1)正確性:算法能夠正確地解決求解問題。
(2)可讀性:具有良好的可讀性,以幫助人理解。
(3)健壯性:輸入非法數據時,算法能適當地作出反應或進行處理,而不會產生莫名其妙的輸出結果。
(4)效率與低存儲量需求:效率是指算法執行的時間,存儲量是指算法執行過程中所需要的最大存儲空間,這兩者與問題規模有關。
3.算法的時間復雜度
一般情況下,算法中基本操作重復執行的次數是問題規模n的某個函數,用T(n)表示,若有某個輔助函數f(n),存在一個正常數c使得T(n)<= c*f(n)恆成立。記作T(n)=O(f(n)),稱O(f(n)) 為算法的漸進時間復雜度,簡稱時間復雜度。
4.算法的空間復雜度
空間復雜度是指算法在計算機內執行時所需存儲空間的度量。記作:S(n)=O(f(n))
5.算法時間復雜度和空間復雜度計算
通常計算最壞時間復雜度與最壞空間復雜度
6.O標記法,O標記法的意義
f(n) = O(g(n)) 表示的含義是f(n)以g(n)為上界,O表示最壞時間復雜度
7.Ω標記法,大Ω標記法的意義
f(n) = Ω(g(n)) 表示的含義是f(n)以g(n)為下界
當函數的大小只有下界,沒有明確的上界的時候,可以使用大Ω表示法,Ω一般用於描述算法的最優復雜度 。
8. θ標記法,大θ標記法的意義
f(n) = Θ(g(n)) 表示的含義是g(n)是f(n)的確界
用於界定函數的漸進上界和漸進下界。當 f(n)= θ(g(n)) 的時候,代表着g(n)為f(n)的漸進緊確界。而θ漸進描述符在所有的漸進描述符中是最嚴格的一個,因為它既描述了函數的上界,有描述了函數的下界。
9. 時空權衡原則
以空間換時間的技術:通常使用額外的存儲空間來實現更快或更方便的數據存取。