Метод наборов

в 11:10, , рубрики: Алгоритмы, конкретная математика, математика, рекуррентные уравнения

Читая книгу «Конкретная математика», одновременно набираясь знаний и осознавая свою некомпетентность в вопросе, ещё в самой первой главе я наткнулся на метод наборов, который авторы используют для решения Задачи Иосифа Флавия. Метод они не объясняют, сочтя его слишком элементарным, так что пришлось искать информацию о нём самому. В рускоязычном сегменте интернетов достаточно подробного описания не нашел, поэтому воспользовался ответом с math.stackexchange.com, который позже перевёл, и теперь представляю его вам, дабы те, кто тоже не понял метод инстинктивно, смогли проникнуться.
Далее — перевод от первого лица.

Замечание: в начале я постараюсь описать несколько ключевых идей метода повторений используя (очень) простой пример. Это должно дать нам некоторое базовое понимание этого метода. Но чтобы понять что действительно происходит, мы так же рассмотрим один значительно более сложный пример (прим. перев.: его вы можете найти в оригинале статьи, здесь лишь основное пояснение).

Метод повторений (базовые понятия)

Этот метод базируется на двух основных ингредиентах. Первый — это возможность построения линейной комбинации уже известных рекуррентностей.
Допустим, имеется рекуррентность для $inline$x_n$inline$

$$display$$ begin{align*} {x_0} &= {a_0} \ {x_n} &= {a_n} + {x_{n-1}}, quad n>0 end{align*} $$display$$

и у нас есть вторая рекуррентность для $inline$y_n$inline$

$$display$$ begin{align*} {y_0} &= {b_0} \ {y_n} &= {b_n} + {y_{n-1}}, quad n>0 end{align*} $$display$$

В таком случае, при условии, что данные рекуррентности известны, мы так же знаем по линейности, что уравнение с добавляемым слагаемым

$$display$${alpha a_n} + {beta b_n}$$display$$

будет иметь результат

$$display$${alpha x_n} + {beta y_n}$$display$$

Чтобы показать это наглядно, допустим $inline${a_n} = 3$inline$ и $inline${b_n} = {5n^2} + {1}$inline$. Допуская, что мы знаем результаты $inline${x_n}$inline$ и $inline${y_n}$inline$ рекуррентностей

$$display$$ begin{align*} {x_0} &= {3} & {y_0} &= {1} \ {x_n} &= {3} + {x_{n-1}},quad n>0 & {y_n} &= {5n^2} + {1} + {y_{n-1}},quad n>0 end{align*} $$display$$

мы так же знаем по линейности, что результат рекуррентности

$$display$$ begin{align*} {z_0} &= {7} \ {z_n} &= {2n^2} + {7} + {z_{n-1}} end{align*} $$display$$

равен

$$display$$ begin{align*} {z_n} = frac{11}{5}{x_n} + frac{2}{5}{y_n} end{align*} $$display$$

Видно, что в этом случае мы имеем набор двух решений $inline${x_n}$inline$ и $inline${y_n}$inline$, которые мы можем линейно объединить для нахождения требуемого решения $inline${z_n}$inline$.

НО: мы обычно начинаем с рекуррентности $inline${z_n}$inline$ не имея в наличии подходящих кандидатов.И это является вторым ингредиентом. Мы должны построить набор.

Вторым ингредиентом является построение набора, который может быть использован для линейных комбинаций. Допустим, мы начнём с рекуррентности

$$display$$ begin{align*} {z_0} &= {7} \ {z_n} &= {2n^2} + {7} + {z_{n-1}}, quad {n} > 0 tag{1} end{align*} $$display$$

Если мы попробуем решить эту рекуррентность методом наборов, то для начала необходимо обобщить рекуррентность и взамен использовать

$$display$$ begin{align*} {mathcal{Z}_0} &= {a_0} \ {mathcal{Z}_n} &= {a_n} + {mathcal{Z}_{n-1}}, quad {n} > 0 end{align*} $$display$$

Самое время для некоторых творческий идей, что обычно является самой сложной частью в использовании этого метода. Мы хотим найти набор, состоящий из двух членов. Один из них с $inline${a_n} = const$inline$, а другой с $inline${a_n}$inline$ равным квадрату от $inline${n}$inline$. Для этого мы должны подобрать несколько подходящих кандидатов для $inline${mathcal{Z}_n}$inline$, слагаемым которого является искомое $inline${a_n}$inline$.

Давайте подберём первого кадидата. Это довольно просто (в этом случае), т.к. равенство $inline${mathcal{Z}_n} = n$inline$ даёт

$$display$$ begin{align*} {a_0} &= {0} \ {n} &= {a_n} + n - 1, quad {n} > 0 end{align*} $$display$$

и мы находим: $inline${a_0} = {0}$inline$ и $inline${a_n} = 1, quad {n} > 0$inline$.
Мы получили первого кандидата, допустим $inline${x_n}$inline$, такого, что

$$display$$ begin{align*} {x_0} &= {0} \ {x_n} &= {1} + {x_{n-1}}, quad {n} > 0 tag{2} end{align*} $$display$$

По схожему принципу мы можем найти подходящего второго кандидата, который обеспечит нас $inline${a_n} = $inline$ квадрат от $inline${n}$inline$, заметив, что сумма натуральных чисел в степени $inline${k}$inline$ обычно сводится к чему-то в степени $inline${k} + {1}$inline$. Давайте подберём $inline${mathcal{Z}_n} = {n^3}$inline$, который дает

