python 讀書筆記(2)算法的漸進分析

一、算法的上界:大O()分析
算法

       定義:稱一個函數g(n)是O(f(n)),當且僅當存在常數c>0和n0>=1,對一切n>n0均有|g(n)|<=c|f(n)|成立,也稱函數g(n)以f(n)爲界或者稱g(n)囿於f(n)。記做g(n)=O(f(n))。 
函數

     

1) 加法規則spa

T(n,m) = T1(n) + T2(n) = O (max (f(n),g(m))htm

2) 乘法規則get

T(n,m) = T1(n) * T2(m) = O (f(n) * g(m))效率

3) 一個特例(問題規模爲常量的時間複雜度循環

在大O表示法裏面有一個特例,若是T1(n) = O(c), c是一個與n無關的任意常數,T2(n) = O (f(n)) 則有經驗

T(n) = T1(n) * T2(n) = O (c*f(n)) = O(f(n))時間

也就是說,在大O表示法中,任何非0正常數都屬於同一數量級,記爲O⑴。view

4) 一個經驗規則

複雜度與時間效率的關係:

c < log2n < n < n*log2n < n2 < n3 < 2n < 3n < n! (c是一個常量)


二、算法的下界:

       定義:Ω(g(n)) = { f(n) : 存在正常數c和n0,使全部n>=n0有0<=c*g(n)<=f(n) }


三、算法的漸進分析:

  1. 順序執行語句的最壞運行時間爲O(max(T1(n),T2(n)......Ti(n))),Ti(n)爲第i條語句的O(Ti(n))。

  2. while循環的最壞運行時間:

         例:while S1:

                  S2

          最壞運行時間爲O(max(T1(n)*(I(n)+1),T2(n)*I(n))) , I(n)爲最壞狀況下循環體執行的次數。

(三)for 循環的最壞運行時間:和while循環的相似。

(四)if——else的運行時間:

           例: if  S1:

                        S2

                   else:

                        S3

        最壞運行時間爲O(max(T1(n),T2(n),T3(n)))。

相關文章
相關標籤/搜索