마스터 정리 (Master Theorem)
From: CLRS - 점화식을 풀기 위한 마스터 방법
마스터 방법은 다음과 같은 형식의 점화식을 푸는 기본 지침을 제공한다.
T(n)=aT(n/b)+f(n)T(n)=aT(n/b)+f(n)(4.20)여기서 a(≥1)a(≥1)와 b(>1)b(>1)는 상수고 f(n)f(n)은 점근적으로 양인 함수다. 마스터 방법을 사용하기 위해서는 세 가지 경우를 암기해야 하지만, 많은 경우에 연필과 종이 없이 점화식의 해를 매우 쉽게 구할 수 있다.
점화식 (4.20)(4.20)은 aa와 bb가 양의 상수일 때 문제 크기 nn을 크기가 각각 n/bn/b인 aa개의 하위 문제로 나누는 알고리즘의 수행 시간을 나타낸다. aa개의 하위 문제는 각각 T(n/b)T(n/b)시간에 재귀적으로 풀린다. 문제를 나누고 하위 문제들의 결과를 합치는 데 드는 비용은 함수 f(n)f(n)으로 나타낸다. 예를 들어, 스트라센 알고리즘에서 도출할 수 있는 점화식은 a=2a=2, b=2b=2며 f(n)=Θ(n2)f(n)=Θ(n2)이다.
기술적인 정확성의 측면에서 보면 이 점화식은 실제로 잘 정의된 것은 아닌데, 이는 n/bn/b이 정수가 아닐 수도 있기 때문이다. 그러나 각 a에 대한 T(n/b)T(n/b)항을 T(⌊n/b⌋)T(⌊n/b⌋)또는 T(⌈n/b⌉)T(⌈n/b⌉)으로 바꾸어도 점화식의 점근적 특성에는 영향을 주지 않는다(다음 절에서 이 주장을 증명할 것이다). 따라서 보통은 이런 형식처럼 분할정복 점화식을 쓸 때 내림과 홀림 함수를 생략하는 것이 편리하다는 것을 알 수 있다. 1
마스터 정리
a(≥1)a(≥1)와 b(≥1)b(≥1)가 상수고 f(n)f(n)이 함수라 하고, 음이 아닌 정수에 대해 T(n)T(n)이 다음 점화식에 의해 정의된다고 하자.
T(n)=aT(n/b)+f(n)T(n)=aT(n/b)+f(n)여기서 n/bn/b은 ⌊n/b⌋⌊n/b⌋ 또는 ⌈n/b⌉⌈n/b⌉을 뜻하는 것으로 이해한다. 그러면 T(n)T(n)의 점근적 한계는 다음과 같다.
- 상수 ϵ(>0)ϵ(>0)에 대해 f(n)=O(nlogba−ϵ)f(n)=O(nlogba−ϵ)이면, T(n)=Θ(nlogba)T(n)=Θ(nlogba)이다.
- f(n)=Θ(nlogba)f(n)=Θ(nlogba)이면, T(n)=Θ(nlogbalgn)T(n)=Θ(nlogbalgn) 이다.
- 상수 ϵ(>0)ϵ(>0)에 대해 f(n)=Ω(nlogba+ϵ)f(n)=Ω(nlogba+ϵ)이고 상수 c(<1)c(<1)와 충분히 큰 모든 nn에 대해 af(n/b)≤cf(n)af(n/b)≤cf(n)이면, T(n)=Θ(f(n))T(n)=Θ(f(n))이다. 1
From: 다양한 예제로 학습하는 데이터 구조와 알고리즘 for Java
분할 정복을 위한 마스터 정리
분할 정복 알고리즘의 수행 시간을 계산하기 위해 다음의 정리(Theorem)가 사용될 수 있다. 주어진 프로그램(알고리즘)에 대해 먼저 문제의 재귀적 관계를 찾는다. 재귀 관계식이 다음의 형태를 지닌다면 문제를 다 풀지 않고도 바로 해답을 구할 수 있다.
재귀 관계식이 T(n)=aT(nb)+Θ(nklogpn)T(n)=aT(nb)+Θ(nklogpn)의 형태이며, a≥1,b>1,k≥0a≥1,b>1,k≥0 이며 pp가 실수라면 다음과 같다.
- 마스터 정리 1. a>bka>bk 이면 T(n)=Θ(nlogab)T(n)=Θ(nlogab)
- 마스터 정리 2. a=bka=bk일 경우
- a. p>−1p>−1 이면 T(n)=Θ(nlogablogp+1n)T(n)=Θ(nlogablogp+1n)
- b. p=−1p=−1 이면 T(n)=Θ(nlogabloglogn)T(n)=Θ(nlogabloglogn)
- c. p<−1p<−1 이면 T(n)=Θ(nlogab)
- 마스터 정리 3. a<bk일 경우
차감 정복 점화식을 위한 마스터 정리
양수 n에 대해 정의된 함수 T(n)이 어떤 상수 c,a>0,b>0,k≥0과 함수 f(n)에서 다음과 같은 속성을 갖는다고 하자.
T(n)={c if n≤1aT(n−b)+f(n) if n>1f(n)이 O(nk)안에 있다면
T(n)={O(nk) if a<1O(nk+1) if a=1O(nkanb) if a>1 3
다양한 예제로 학습하는 데이터 구조와 알고리즘 for Java. 1.24장. ↩
변형
0<α<1이며 β>0인 상수 α,β에 대해 T(n)=T(αn)+T((1−α)n)+βn의 해답은 O(nlogn)이다. 4
다양한 예제로 학습하는 데이터 구조와 알고리즘 for Java. 1.25장. ↩
함께 읽기
참고문헌
- Master theorem (wikipedia)
- Introduction to Algorithms 3판 / 토머스 코멘, 찰스 레이서손, 로날드 리베스트, 클리포드 스타인 공저 / 문병로, 심규석, 이충세 공역 / 한빛아카데미 / 2014년 06월 30일
- 다양한 예제로 학습하는 데이터 구조와 알고리즘 for Java / 나라심하 카루만치 저 / 전계도, 전형일 공역 / 인사이트(insight) / 2014년 02월 22일