문제
마스터 정리(Master Theorem)는 재귀식으로 표현된 알고리즘의 시간복잡도를 간단하게 계산하는 방법이다.
어떤 알고리즘의 시간 복잡도 함수
T(n) = a \times T(\dfrac nb) + c \times n^k a, b, c, k 는 상수이며,0 <a ,0 <c ,2{\le}b, 0{\le}k )
이 함수 T(n)의 시간 복잡도 클래스는 다음과 같다.
T(n) ∈ θ(n^k) , ifa < b^k T(n) ∈ θ(n^k log_2n) , ifa = b^k T(n) ∈ θ(n^{log_b a}) , ifa > b^k
예를 들어
만약
이는 정리하면
시간복잡도
입력
한 줄에
이 때, 모든 연산자는 공백으로 띄워져 있으며 각 상수
출력
시간복잡도를 big O notation 방식으로 출력된다.
모든 데이터는 정답이 있음이 보장된다.
예제 #1
8 * T(n/4) + 5 * n^2
O(N^2)
예제 #2
8 * T(n/2) + 5 * n^3
O(N^3 * log2(N))
예제 #3
8 * T(n/2) + 5 * n^2
O(N^3)
O(N^log2(8))의 경우 O(N^3)로 수정한다.
예제 #4
2 * T(n/2) + 1 * n^1
O(N^1 * log2(N))
합병정렬(merge sort)의 시간복잡도이다.