第三章 函數的增長

漸進記號

  • Θ -- 上界和下界,緊確界,相當于f(n) ∈ [c1 * g(n), c2 * g(n)]
  • Ω -- 閉區間下界,最好運行時間,相當于 f(n) ∈ [c * g(n), ∞)
  • Ο -- 閉區間上界,最差運行時間,相當于 f(n) ∈ [0, c * g(n)]
  • ω -- 開區間下界,最好運行時間,相當于 f(n) ∈ (c * g(n), ∞)
  • ο -- 開區間上界,最差運行時間,相當于 f(n) ∈ [0, c * g(n))



不是所有函數都可漸進比較,對于f(n) 和g(n)可能 f(n) = O(g(n))與 f(n) = Ω (g(n))都不成立。

練習

3.1-1

答:要證c1(f(n) + g(n)) <= max(f(n), g(n)) <= c2(f(n) + g(n)),令c1 = 0.5, c2 = 1。

3.1-2

答:

當 n 很大時只有第一項是主要部分。

3.1-3

答:O(n^2)是用來說明上界的,最小的上界沒有意義。

3.1-4

答:

  1. 2^(n+1) = 2 * 2^n = O(2^n),成立
  2. 2^2n = 2^n * 2^n,不成立
3.1-5

答:

  • 充分性:因為f(n)=Θ(g(n)),由定義有存在c1、c2和n0(其中n>=n0)使得0<=c1g(n)<=f(n)<=c2g(n)。于是:
    存在c1和n0(其中n>=n0)使得0<=c1g(n)<=f(n),即f(n)=Ω(g(n))
    存在c2和n0(其中n>=n0)使得0<=f(n)<=c2g(n),即f(n)=O(g(n))

  • 必要性:f(n)=Ω(g(n)) => “存在c1'和n1(其中n>=n1)使得0<=c1'g(n)<=f(n)”。
    f(n)=O(g(n)) => “存在c2'和n2(其中n>=n2)使得0<=f(n)<=c2'g(n)”。
    令c1=c1',c2=c2',n0=max{n1, n2},由Θ的定義有:f(n) = Θ(g(n))。

3.1-6

答:由上一題可知。

3.1-7

答:用反證法,假設o(g(n)) ∩ ω(g(n))不是空集,則對于所有的c1,c2>0有0<=c1g(n)<f(n)<c2g(n)其中n>=max(n1, n2)。令c1=c2,就得出矛盾,所以o(g(n)) ∩ ω(g(n))是空集。

3.1-8

答:同樣的,將題干例子改不等式方向得到Ω(g(n,m)),兩邊同時加約束得到Θ(g(n, m))。




第二節主要是數學知識。包括單調性、取整、模運算、多項式、指數、對數、階乘、復合函數、菲波那切數列等,結合附錄復習。

練習

3.2-1

答:

兩式相加得到第加法和非負乘法。
得到復合。
3.2-2

證明 a^logb(c) = c^ logb(a)
答:

3.2-3

證明:lg(n!) = Θ(nlgn),n! = ω(2^n) 和 n! = o(n^n)
答:

  • 上界:lg(n!) < lg(n^n) = nlgn
  • 下界:根據斯特林近似公式有
    n! = √(2πn) (n/e)^n (1 + Θ(1/n))
    lg(n!) = lg√(2πn) + nlg(n/e) + lg(1+Θ(1/n))
    = (1/2)lg(2πn) + n(lgn - lge) + lg(1+c/n))
    = Θ(lgn) + Θ(nlgn) + lg(n+c) - lgn
    = Θ(nlgn)
3.2-4

答:若函數f(n)有多項式邊界,則滿足lg f(n) = o(lg n)。
3.2-5 ~8

答:

  1. 第二個大。lg*n表示使n < 1所需取對數的次數。
  2. 代入式中可驗證。
  3. F[0] = 0,F[1] = 1。假設
    F[i-1] = (φ^(i-1) - φ'^(i-1)) / √5
    F[i-2] = (φ^(i-2) - φ'^(i-2)) / √5
    則F[i] = F[i-1] + F[i-2]
    = (φ^(i-1) + φ^(i-2) - φ'^(i-1) - φ'^(i-2)) / √5
    = (φ^(i-2)(φ + 1) - φ'^(i-2)(φ' + 1)) / √5
    整理有
    φ + 1 = (3 + √5) / 2
    φ^2 = (1 + 2√5 + 5) / 4 = (3 + √5) / 2
    φ + 1 = φ^2
    同理 φ'+ 1 = φ'^2。代入后,得到
    F[i] = (φ^i - φ'^i) / √5
  4. 由Θ的自反性有n = Θ(k*lnk)
    ∴n/lnn = Θ[k/lnk * ln(k/lnk)]
    = Θ[k - k/ln^2(k)]
    = Θ(k)

思考題

3-1

當總結

3-2
3-3

答:

總體:指數的指數 > 階乘 > 指數函數 > 冪函數 > 對數函數 > 多重對數 > 常數。

3-4

a. f
b. f
c. t
d. f, 缺約束條件
e. f, 缺約束條件,f(n)可能 < 1
f. t
g. f,多項式成立,指數函數不成立。

3-5
3-6
參考:算法導論題解
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容