Как превратить правило построения объектов в формулу для их числа? Если размеры складываются, подсчёт составных объектов приводит к свёртке последовательностей. Производящая функция выбрана именно так, чтобы эта свёртка стала обычным умножением. Благодаря этому рекурсии превращаются в алгебраические уравнения, из решений которых снова можно извлечь исходные коэффициенты.
Слои градуированного множества
Пусть
На примере перестановок градуировку можно увидеть как отображение от
объектов к их степеням. Перестановки одного размера переходят в одно и
то же число и тем самым образуют слой
Простейшие примеры одной и той же конструкции:
| Объекты | Градуированное множество |
Степень | Слой |
Число |
|---|---|---|---|---|
| Двоичные слова | ||||
| Перестановки | ||||
| Мономы от |
Все мономы от |
Полная степень | Мономы полной степени |
|
| Упорядоченные суммы | Последовательности с суммой |
Индекс здесь несёт математическую информацию: он задаёт степень. Поэтому
последовательность хранит не только значения
Сложение степеней порождает рекурсию
Таблица выше иллюстрировала только наличие градуировки. Теперь наложим дополнительное условие, которому не обязано удовлетворять произвольное градуированное множество: объект должен допускать каноническое разложение по последней присоединённой части.
Чтобы получить рекурсию, нужно однозначно обратить последний шаг этой
операции. Предположим, что каждый объект положительной степени допускает
представление
Снабдим множество допустимых частей
Потребуем, чтобы это представление
Для упорядоченных разложений числа последнее слагаемое канонично, поэтому
достаточно одного индекса
Теперь требуется работать со всей последовательностью
Сохранение координат
Представление должно быть инъективным и коэффициентно-линейным. Индексу
Сложение индексов определяет базис
Рекурсия из предыдущего раздела имеет вид
Свёртка последовательностей
Свёрткой последовательностей
Следовательно, исходная рекурсия записывается как
Пара имеет степень
Односторонние последовательности полагаются равными нулю при отрицательных
индексах. Зафиксируем
Область перекрытия содержит ровно пары
Свёртка переходит в умножение
Представление должно переводить свёртку в умножение.
Пусть
Для образов
Здесь
Коэффициент произведения считает разложения
Возьмём
При изменении итоговой степени сцена перечисляет все допустимые разложения
При умножении рядов равенство
Тем самым
Теперь оба исходных требования выполнены: коэффициенты восстанавливаются
по правилу
Обыкновенная производящая функция
Обыкновенной производящей функцией (ordinary generating function, OGF)
последовательности
Если коэффициенты лежат в кольце
Оператор
Рекурсия как свёртка с ядром
Вернёмся к конструкции из раздела 2. Пусть
Удаление последнего слагаемого даёт рекурсию
Последовательность
Коэффициент перед
Поэтому для
В общем случае рекурсии
Остаётся включить начальные условия. При
Поэтому единственная поправка требуется при нулевом индексе, и вся последовательность удовлетворяет уравнению
От свёртки к производящей функции
Производящая функция ядра равна
Соберём слагаемые с
Переход к последней строке корректен в кольце формальных рядов: ряд
С этого момента исходная задача принимает точную алгебраическую форму:
нужно разложить полученную рациональную функцию в формальный степенной ряд
при
Коэффициенты этого разложения и есть искомая последовательность.
Рациональную функцию можно разложить двумя способами: последовательно
находить коэффициенты из равенства
Сначала применим оба способа к примеру Фибоначчи, а затем сформулируем их
для произвольных многочленов
Читаем коэффициенты последовательно
Сдвиг ряда на
В данном случае достаточно выписать три сдвинутых ряда:
Теперь вычтем вторую и третью строки из первой и соберём одинаковые степени
Правая часть исходного равенства — постоянный ряд
Таким образом, сравнение коэффициентов возвращает начальные условия и исходную рекурсию.
Получаем явную формулу
Чтобы выразить коэффициент непосредственно через
В кольце формальных рядов геометрическое разложение имеет вид
Коэффициент при
При нумерации
Способ 1. Последовательное извлечение коэффициентов
В примере Фибоначчи рациональная функция допускала два чтения: сравнение коэффициентов восстанавливало рекурсию, а разложение знаменателя давало явную формулу. Теперь отделим эти два метода от конкретного примера и рассмотрим произвольную рациональную производящую функцию.
Пусть
Запишем
Здесь
От рациональной функции к явной формуле
Исходная задача — разложить рациональную функцию
Предыдущий способ последовательно находит коэффициенты этого ряда из
равенства
Идея: перейти к функциям с известными рядами
Извлечение коэффициента линейно. Поэтому вместо прямого разложения одной сложной дроби достаточно представить её как конечную линейную комбинацию функций, степенные ряды которых уже известны. Для этого введём семейство
Семейство функций Gλ,r
При
Искомое представление имеет форму
Здесь
1. Отделяем уже готовую часть
Многочлен
Если
2. Знаменатель определяет базис
Поскольку
Именно на втором шаге возникает деление на корень: после вынесения
постоянного множителя
Введём обратные к корням величины
Теперь знаменатель непосредственно указывает, какие функции
Теорема о разложении на простейшие дроби утверждает, что этих функций достаточно: правильная дробь единственным образом представляется в виде
Таким образом, семейство
3. Находим координаты \data{notation-key=partial-fraction-coordinate}{\rho_{j,r}}
Числа
Каждое выражение
Пример: два простых множителя
Пусть
Определитель этой системы равен
Если множитель
Для простого множителя соответствующую координату можно получить без
решения всей системы: умножить дробь на
При кратности
Итак, координаты
4. Извлекаем коэффициенты базисных функций
Для
Координаты
Равенство
Виджет показывает, как кратность
Теперь подставим найденный коэффициент в разложение
При фиксированном
Поскольку
Структура коэффициентов рациональной функции
Для всех достаточно больших
Простой множитель