各种复杂度函数的表示方法大致可按表达的精确程度分为下面的三个等级: (何种情况下用相应的复杂度函数)
1.解析表达式。 用解析表达式刻画复杂度函数是最精确的表达方式。例如 ·求n元中之最大元算法MaxElement的复杂度为 T(n) = W(n) = A(n) = n – 1 。 ·顺序搜索算法的最坏情形时间复杂度为 W(n) = n ; 在指定分布条件及 q = 1情形下的期望时间复杂度为 A(n) = ( n + 1)/2 。
2.阶(Order)表达式。 为了简化算法复杂度分析的方法,往往只需计算当问题规模较大时算法的渐进复杂度的阶。
定义1.1 称(复杂度)函数T(n)是O(f(n))的,即 T(n) = O(f(n)),如果存在常数c > 0与n0 ,当n > n0 时有T(n)≤cf(n) 。例如: T1(n) = (n + 1) / 2 = O(n) , T2(n) = 3n2 + 4n + 5 = O(n2)
定义1.2 称(复杂度)函数T(n)是Ω(f(n))的,即 T(n) = Ω(f(n)),如果存在常数c > 0与n0 ,当n > n0 时有T(n) ≥cf(n) 。 例如: T1(n) = (n + 1) / 2 = Ω(n) , T2(n) = 3n2 + 4n + 5 = Ω(n2)
定义1.3 称(复杂度)函数T(n)是θ(f(n))的, 即T(n) = θ(f(n)),如果存在常数c1, c2 > 0与n0 ,当n > n0 时有c1f(n)≥T(n)≥c2f(n) 。 例如: T1(n) = (n + 1) / 2 = θ(n) , T2(n) = 3n2 + 4n + 5 = θ(n2) 显然,如果T(n) = O(f(n))且T(n) = Ω(f(n)), 则T(n) = θ(f(n)) 。
3.多项式函数和指数函数。 多项式函数指T(n)为自变量n的多项式函数,例如T1(n)=n/2+1/2,T2(n)=3n2+4n+5等。 而指数函数如T3(n) = 2n + 5,T4(n) = 3n/2 – 8等等,自变量n出现在指数部分。这两类函数都是单增函数,但指数函数的增长速度要比多项式函数快得多。三种复杂度指标由细至粗, 对于一个新问题首先可用最后一种(是否为多项式)