점화식의 분석 방법

1. 반복대치

더 작은 문제에 대한 함수로 반복해서 대치해 나가는 해법

 

2. 추정 후 증명

결론을 추정하고 수학적 귀납법을 이용하여 증명하는 방법

$T(n) \le 2T(n/2) + n$

추정 : $T(n)=O(nlogn)$, 즉 충분히 큰 $n$에 대하여 $T(n) \le cnlogn$인 양의 상수 $c$가 존재한다.

induction base : $T(n) \le c \cdot 2log2$를 만족하는 $c$가 존재한다.

induction hypothesis와 전개 :

$n/2$에 대해 $T(n/2) \le c \cdot (n/2) \cdot log(n/2)$을 만족한다 가정하면,

$$\begin{align}T(n) &\leq 2T(n/2) + n \\ &\leq 2c(n/2)log(n/2) + n\\ &= 2c(n/2)log(n/2)+n\\ &= cnlogn - cnlog2 + n\\ &=cnlogn +(-clog2 +1)n\\ &\leq cnlogn\end{align}$$

이를 만족하는 상수 $c$가 존재한다. 이 상수 $c$와 $T(2)$를 위해 잡은 $c$ 중 큰 것을 잡으면 된다.

따라서 $T(n)=O(nlogn)$이다.

 

3. 마스터 정리

특정한 모양을 가진 점화식을 가지는 알고리즘의 시간복잡도를 바로 계산해낼수 있는 방법

$T(n)=aT(n/b)+f(n)$에서,

$n^{log_b a}=h(n)$이라 하자.

1. 어떤 양의 상수 $\epsilon$에 대하여 $\frac{f(n)}{h(n)} = O(1/n^{\epsilon})$이면, $T(n)=\Theta(h(n))$이다.

2. 어떤 양의 상수 $\epsilon$에 대하여 $\frac{f(n)}{h(n)} = \Omega(n^{\epsilon})$이고, 어떤 상수 $c(<1)$와 충분히 큰 모든 $n$에 대해 $af(n/b) \le cf(n)$이면 $T(n)=\Theta(f(n))$이다.

3. $\frac{f(n)}{h(n)}=\Theta(1)$이면 $T(n)=\Theta(h(n)logn)$이다.

 

마스터 정리의 informal 의미

1. h(n)이 더 무거우면 h(n)이 수행시간을 결정한다.

2. f(n)이 더 무거우면 f(n)이 수행시간을 결정한다.

3. h(n)과 f(n)이 같은 무게이면 h(n)에 $logn$을 곱한 것이 수행시간이 된다.

'쉽게 배우는 알고리즘' 카테고리의 다른 글

04 정렬 (2)  (0) 2018.10.21
04 정렬 (1)  (0) 2018.10.21
02 알고리즘 설계와 분석의 기초  (2) 2018.10.19
01 알고리즘이란  (5) 2018.10.18
[쉽게 배우는 알고리즘] 책소개  (0) 2018.10.18

+ Recent posts