考研相關文章參考資料為 wjungle 大神提供的筆記

漸進式符號

Asymptotic Notations

  • 表示時間函數的成長速率 (growth rate) 等級

符號

  • OO
    • f(n)=O(g(n))f(n) = O(g(n)) iff exist two positive constants cc and n0n_0 such that f(n)cg(n)f(n) \leq c*g(n), for all nn0n \geq n_0
    • 視為理論的 Upper-Bound
  • Ω\Omega
    • f(n)=Ω(g(n))f(n) = \Omega(g(n)) iff exist two positive constants cc and n0n_0 such that f(n)cg(n)f(n) \geq c*g(n), for all nn0n \geq n_0
    • 視為理論的 Lower-Bound
  • Θ\Theta
    • f(n)=Θ(g(n))f(n) = \Theta(g(n)) iff exist three positive constants c1,c2c_1,c_2 and n0n_0 such that c1g(n)f(n)c2g(n)c_1*g(n) \leq f(n) \leq c_2*g(n), for all nn0n \geq n_0
  • oo
    • f(n)=o(g(n))f(n) = o(g(n)) iff for all constants c>0c>0, exist n0>0n_0>0 such that 0f(n)<cg(n)0 \leq f(n) < c*g(n), for all nn0n \geq n_0
  • ω\omega
    • f(n)=o(g(n))f(n) = o(g(n)) iff for all constants c>0c>0, exist n0>0n_0>0 such that 0cg(n)<f(n)0 \leq c*g(n) < f(n), for all nn0n \geq n_0

常見成長速率

  • 由小到大
    • 常數、對數:
      • O(1)O(1)
      • O(logn)=O(loglog...logn)O(\log^*n) = O(\log\log...\log n)
      • O(loglogn)O(\log\log n)
      • O(logn)=O(2loglogn)O(\log n) = O(2^{\log\log n})
      • O(logkn)O(\log^k n)
    • 線性、多次方:
      • O(n)=O(2logn)O(n) = O(2^{\log n})
      • O(nlogn)O(n\log n)O(n!)O(n!)
      • O(n2)O(n^2)
      • O(nk)O(n^k)
    • 指數:
      • O(2n)O(2^n)
      • O(kn)O(k^n)
    • 階乘、多指數:
      • O(n!)O(n!)
      • O((n+1)!)O((n+1)!)
      • O(nn)O(n^n)
      • O(n2n)O(n^{2n})

實用操作:

  • alogbc=clogbaa^{\log_bc} = c^{\log_ba}

求解遞迴時間函數

展開帶入法

ex: T(n)=2T(n1)+1, T(1)=1T(n) = 2T(n-1) + 1,~T(1) = 1,求 T(n), O(n)T(n),~O(n)?

T(n)=2T(n1)+1T(n) = 2T(n-1) + 1
=2[2T(n2)+1]+1=4T(n2)+3= 2[2T(n - 2) + 1] + 1 = 4T(n - 2) + 3
=4[2T(n3)+1]+1=8T(n3)+7= 4[2T(n - 3) + 1] + 1 = 8T(n - 3) + 7
=16T(n4)+15= 16T(n - 4) + 15
......
=2n1T(1)+2n11= 2^{n - 1}T(1)+2^{n - 1} - 1
O(2n)O(2^n)

  • 更多看筆記 P.37

