점화식과 알고리즘 복잡도 분석
by Ungbae
점화식(Recurrence Relation = Recurrence Relation)
- Recurrence : 우리가 아는 자료구조의 리커전의 그 단어가 맞다. 재귀. 재귀적 함수의 복잡도를 구하는 데에 유용하다.
- 어떤 함수를 자신보다 더 작은 변수에 대한 함수와의 관계로 표현한 것이다.
- n번째 항의 값을 n보다 작은 항의 값으로 표현
- 등차수열, 팩토리얼, 피보나치 수열, Merge Sort 등이 있다.
재귀적 용법
=> 큰 문제를 푸는데 작은 문제로도 바꿔서 표현이 가능할 때, 또는 작은 문제들을 쭉 풀어왔을 때, 똑같은 포맷으로 풀어왔지만 들어가는 argument, 즉 data 개수 등을 변경해서 모아봤을 때 문제가 풀릴 때 이를 재귀적 용법이라 할 수 있다.
왜 알고리즘 분석에서 점화식이 중요한가?
- 컴퓨터 자료구조의 대부분이 재귀적 구조
- 재귀적 자료구조 -> 재귀적 알고리즘 -> 점화식으로 시간 복잡도를 표현하게 된다.
- 큰 문제를 작은 동일 문제들로 분해하는 분할정복 패러다임
Merge Sort의 점화식 분석
- 배열을 반으로 나눈다.(분할)
- 각 반쪽을 재귀적으로 정렬(정복)
- 정렬된 두 부분을 병합(결합)
시간복잡도 점화식
T(n) = 2T(n/2) + O(n)
- 2T(n/2) : 두 개의 반쪽을 각각 정렬하는 시간
- O(n) : 병합하는데 드는 시간(후처리 시간, 오버 헤드)
반복대치(Iteration Method)
점화식을 반복적으로 전개하여 패턴을 발견한다.
추정후 증명(Guess & Verification)
식의 모양을 보고 점근적 복잡도를 추정한 후 귀납적으로 증명한다.
- (경험이나 패턴 관찰을 통해) 결과를 추정
- 수학적 귀납법(Strong Induction)으로 증명
T(n) <= 2T(n/2) + n은 Merge Sort의 점화식이다.
우리가 복잡도를 계산한다고 생각하면 골머리 아파하는 사람들이 있다. 너무 막막하게 생각하지 말자.
앞으로 복잡도를 계산하다보면 생각보다 몇 종류 안된다.
logn / n / nlogn / n^2
대체적으로 이 네 종류로 귀결될 것이기에, 하다보면 대충 어느 정도의 복잡도인지 감이 오게될 것. 계산에 너무 목맬 필요 없다.
마스터 정리(Master Theorem)
직관적 이해
- h(n)이 더 무거우면 h(n)이 지배
- f(n)이 더 무거우면 f(n)이 지배
- 같은 무게면 h(n) * logn
실무적 관점
점화식 풀이 방법 선택의 기준
- 반복 대치 : 단순한 점화식, 직관적 이해가 필요할 때
- 추정 후 증명 : 결과를 예측할 수 있지만 정확한 증명 필요할 때
- 마스터 정리 : T(n) = aT(n/b) + f(n) 형태일 때 즉시 적용
'CS & AI > Algorithm' 카테고리의 다른 글
정렬 알고리즘(Sorting) - O(n^2) 기본 정렬들 (0) | 2025.09.23 |
---|---|
2025.09.18. 실습 (0) | 2025.09.18 |
알고리즘 설계와 분석 기초 (0) | 2025.09.13 |
What is Algorithm? (0) | 2025.09.12 |
2025.09.11. 실습 / Sort Algorithm (0) | 2025.09.12 |
블로그의 정보
그럼에도 불구하고
Ungbae