$$display$$ begin{align*} {a_0} &= 0 \ {n^3} &= {a_n} + {({n} - {1})}^3,quad{n} > {0} end{align*} $$display$$

и получим $inline${a_0} = {0}$inline$ и $inline${a_n} = {3n^2} - {3n} + {1},quad {n} > {0}$inline$.

Мы получили второго кандидата, допустим $inline$y_n$inline$, для которого справедливо

$$display$$ begin{align*} {y_0} &= {0}\ {y_n} &= {3n^2} - {3n} + {1} + {y_{n-1}}, quad {n} > {0}tag{3} end{align*} $$display$$

Мы видим, что $inline${y_n}$inline$ также содержит линейное слагаемое в $inline${n}$inline$, которое для нас излишне, т.к. мы ищем (следуя формуле (1)) $inline${a_n} = {2n^2} + {7}$inline$. Поэтому мы расширим наш набор третьим членом, который обеспечит нас $inline${a_n}$inline$ линейным по $inline${n}$inline$. Таким образом мы будем иметь возможность избавиться от линейного слагаемого $inline${n}$inline$ соответствующей линейной комбинацией трёх членов набора. Мы подберём такой $inline${mathcal{Z}_n} = {n^2}$inline$, который даёт

$$display$$ begin{align*} a_0&=0\ n^2&=a_n+(n-1)^2, quad n>0 end{align*} $$display$$

и найдём $inline${a_0} = {0}$inline$ и $inline${a_n} = {2n} - {1}, quad {n} > {0}$inline$.

Таким образом мы получим третьего кандидата, допустим $inline$u_n$inline$, для которого справедливо

$$display$$ begin{align*} u_0&=0\ u_n&=2n-1+u_{n-1},quad n>0tag{4} end{align*} $$display$$

Давайте взглянем на набор:

Обзор трёх кандидатов

$$display$$ begin{array}{rlcr} mathcal{Z}_n&&a_n&\ hline\ x_n=&nqquad&1&qquadqquadtext{acc. to }(2)\ y_n=&n^3qquad&3n^2-3n+1&qquadqquadtext{acc. to }(3)\ u_n=&n^2qquad&2n-1&qquadqquadtext{acc. to }(4)\ end{array} $$display$$

Используя подходящую линейную комбинацию можно заметить, что

$$display$$ begin{align*} a_n&=2n^2+7\ &=frac{2}{3}left(3n^2-3n+1right)+left(2n-1right)+frac{22}{3} end{align*} $$display$$

таким образом мы придём к

$$display$$ begin{align*} z_n&=frac{22}{3}x_n+frac{2}{3}y_n+u_n+c_0\ &=frac{1}{3}nleft(2n^2+3n+22right)+c_0 end{align*} $$display$$

Заметим, что нам необходимо определить константу $inline$c_0$inline$, учитывая, что нам также нужно соблюсти начальное условие $inline$z_0 = 7$inline$. Мы делаем это определяя $inline$с_0 = 7$inline$ и в итоге получаем:

$$display$$ z_n=frac{1}{3}nleft(2n^2+3n+22right)+7,quad ngeq 0 $$display$$

Подытожим.

Описание метода наборов:
Для решения рекуррентности формы

$$display$$ begin{align*} x_n=f(n)+g(x_{n-1},x_{n-2},ldots,x_0)tag{5} end{align*} $$display$$

  • мы находим кандидатов $inline$f_1(n)$inline$, ...,$inline$f_k(n)$inline$ формулы $inline$f(n)$inline$ таким образом, чтобы они могли быть линейно приведены к форме

    $$display$$ f(n)=lambda_1 f_1(n)+ldots+lambda_k f_k(n) $$display$$

  • после чего рассматриваем обобщённое представление (5) заменяя $inline$f(n)$inline$ на $inline$a_n$inline$

    $$display$$ mathcal{Z}_n=a_n+g(mathcal{Z}_{n-1},mathcal{Z}_{n-2},ldots,mathcal{Z}_0) $$display$$

  • и решаем более простые рекуррентности

    $$display$$ x_n^{(l)}=f_l(n)+g(x_{n-1},x_{n-2},ldots,x_0),quad 1 leq l leq k $$display$$

    подбирая $inline$x_n^{(l)}$inline$ чтобы получить $inline$f_l(n)$inline$.

  • Решения $inline$x_n^{(l)}$inline$ при $inline$1 < l < k$inline$ формируют набор для решения $inline$x_n$inline$.
  • Определяем линейную комбинацию

    $$display$$ f(n)=lambda_1 f_1(n)+ldots+lambda_k f_k(n) $$display$$

  • и выводим решение

    $$display$$ x_n=lambda_1 x_n^{(1)}+ldots+lambda_k x_n^{(k)}+c_0 $$display$$

  • после чего определяем $inline$c_0$inline$ согласно начальным условиям.

Примечание: Возможны ситуации, в которых придётся определить более одного начального условия.
Примечание: Возможна ситуация, когда набор потребует дальнейшего расширения с целью избавиться от лишних слагаемых, которые появляются при расчёте $inline$x_n^{(l)}$inline$.

Автор: emigrant90

Источник

Поделиться

* - обязательные к заполнению поля