note
Mastering Theorem for Dividing Function
這個方法非常有用,在各種研究所題型都管用,除非他有要求,一定要用 Upper & lower bound 解,不然都可以解。
時間複雜度計算
$ T(n) = aT(n/b) + θ\left(n^k log^pn \right)$
$\qquad Satisfy \quad ∀ a,b ∈ a \geq 1 ∧ b >1 $
$ case 1 : log_ba > k $
$\quad then$ $$ θ(n^{log_ba} ) $$
$ case 2: log_ba = k $
$\quad if \quad p > -1 \quad then$
$$ θ(n^klog^{p+1}n) $$
$\quad if \quad p = -1 \quad then$
$$ θ(n^kloglogn) $$
$\quad if \quad p < -1 \quad then$
$$ θ(n^k) $$ $ case 3: log_ba < k $
$\quad if \quad p \geq 0 \quad then$
$$θ(n^klog^{p}n)$$ $\quad if \quad p < 0 \quad then$ $$O(n^k)$$
這邊給一個例子:
有一個演算法的時間複雜度是 T(n) = 3T(n / 7) + n log n
為 case 3
-
$考慮 \quad p = 1 \geq 0$
所以他的時間複雜度就是
-
$\quad T(n) = θ (n log n) $
沒有留言:
張貼留言