演算法(Algorithm)簡單介紹
什麼是演算法(Algorithm) ?
演算法是一種處理程序(procedure),透過輸入參數(input)來,經過一系列的程序,來得到一個輸出(output)結果。(ex: 像是數學上的函數(function),料理的食譜……等等。)
演算法的正確性(Correctness):
如何判斷這個演算法是正確的,可以透過數學上的歸納法(induction)來進行驗證,因為演算法是一種處理程序,不管輸入的值為多少,都只會回傳一個結果,若輸入相同的值,其結果也必定相同,所以對於驗證演算法的正確性來說,只要輸入定義內的值,其返回的結果都成立,其就是一個正確的演算法。
演算法的效率(Efficiency):
由於演算法是一種處理程序,對於相同的問題,事實上是可以有多種演算法來處理,然而哪種演算法才是最好的,其所需探討的就是演算法的效率,演算法的效率取決於電腦的性能與輸入的資料量大小,其中一般在探討效率都著重於輸入的資料量大小,意即對於相同的問題,且相同的資料量大小中,哪種演算法的處理時間最短,花費的時間最短,即是最優的演算法。
漸進符號(Asymptotic Notation):
漸進符號是一種用來表示演算法效率的方法,其中有三種符號,而一般以O(Big-O Notation)來表示。
Notation | 簡單描述 |
---|---|
O(Big-O) | 表示上界(upper bounds) |
Ω(Big-Omega) | 表示下界(lower bounds) |
Θ(Big-Theta) | 表示介於上界與下界(tight bounds) |
一些常見的O(f(n)):
input | Constant | Logarithmic | Linear | log-linear | Quadratic |
---|---|---|---|---|---|
n | O(1) | O(log n) | O(n) | O(n log n) | O(n2) |
(Source: Daniel Miessler)
留言
張貼留言