마스터 정리는 재귀를 활용한 점화식을 푸는 방법을 알려준다. 다른 것과 다르게 재귀를 사용한 알고리즘은 시간 복잡도를 구하는 것이 어려운데 마스터 정리를 사용하면 아주 간단하게 해결할 수 있다.
재귀 알고리즘의 점화식은 다음과 같은 형태를 띄고 있다.
$$T(n) = aT(n / b) + f(n) (단, a ≥ 1, a > 1, f(n)은 점근적으로 양)$$
f(n)이 점근적으로 양이라는 말은 충분히 큰 n에 대하여 f(n)이 양이라는 뜻이다.
점화식에서 a, b, f(n)을 가지고 시간 복잡도를 계산한다. 다음과 같이 세 가지 경우가 있다.
1. $f(n) < n^{log_ba}$
2. $f(n) > n^{log_ba}$
3. $f(n) = n^{log_ba}$
1의 시간 복잡도 T(n) = θ($n^{log_ba}$)
2의 시간 복잡도 T(n) = θ($f(n)$)
3의 시간 복잡도 T(n) = θ($f(n)×lgn$)
예 1
$$T(n) = 9T(n / 3) + n$$
a = 9, b = 3, f(n) = n
$n<n^{log_39}=n^2$이므로 1번 경우에 해당한다. 그러므로 시간 복잡도 T(n) = θ($n^2$)
예 2
$$T(n) = T(2n / 3) + 1$$
a = 1, b = 3 / 2, f(n) = 1
$n^{log_{3 \over 2}1}=n^0=1$이므로 3번 경우에 해당한다. 그러므로 시간 복잡도 T(n) = θ(logn)
'자료구조 & 알고리즘' 카테고리의 다른 글
[std]set, map (0) | 2019.05.10 |
---|---|
에라토스테네스의 체 (0) | 2019.05.10 |
이진 검색 트리(Binary Search Tree) (0) | 2019.05.06 |
해시 테이블(Hash Table) (0) | 2019.05.05 |
힙정렬(Heap Sort) (0) | 2019.05.01 |