大 O.
Big O 表示法為函式的增長提供了上限。直觀的 f ∊ O(g),f 增長最多快 g。
正式 f ∊ O(g) 當且僅當有一個正數 C 和一個正數``n 這樣對於所有正數 m > n 我們有
C⋅
g(m)>f(m)。
直覺這個定義
關於 C 的直覺
C 負責吞嚥功能中的常數因素。如果 h 是 f 的兩倍,我們仍然有 h ∊ O(g),因為 C 可以是兩倍大。為此,有兩個基本原理:
- 更簡單的符號:
f ∊ O(n)優於f ∊ O(7.39 n)。 - 抽象:在這些考慮中吞下任何時間單位,因為它們沒有任何好處; 它們在機器之間有所不同,演算法可以免費評估。由於
C吞噬了恆定因子,因此複雜性等級甚至在機器上保持相同的十倍速度。
關於 n 的直覺
n 負責吞嚥初始湍流。一種演算法可能具有初始化開銷,這對於小輸入來說是巨大的,但從長遠來看會得到回報。n 的選擇允許足夠大的輸入來獲得焦點,而忽略初始拉伸。
關於 m 的直覺
m 的範圍超過所有大於 n 的值 - 以形成“從 n 開始,這就成立”的想法。