Master Method

  • T(n)=aT(nb)+f(n)T(n) = aT(\frac{n}{b})+f(n),其中 a1, b>1a \geq 1,~b > 1 之 constants,f(n)f(n) 是一個正成長之函數,則可使用此定理求出 T(n)=Θ(?)T(n) = \Theta(?)
  • 求出 nlogban^{\log_ba} 並與 f(n)f(n) 比較,分為 3 case:
    • case 1:
      • f(n)=O(nlogbaε), ε>0f(n) = O(n^{\log_ba - \varepsilon}),~\varepsilon > 0
      • T(n)=Θ(nlogba)T(n) = \Theta(n^{\log_ba})
    • case 2:
      • f(n)=Θ(nlogba)f(n) = \Theta(n^{\log_ba})
      • T(n)=Θ(nlogbalogn)T(n) = \Theta(n^{\log_ba} * \log n)
    • case 3:
      • f(n)=Ω(nlogba+ε), ε>0f(n) = \Omega(n^{\log_ba + \varepsilon}),~\varepsilon > 0
      • af(nb)cf(n), where 0<c<1af(\frac{n}{b}) \leq cf(n),~where~0 < c < 1
      • T(n)=Θ(nlogba)T(n) = \Theta(n^{\log_ba})

Extended Master Method

  • T(n)=aT(nb)+f(n)T(n) = aT(\frac{n}{b})+f(n)f(n)nlogba=logkn, k1\frac{f(n)}{n^{\log_ba}} = \log^kn,~k \geq 1
  • 不使用 case 3,而是使用此定理,即 T(n)=Θ(nlogbalogk+1n)T(n) = \Theta(n^{\log_ba} * \log^{k + 1}n)

Recursive Tree

  • 分為兩種類型:
    • 每一 level 之 cost 皆相同
      • T(n)=Θ(level costlogn)T(n) = \Theta(level~cost * \log n)
    • 每一 level 之 cost 皆不相同,且 \leq level 1 之 cost
      • T(n)=Θ(level 1 cost)T(n) = \Theta(level~1~cost)

ex:

  • T(n)=T(n5)+T(4n5)+nT(n) = T(\frac{n}{5}) + T(\frac{4n}{5}) + n
    • level 1: nn
    • level 2: n5+4n5=n\frac{n}{5} + \frac{4n}{5} = n
    • Θ(nlogn)\Theta(n\log n)
  • T(n)=T(n4)+T(n2)+T(n8)+nT(n) = T(\frac{n}{4}) + T(\frac{n}{2}) + T(\frac{n}{8}) + n
    • level 1: nn
    • level 2: n4+n2+n8=7n8\frac{n}{4} + \frac{n}{2} + \frac{n}{8} = \frac{7n}{8}
    • Θ(n)\Theta(n)
  • T(n)=T(n5)+T(7n10)+nT(n) = T(\frac{n}{5}) + T(\frac{7n}{10}) + n
    • level 1: nn
    • level 2: n5+7n10=9n10\frac{n}{5} + \frac{7n}{10} = \frac{9n}{10}
    • Θ(n)\Theta(n)

特徵方程式

ex: T(n)=T(n1)+T(n2), T(0)=0, T(1)=1T(n) = T(n - 1) + T(n - 2),~T(0) = 0,~T(1) = 1

特徵方程式: x2=x+1x2x1=0x^2 = x + 1 \Rightarrow x^2 - x - 1 = 0
解出兩根為 1±52\frac{1 \pm \sqrt{5}}{2}
T(n)=A(1+52)+B(152)\Rightarrow T(n) = A(\frac{1 + \sqrt{5}}{2}) + B(\frac{1 - \sqrt{5}}{2})
帶入 T(0)=0, T(1)=1T(0) = 0,~T(1) = 1A,BA,B
T(n)=15(1+52)15(152)T(n) = \frac{1}{\sqrt{5}}(\frac{1 + \sqrt{5}}{2}) - \frac{1}{\sqrt{5}}(\frac{1 - \sqrt{5}}{2})

Divide-and-Conquer

  • 將一個大問題分割 (Divide) 為幾個獨立的子問題,每個子問題各自求解 (Conquer),最後合併所有子問題的解成為整個大問題之解
  • T(n)=aT(nb)+f(n)T(n) = aT(\frac{n}{b})+f(n) 之關係:
    • nn 為資料量
    • aa 代表子問題數量
    • nb\frac{n}{b} 代表子問題資料量
      • T(nb)T(\frac{n}{b}) 代表一個子問題之時間
    • f(n)f(n) 代表所有切割合併的成本和