생성 함수란
수열 \((a_0, a_1, a_2, \dots)\)를 형식적 멱급수의 계수로 인코딩한 것이 생성 함수다.
$$ A(x) = \sum_{n \ge 0} a_n x^n $$
여기서 \(x\)는 대입하는 변수가 아니라 "계수를 줄 세우는 표지(bookkeeping)"다. 수열 연산이 다항식 연산으로 번역되는 것이 위력이다.
기본 사전
| 수열 연산 | 생성 함수 연산 |
|---|---|
| \(a_n + b_n\) | \(A(x) + B(x)\) |
| 합성곱 \(\sum_k a_k b_{n-k}\) | \(A(x)\,B(x)\) |
| 이동 \(a_{n-1}\) | \(x\,A(x)\) |
| \(n\ a_n\) | \(x\ A'(x)\) |
| 부분합 \(\sum_{k\le n} a_k\) | \(\dfrac{A(x)}{1-x}\) |
가장 중요한 닫힌 형:
$$ \sum_{n\ge 0} x^n = \frac{1}{1-x}, \qquad \sum_{n\ge 0}\binom{n+k}{k}x^n = \frac{1}{(1-x)^{k+1}} $$
점화식 풀기
피보나치 \(f_n = f_{n-1} + f_{n-2}\), \(f_0 = 0, f_1 = 1\). 생성 함수를 \(F(x)\)라 하면
$$ F(x) = xF(x) + x^2 F(x) + x \;\Rightarrow\; F(x) = \frac{x}{1 - x - x^2}. $$
부분분수로 분해하면 비네 공식 \(f_n = \frac{1}{\sqrt5}(\varphi^n - \psi^n)\)이 곧바로 나온다. 점화식 → 유리함수 → 닫힌 형의 전형적 흐름이다.
지수 생성 함수(EGF)
순서가 있는 구조(배열, 라벨 그래프)에는 지수 생성 함수가 자연스럽다.
$$ \hat{A}(x) = \sum_{n\ge 0} a_n \frac{x^n}{n!} $$
EGF의 곱은 "라벨을 두 그룹으로 나누는" 합성곱:
$$ [x^n]\,\hat A \hat B = \sum_k \binom{n}{k} a_k b_{n-k}. $$
예: 순열의 EGF는 \(\sum n!\,x^n/n! = 1/(1-x)\), 교란순열(derangement)의 EGF는 \(e^{-x}/(1-x)\).
조합 항등식의 기계화
$$ \sum_{k} \binom{n}{k}\binom{m}{p-k} = \binom{n+m}{p} $$
는 \((1+x)^n (1+x)^m = (1+x)^{n+m}\)의 \(x^p\) 계수 비교일 뿐이다. 복잡한 합을 "다항식 곱의 한 계수"로 보는 훈련이 핵심이다.
정리
- 수열 ↔ 멱급수. 연산이 대수 연산으로 번역된다.
- 선형 점화식 → 유리 생성 함수 → 닫힌 형/행렬거듭제곱.
- OGF는 비라벨, EGF는 라벨 구조.
다음 강의에서 실제 카운팅 문제에 생성 함수를 적용한다.