Расчет биномиальных коэффициентов с использованием Фурье-преобразований
При решении задач комбинаторики часто возникает необходимость в расчете биномиальных коэффициентов. Бином Ньютона, т.е. разложение также использует биномиальные коэффициенты. Для их расчета можно использовать формулу, выражающую биномиальный коэффициент через факториалы:
или использовать рекуррентную формулу:
Из бинома Ньютона и рекуррентной формулы ясно, что биномиальные коэффициенты — целые числа.
Одним из методов, позволяющих значительно сократить количество вычислений, является применение Фурье преобразований и дискретных Фурье преобразований.
Наличие большого числа библиотек, реализующих Фурье преобразований (во всевозможных вариантах быстрых версий), делает реализацию алгоритмов не очень сложной задачей для программирования.
Реализованные алгоритмы являются частью библиотеки с открытым исходным кодом FFTTools. Интернет-адрес: github.com/dprotopopov/FFTTools
Преобразование Фурье функции f вещественной переменной является интегральным и задаётся следующей формулой:
Разные источники могут давать определения, отличающиеся от приведённого выше выбором коэффициента перед интегралом, а также знака «−» в показателе экспоненты. Но все свойства будут те же, хотя вид некоторых формул может измениться.
Кроме того, существуют разнообразные обобщения данного понятия.
Дискретное преобразование Фурье
Дискретное преобразование Фурье (в англоязычной литературе DFT, Discrete Fourier Transform) — это одно из преобразований Фурье, широко применяемых в алгоритмах цифровой обработки сигналов (его модификации применяются в сжатии звука в MP3, сжатии изображений в JPEG и др.), а также в других областях, связанных с анализом частот в дискретном (к примеру, оцифрованном аналоговом) сигнале. Дискретное преобразование Фурье требует в качестве входа дискретную функцию. Такие функции часто создаются путём дискретизации (выборки значений из непрерывных функций). Дискретные преобразования Фурье помогают решать дифференциальные уравнения в частных производных и выполнять такие операции, как свёртки. Дискретные преобразования Фурье также активно используются в статистике, при анализе временных рядов. Существуют многомерные дискретные преобразования Фурье.
Формулы дискретных преобразований
Дискретное преобразование Фурье является линейным преобразованием, которое переводит вектор временных отсчётов в вектор спектральных отсчётов той же длины. Таким образом преобразование может быть реализовано как умножение симметричной квадратной матрицы на вектор:
Свёртка двух функций
Фурье-преобразования для вычисления свёртки
Одним из замечательных свойств преобразований Фурье является возможность быстрого вычисления корреляции двух функций определённых, либо на действительном аргументе (при использовании классической формулы), либо на конечном кольце (при использовании дискретных преобразований).
И хотя подобные свойства присущи многим линейным преобразованиям, для практического применения, для вычисления операции свёртки, согласно данному нами определению, используется формула
- FFT – операция прямого преобразования Фурье
- BFT – операция обратного преобразования Фурье
Биномиальные коэффициенты
Рассмотрим полином F(x)=1+x и его свёртку с самим собой n раз
Fx..xF = SUM С( i, n-1 )*x^i = BFT ( FFT(F)*. *FFT(F) ) = BFT ( FFT(F)^(n-1) )
То есть биномиальные коэффициенты С( i, n-1 ) могут быть получены из значений коэффициентов полинома (1+x)^(n-1)
Программируем:
Проверяем:
Зачем?
При вычислении с помощью треугольника Паскаля трудоёмкость имеет оценку O(n^2).
При вычислении с помощью быстрых Фурье-преобразований трудоёмкость имеет оценку O(n*log n).
Бином Ньютона и треугольник Паскаля
Сегодня мы детально разберём Бином Ньютона. Это формула, по которой можно раскрыть скобки $<<\left( a+b \right)>^
где $C_
Вот и всё. На этом можно было бы закончить, но есть одно но: большинство начинающих учеников не понимают эту формулу, не умеют пользоваться её, а уж чтобы доказать её — об этом даже речи не идёт.
Сегодня мы всё это исправим. Вы узнаете буквально всё, что нужно знать про Бином Ньютона:
- — в чём вообще проблема? — что значат все эти значки? — чрезвычайно полезный материал для всех, кто хочет понять математику. — минутка комбинаторики. — лайфхак для быстрых вычислений. — для тех, кто хочет познать Истину.:)
Материала много, но всё будет максимально понятно и — главное — чрезвычайно полезно. Погнали!
1. Постановка задачи
Итак, мы хотим быстро раскрывать скобки в конструкциях вида $<<\left( a+b \right)>^
Спасибо, кэп. Теперь вспомним формулы сокращённого умножения. Квадрат суммы:
Видим, что с ростом степени растёт и количество слагаемых-одночленов: их всегда на одно больше, чем степень. Но это не проблема. Проблема в другом: у этих одночленов появляются некие коэффициенты, принцип вычисления которых не ясен. Пока не ясен.
Именно для нахождения этих коэффициентов придумали бином Ньютона.
2. Бином Ньютона
В этой формуле прекрасно всё. Одних пугает знак суммы. Другие не понимают, что за $C_
Сегодня мы решим все эти проблемы. Начнём со знака суммы.
3. Знак суммы
Знак суммы — это краткая запись суммы нескольких однотипных слагаемых:
Формула $f\left( k \right)$ задаёт общий вид однотипных слагаемых, а нижний и верхний индексы $k=a$ и $k=b$ (сверху вместо $k=b$ обычно пишут просто $b$) определяют диапазон значений, которые «пробегает» $k$ и которые нужно подставить в $f\left( k \right)$. Например:
\[\sum\limits_
Более привычный формат:
То же самое с индексами:
Обратите внимание: если $k$ пробегает значения от $k=a$ до $k=b$, то всего таких слагаемых будет ровно $b-a+1$:
Кроме того, полезно потренироваться и с обратным переходом — от полной записи к краткой:
В приложении к уроку — куча задач для самостоятельной тренировки.
Но вернёмся к биному Ньютона. Распишем его без знака суммы:
4. Биноминальные коэффициенты
Определение. Число сочетаний из $n$ по $k$ — это число способов, которыми можно выбрать $k$ элементов среди $n$ элементов, если порядок выбора не имеет значения. Обозначается $C_
^ $ и считается по формуле \[C_
^ =\frac \]
Обратите внимание: в числителе и знаменателе стоят факториалы. Стандартное определение: $n!$ — это произведение всех чисел от единицы до $n$:
\[n!=1\cdot 2\cdot 3\cdot . \cdot n\]
У факториалов много интересных свойств. Чуть позже мы рассмотрим их и даже введём более корректное определение самого факториала. А пока просто потренируемся считать биноминальные коэффициенты.
Пример. На пруду плавают 5 уток. Сколькими способами можно выбрать 2 из них, чтобы покормить?
Очевидно, порядок кормления уток неважен. Покормить сначала утку №1, а затем №2 — это то же самое, что покормить сначала утку №2, затем №1. Результат один и тот же: накормлены лишь эти две утки, а остальные три — нет. Поэтому считаем $C_<5>^<2>$:
\[\begin
C_<5>^ <2>& =\frac<5!> <2!\cdot 3!>\\ & =\frac<5\cdot 4\cdot 3\cdot 2\cdot 1><2\cdot 1\cdot 3\cdot 2\cdot 1>= \\ & =10 \end \]
Вот и всё. Однако при больших $n$ и $k$ посчитать число сочетаний напрямую становится затруднительно. Тут на помощь приходит сокращение дробей.
Видим, что факториалы образуют «длинные хвосты» в числителе и знаменателе, которые легко сокращаются. Однако для корректной работы с биномом Ньютона нам потребуется расширить определение факториала.
4.1. Новое определение факториала
Стандартное определение мы уже привели выше:
\[n!=1\cdot 2\cdot 3\cdot . \cdot n,\quad n\in \mathbb
Но как посчитать, например, факториал нуля? И как сокращать «длинные хвосты», не расписывая факториалы? Здесь нам поможет более грамотное определение.
Определение. Пусть $n\in \mathbb
\bigcup \left\< 0 \right\>$ — целое неотрицательное число. Тогда факториал считается по формуле: \[n!=\left\ < \begin
& 1,\quad n=0 \\ & n\cdot \left( n-1 \right)!,\quad n \gt 0 \\ \end \right.\] В частности, $0!=1$ по определению.
А вот ещё парочка весёлых примеров:
5. Треугольник Паскаля
Посчитаем бином Ньютона для $n=0$, $n=1$, $n=2$, $n=3$:
\[\begin
Получили треугольник, который в народе называют «Треугольник Паскаля»: по бокам единицы, а внутри каждое число равно сумме двух ближайших, стоящих этажом выше:
И это не случайность. Перед нами важнейшее свойство биноминальных коэффициентов, которое мы оформим в виде теоремы и докажем.
Теорема. Биноминальные коэффициенты вычисляются по формуле
\[C_
^ +C_ ^ =C_ ^ \] Доказывается напролом.
Распишем доказательство детально:
Заметим, что по определению факториала
\[\begin
Поэтому знаменатели биноминальных коэффициентов можно переписать:
Приведём к общему знаменателю:
Теорема доказана. Теперь мы знаем, как формируется треугольник Паскаля. Осталось доказать сам Бином Ньютона.
6. Доказательство Бинома Ньютона
Итак, нужно доказать, что
где $C_
Будем доказывать по индукции.
6.1. База индукции
Рассмотрим $n=1$. Формула Бинома Ньютона для него:
Очевидно, для $n=1$ формула верна. Переходим к индуктивному предположению.
6.2. Индуктивное предположение
Пусть Бином Ньютона верен для некоторого $n=t$:
Используя этот факт, докажем верность и для $n=t+1$, т.е. выполним индуктивный переход.
6.3. Индуктивный переход
Докажем, что бином Ньютона верен для $n=t+1$:
Для этого сначала заметим, что
Однако согласно индуктивному предположению, $<<\left( a+b \right)>^
Запишем отдельно первое слагаемое первой суммы и учтём, что $C_
И последнее слагаемое последней второй суммы и учтём, что $C_
Сейчас будет самая нетривиальная операция. Меняем индекс суммирования в последней сумме: выполняем подстановку $k=m-1$. При этом меняются и пределы суммирования:
\[\left[ \begin
В итоге последняя сумма перепишется так:
Объединяем суммы вместе:
Заметим, что два знака суммы различаются лишь названием индекса и биноминальными коэффициентами. Всё остальное — диапазоны суммирования, степени буквы $a$ и буквы $b$ — всё идеально совпадает и никак не меняется, если написать вместо $k$ индекс $m$ или наоборот.
Такие суммы можно записать под единым знаком:
Выражение под знаком суммы легко раскладывается на множители:
Здесь в последнем шаге мы использовали свойство биноминальных коэффициентов, доказанное выше:
Или, что то же самое
Таким образом, всю сумму можно переписать более компактно, а затем внести под знак суммы первое и последнее слагаемое:
Сопоставляя исходное выражение и конечное, получим
Именно это и требовалось доказать. Следовательно, исходная формула Бинома Ньютона верна.
Бином Ньютона
С натуральным n формула Бинома Ньютона принимает вид a + b n = C n 0 · a n + C n 1 · a n — 1 · b + C n 2 · a n — 2 · b 2 + . . . + C n n — 1 · a · b n — 1 + C n n · b n , где имеем, что C n k = ( n ) ! ( k ) ! · ( n — k ) ! = n ( n — 1 ) · ( n — 2 ) · . . . · ( n — ( k — 1 ) ) ( k ) ! — биномиальные коэффициенты, где есть n по k , k = 0 , 1 , 2 , … , n , а » ! » является знаком факториала.
В формуле сокращенного умножения a + b 2 = C 2 0 · a 2 + C 2 1 · a 1 · b + C 2 2 · b 2 = a 2 + 2 a b + b 2
просматривается формула бинома Ньютона, так как при n = 2 является его частным случаем.
Первая часть бинома называют разложением ( a + b ) n , а С n k · a n — k · b k — ( k + 1 ) -ым членом разложения, где k = 0 , 1 , 2 , … , n .
Коэффициенты бинома Ньютона, свойства биномиальных коэффициентов, треугольник Паскаля
Представление биномиальных коэффициентов для различных n осуществляется при помощи таблицы, которая имеет название арифметического треугольника Паскаля. Общий вид таблицы:
Показатель степени | Биноминальные коэффициенты | ||||||||||
0 | C 0 0 | ||||||||||
1 | C 1 0 | C 1 1 | |||||||||
2 | C 2 0 | C 2 1 | C 2 2 | ||||||||
3 | C 3 0 | C 3 1 | C 3 2 | C 3 3 | |||||||
⋮ | … | … | … | … | … | … | … | … | … | ||
n | C n 0 | C n 1 | … | … | … | … | … | C n n — 1 | C n n |
При натуральных n такой треугольник Паскаля состоит из значений коэффициентов бинома:
Показатель степени | Биноминальные коэффициенты | ||||||||||||||
0 | 1 | ||||||||||||||
1 | 1 | 1 | |||||||||||||
2 | 1 | 2 | 1 | ||||||||||||
3 | 1 | 3 | 3 | 1 | |||||||||||
4 | 1 | 4 | 6 | 4 | 1 | ||||||||||
5 | 1 | 5 | 10 | 10 | 5 | 1 | |||||||||
⋮ | … | … | … | … | … | … | … | … | … | … | … | … | … | ||
n | C n 0 | C n 1 | … | … | … | … | … | … | … | … | … | C n n — 1 | C n n |
Боковые стороны треугольника имеют значение единиц. Внутри располагаются числа, которые получаются при сложении двух чисел соседних сторон. Значения, которые выделены красным, получают как сумму четверки, а синим – шестерки. Правило применимо для всех внутренних чисел, которые входят в состав треугольника. Свойства коэффициентов объясняются при помощи бинома Ньютона.
Доказательство формулы бинома Ньютона
Имеются равенства, которые справедливы для коэффициентов бинома Ньютона:
- коэффициента располагаются равноудалено от начала и конца, причем равны, что видно по формуле C n p = C n n — p , где р = 0 , 1 , 2 , … , n ;
- C n p = C n p + 1 = C n + 1 p + 1 ;
- биномиальные коэффициенты в сумме дают 2 в степени показателя степени бинома, то есть C n 0 + C n 1 + C n 2 + . . . + C n n = 2 n ;
- при четном расположении биноминальных коэффициентов их сумма равняется сумме биномиальных коэффициентов, расположенных в нечетных местах.
Равенство вида a + b n = C n 0 · a n + C n 1 · a n — 1 · b + C n 2 · a n — 2 · b 2 + . . . + C n n — 1 · a · b n — 1 + C n n · b n считается справедливым. Докажем его существование.
Для этого необходимо применить метод математической индукции.
Для доказательства необходимо выполнить несколько пунктов:
- Проверка справедливости разложения при n = 3 . Имеем, что
a + b 3 = a + b a + b a + b = a 2 + a b + b a + b 2 a + b = = a 2 + 2 a b + b 2 a + b = a 3 + 2 a 2 b + a b 2 + a 2 b + 2 a b + b 3 = = a 3 + 3 a 2 b + 3 a b 2 + b 3 = C 3 0 a 3 + C 3 1 a 2 b + C 3 2 a b 2 + C 3 3 b 3 - Если неравенство верно при n — 1 , тогда выражение вида a + b n — 1 = C n — 1 0 · a n — 1 · C n — 1 1 · a n — 2 · b · C n — 1 2 · a n — 3 · b 2 + . . . + C n — 1 n — 2 · a · b n — 2 + C n — 1 n — 1 · b n — 1
- Доказательство равенства a + b n — 1 = C n — 1 0 · a n — 1 · C n — 1 1 · a n — 2 · b · C n — 1 2 · a n — 3 · b 2 + . . . + C n — 1 n — 2 · a · b n — 2 + C n — 1 n — 1 · b n — 1 , основываясь на 2 пункте.
a + b n = a + b a + b n — 1 = = ( a + b ) C n — 1 0 · a n — 1 · C n — 1 1 · a n — 2 · b · C n — 1 2 · a n — 3 · b 2 + . . . + C n — 1 n — 2 · a · b n — 2 + C n — 1 n — 1 · b n — 1
Необходимо раскрыть скобки, тогда получим a + b n = C n — 1 0 · a n + C n — 1 1 · a n — 1 · b + C n — 1 2 · a n — 2 · b 2 + . . . + C n — 1 n — 2 · a 2 · b n — 2 + + C n — 1 n — 1 · a · b n — 1 + C n — 1 0 · a n — 1 · b + C n — 1 1 · a n — 2 · b 2 + C n — 1 2 · a n — 3 · b 3 + . . . + C n — 1 n — 2 · a · b n — 1 + C n — 1 n — 1 · b n
Производим группировку слагаемых
a + b n = = C n — 1 0 · a n + C n — 1 1 + C n — 1 0 · a n — 1 · b + C n — 1 2 + C n — 1 1 · a n — 2 · b 2 + . . . + + C n — 1 n — 1 + C n — 1 n — 2 · a · b n — 1 + C n — 1 n — 1 · b n
Имеем, что C n — 1 0 = 1 и C n 0 = 1 , тогда C n — 1 0 = C n 0 . Если C n — 1 n — 1 = 1 и C n n = 1 , тогда C n — 1 n — 1 = C n n . При применении свойства сочетаний C n p + C n p + 1 = C n + 1 p + 1 , получаем выражение вида
C n — 1 1 + C n — 1 0 = C n 1 C n — 1 2 + C n — 1 1 = C n 2 ⋮ C n — 1 n — 1 + C n — 1 n — 2 = C n n — 1
Произведем подстановку в полученное равенство. Получим, что
a + b n = = C n — 1 0 · a n + C n — 1 1 + C n — 1 0 · a n — 1 · b + C n — 1 2 + C n — 1 1 · a n — 2 · b 2 + . . . + + C n — 1 n — 1 + C n — 1 n — 2 · a · b n — 1 = C n — 1 n — 1 · b n
После чего можно переходить к биному Ньютона, тогда a + b n = C n 0 · a n + C n 1 · a n — 1 · b + C n 2 · a n — 2 · b 2 + . . . + C n n — 1 · a · b n — 1 + C n n · b n .