1. 선형 동차 점화식이란
What’s the Linear Homogeneous recurrence
수열의 점화식이 아래와 같이 표현될 때 g(n)=0이면 선형 동차점화식, g(n)≠0이면 선형 비동차점화식이라고 한다. an+k=g(n)+∑ki=0cian+i 이때 k를 점화식의 차수(order)라고 한다.
2. 간단한 경우의 계산
Calculation for a simple case
간단하게 an+2=αan+1+βan인 경우를 생각해보자.
an+3=an+2=α2an+1+(αβ+β)이라고 표현할 수 있고, 다시 이때의 계수를 γ와 δ로 정의하면 an+3=γan+1+δan으로 표현할 수 있다.
즉, 계수가 달라졌을 뿐 수학적으로 근본적인 상황은 계산하고자 하는 index를 증가시켜도 달라지지 않음을 알 수 있다.
이때 차수가 k인 점화식은 k개의 초기항에 동일한 연산을 반복해 적용하면서 이후 항들을 계산할 수 있다는 사실에 집중해보자.
일정한 k개의 값은 1×k의 열벡터로, 동일한 연산을 적용하는 것은 행렬로 대응시킬 수 있다는 발상을 할 수 있다.
3. 행렬을 활용한 표현
Expression of the recurrence using matrix
다음과 같은 열벡터를 떠올려보자.
[akak−1⋮a1]우리의 목표는 다음과 같은 등식을 만족하는 k×k 행렬 T를 찾는 것이다.
T[akak−1⋮a1]=[ak+1ak⋮a2]약간의 관찰을 하자면, 1~k−1번 행의 값이 2~k번 행으로 이동했고, 1번 행에는 점화식에 따라 계산할 ak+1이 들어간다.
따라서 다음과 같은 행렬은 위 등식을 만족한다.
T=[ckck−1⋯c2c110⋯0001⋯00⋮⋮⋱⋮⋮00⋯10]해의 유일성은 증명되지 않았으나, 특수한 해는 구할 수 있었다. 이러한 T는 다음 등식을 만족한다는 사실 역시 관찰할 수 있다.
T[an+k−1an+k−2⋮an]=[an+kan+k−1⋮an+1]따라서 귀납적으로 다음의 사실도 증명할 수 있다.
Tn[akak−1⋮a1]=[an+kan+k−1⋮an+1]4. 행렬 표현의 장점
Adventage of Matrix Expression
이전에는 점화식을 통해 모든 항을 계산해나가며 an을 계산하려면 총 O(nk)번의 덧셈이 요구되었다.
하지만 행렬 표현의 경우 행렬 곱셈은 O(k3)번의 덧셈이 필요하며 n의 이진수 전개를 통해 행렬 곱셈을 총 O(lgN)번 진행해야 함을 익히 알고 있으므로, 총 O(k3lgN)번의 덧셈으로 aN을 계산할 수 있다는 사실을 알 수 있다.
대부분의 실용적인 수열 활용 예시의 경우 k가 크지 않기 때문에 큰 N에 대하여 aN을 빠르게 계산할 수 있다는 사실을 알 수 있었다.
또한 k가 커 계산 시간이 커지는 경우 스트라센 알고리즘 등을 활용하여 시간복잡도를 계산할 수 있으므로, 많은 경우에 유의미하게 수열 계산의 시간복잡도를 줄일 수 있다.