1. 程式人生 > >演算法中的一些符號 O(big-Oh) Ω(big-theta) Θ(big-theta)

演算法中的一些符號 O(big-Oh) Ω(big-theta) Θ(big-theta)

一、概述

       這是我們在演算法的時間複雜度分析中經常會碰到的幾個符號。符號後面括號裡的是他們相應的讀法。簡單來說,第一個符號的意義相當於“小於等於”;第二個符號的意義相當於“大於等於”;第三個符號的意義相當於“等於”。其實還有一個o(little-oh),它的意義相當於“小於”,這裡不做討論。後面的討論中都用比較通俗的話語來敘述,當然也是為了方便書寫。

二、意義

O(big-Oh):

       首先,這是我們在學習工作中描述演算法時間複雜度用的最普遍的符號。它是漸進上界,其作用是將我們得到的演算法在最壞情況下(worst case)時間複雜度表示式簡化成對應的多項式(比如n^2等)。所以在我們證明的過程中,目的是證明我們的式子要“小於等於”

目標多項式。

Ω(big-Omega):

      這個符號我們一般用的比較少,一個是因為我們一般不會去考慮演算法執行時間的下界,另一個是因為下界時間也不好證明。沒錯,他就是漸進下界,其作用是將我們得到的演算法在最好情況下(best case)時間複雜度表示式簡化成對應的多項式(也比如n^2等)。所以在我們證明的過程中,目的是證明我們的式子要“大於等於”目標多項式。

Θ(big-theta):

      如果O和Ω可以用同一個多項式表示,那麼這個多項式就是我們所要求的漸進緊的界了。其作用是將我們可以較準確地得到演算法的時間複雜度表示式對應的多項式(也比如n^2等)。所以在我們證明的過程中,目的是證明我們的式子要“等於”

目標多項式。


三、總結

      一般來說,我們在學習工作中用O的頻率比較高,它也是我們比較關心的演算法描述符號。所以如果記不住就先記住它吧!