Производящая функция
англ. Generating function
Степенной ряд $G(s) = \sum a_k s^k$, упаковывающий последовательность в коэффициенты: свёртки превращаются в умножение рядов, рекуррентности — в алгебраические уравнения, и ответ вынимается как коэффициент.
Производящая функция последовательности — степенной ряд , в котором последовательность спрятана в коэффициенты. Это кодировка, а не функция для построения графика: переменная держит место, сами значения часто не нужны. Достоинство приёма в том, что операции над последовательностями становятся операциями над рядами: сдвиг — умножение на , свёртка — произведение, рекуррентность — алгебраическое уравнение. В комбинаторике так считают: — число объектов размера , и разбор объекта на части превращается в умножение рядов.
Главная операция — произведение по Коши. Если кодирует выбор первой части объекта, а — второй, то коэффициент при в произведении равен : перебраны все способы разделить размер между частями. Именно свёртка — точный образ комбинаторного правила «сначала то, потом это». Вопрос сходимости на первом этапе можно честно игнорировать: формальные степенные ряды складываются и умножаются по школьным правилам, пока мы не захотели подставлять числа и считать пределы.
Классический пример — числа Каталана : количество правильных скобочных последовательностей из пар. Они удовлетворяют рекуррентности — объект распадается на две меньшие скобочные структуры. В языке производящих функций это уравнение , то есть . Решаем квадратное уравнение и берём ветвь с минусом — только она конечна при : . Биномиальное разложение даёт , делим на : — коэффициенты совпали с Каталанами, а попутно вынимается явная формула . Для Фибоначчи та же техника проще: рекуррентность даёт .
Техника в теме — урок рекуррентные соотношения; аналитическая сторона степенных рядов — урок степенные ряды. Словарь: числа Фибоначчи — модельный пример, ряд — базовое понятие, математическая индукция — способ проверить вынутую формулу. Потренировать счёт вариантов — тренажёр по комбинаторике; формулы — в шпаргалке.
Частые вопросы
Нужна ли сходимость ряда?
Для комбинаторных применений — нет: работают формальные степенные ряды, где лишь помечает позицию коэффициента, а сложение и умножение чисто алгебраические. Сходимость становится важной, когда хочется подставлять числа: например, ряд Каталана сходится при , и в граничной точке живут оценки роста коэффициентов.
Что метод даёт по сравнению с голой рекуррентностью?
Рекуррентность отвечает на вопрос «как получить следующий член», производящая функция — «что это за объект целиком». Из неё выходят замкнутая формула (как ), асимптотика по поведению около особых точек и связи между разными последовательностями через операции над рядами.