어떤 수를 직접 세기 어려울 때, 크기 n인 경우를 더 작은 경우로 나타내는 식(점화식)을 세우면 쉬워집니다. 이 강에서는 점화식을 세우는 법과, 계수가 상수인 선형 점화식을 닫힌 꼴로 푸는 법을 다룹니다. 풀이 방법은 선형대수의 고윳값과 같은 구조입니다.
9.1 점화식으로 세기
정의 9.1 (점화식). 수열 an의 항을 앞의 항들로 나타낸 식을 점화식(recurrence relation)이라 하고, 수열을 정하는 데 필요한 처음 몇 항을 초기조건(initial condition)이라 합니다.
예제 9.2 (하노이의 탑). 원판 n개를 옮기는 최소 횟수 Hn은 “위 n−1개를 옆으로, 가장 큰 것을 목표로, n−1개를 그 위로” 옮기므로 Hn=2Hn−1+1, H1=1입니다. 풀면 Hn=2n−1입니다.
예제 9.3 (연속한 1이 없는 비트열). 길이 n인 비트열 가운데 1이 연달아 나오지 않는 것의 수를 an이라 합시다. 마지막 비트가 0이면 앞은 길이 n−1인 아무 그런 비트열(an−1가지), 1이면 그 앞은 반드시 0이고 그 앞은 길이 n−2인 그런 비트열(an−2가지)입니다. 그러므로 an=an−1+an−2, a1=2, a2=3입니다. 피보나치 수열을 두 칸 민 것(an=Fn+2)입니다.
9.2 선형 동차 점화식
정의 9.4. 상수 c1,…,ck(ck=0)에 대해 an=c1an−1+⋯+ckan−k 꼴을 k계 선형 동차 점화식이라 합니다.
an=rn 꼴의 해를 찾아봅니다. 넣으면 rn=c1rn−1+⋯+ckrn−k이고, rn−k로 나누면
rk−c1rk−1−⋯−ck=0
이 됩니다. 이것을 특성방정식(characteristic equation), 그 근을 특성근(characteristic root)이라 합니다.
정리 9.5 (서로 다른 특성근). 2계 점화식 an=c1an−1+c2an−2의 특성방정식 r2−c1r−c2=0이 서로 다른 두 근 r1, r2를 가지면, 모든 해는
an=αr1n+βr2n
꼴이고 α, β는 초기조건으로 정해집니다.
증명.r1n, r2n이 각각 해이고, 점화식이 선형이므로 그 일차결합도 해입니다. 초기조건 a0=α+β, a1=αr1+βr2는 r1=r2이면 α, β에 대해 유일하게 풀립니다. 2계 점화식의 해는 a0, a1로 완전히 정해지므로(귀납법) 모든 해가 이 꼴입니다. □
근은 3과 2입니다. α+β=1, 3α+2β=4에서 α=2, β=−1. 그러므로 an=2⋅3n−2n이고 a5=486−32=454입니다.
9.4 [계산]
an=4an−1−4an−2, a0=1, a1=4일 때 a6은?
정답
448
풀이
예제 9.8의 an=(n+1)2n으로 a6=7⋅64=448입니다.
9.5 [계산]
병합 정렬의 점화식 T(n)=2T(n/2)+n, T(1)=0에서 T(1024)는?
정답
10240
풀이
T(n)=nlog2n이므로 1024⋅10=10240입니다.
9.6 [증명]
계단을 한 번에 1칸 또는 2칸씩 오를 때, n칸 계단을 오르는 방법의 수 sn이 sn=sn−1+sn−2를 만족함을 보이고 s1, s2를 구합니다.
풀이
마지막 걸음이 1칸이면 그 전에 n−1칸을 오르는 방법(sn−1가지), 2칸이면 n−2칸을 오르는 방법(sn−2가지)이 있고, 두 경우는 겹치지 않습니다. 합의 법칙으로 sn=sn−1+sn−2입니다. s1=1(1칸), s2=2(1+1, 2)이므로 sn=Fn+1입니다.