Skip to content

Latest commit

 

History

History
19 lines (12 loc) · 1.3 KB

File metadata and controls

19 lines (12 loc) · 1.3 KB

符號與說明

時間複雜度

對於一個演算法,考慮所有大小為 $n$ 的輸入,若它的最差執行時間為 $T(n)$,那麼我們便說該演算法的最差時間複雜度為 $T(n)$。 通常我們會關心在 $n$ 趨近無窮大的時候,這個函數的成長幅度為何。因此我們通常關心的是 $T(n)$ 的漸進時間複雜度(Asymptotic Time Complexity)。 常見的漸進符號如下:

  • Big-$O$:我們說一個演算法的執行時間為 $O(f(n))$,若存在一個常數 $c > 0$、以及一個 $n_0\in\mathbb{N}$,使得對所有的 $n > n_0$ 皆有 $T(n) \le cf(n)$
  • Big-$\Omega$:我們說一個演算法的執行時間為 $\Omega(f(n))$,若存在一個常數 $c > 0$、以及一個 $n_0\in\mathbb{N}$,使得對所有的 $n > n_0$ 皆有 $T(n) \ge cf(n)$
  • Big-$\Theta$:我們說一個演算法的執行時間為 $\Theta(f(n))$,若存在兩個常數 $c_1, c_2 > 0$、以及一個 $n_0\in\mathbb{N}$,使得對於任意的 $n > n_0$ 都有 $c_1f(n) \le T(n) \le c_2f(n)$

計算模型

最簡單的說法,是指計算模型嚴謹地定義了「$O(1)$ 的時間可以做什麼」、以及「資料的存取方式」。

Misc

  • 身為一個資訊系理論宅,我們使用的對數函數 $\log$,在沒有額外說明的情形下,一律以 2 為底。