Рекуррентные соотношения
При решении многих комбинаторных задач пользуются методом сведения данной задачи к задаче, касающейся меньшего числа предметов. Метод сведения к аналогичной задаче для меньшего числа предметов называется методом рекуррентных соотношений (от латинского "recurrere" - "возвращаться").
Понятие рекуррентных соотношений проиллюстрируем классической проблемой, которая была поставлена около 1202 года Леонардо из Пизы, известным как Фибоначчи. Важность чисел Фибоначчи для анализа комбинаторных алгоритмов делает этот пример весьма подходящим.
Фибоначчи поставил задачу в форме рассказа о скорости роста популяции кроликов при следующих предположениях. Все начинается с одной пары кроликов. Каждая пара становится фертильной через месяц, после чего каждая пара рождает новую пару кроликов каждый месяц. Кролики никогда не умирают, и их воспроизводство никогда не прекращается.
Пусть
![](../../../../img/tex/9/f/e/9fec8ccbb18fd06733c77154cc9fb0d7.png)
![](../../../../img/tex/a/7/4/a7466f63abf1057fc1e10136891431ed.png)
![](../../../../img/tex/2/7/a/27a9b92684976b30f541b1596314b516.png)
![](../../../../img/tex/8/b/8/8b89415cafe71693e4be10d372748a6a.png)
![](../../../../img/tex/0/1/3/0133c49e165e52f1708129f06231df1b.png)
![](../../../../img/tex/7/d/d/7dd4758708f9dff6a5dac4a8d539f25f.png)
![](../../../../img/tex/6/2/3/62360759945f1e26828f568c321115bf.png)
![](../../../../img/tex/a/7/4/a7466f63abf1057fc1e10136891431ed.png)
![](../../../../img/tex/0/2/a/02a036ba4383eb100b72df176704d987.png)
![](../../../../img/tex/a/7/4/a7466f63abf1057fc1e10136891431ed.png)
![](../../../../img/tex/f/e/e/feedd5cd95e450283d7666f6e952be4c.png)
![](../../../../img/tex/b/d/5/bd516a0dafa772427b92f67539505d23.png)
![](../../../../img/tex/f/0/b/f0b2d78b601dd7a3a761674d5eb397df.png)
Объединяя эти равенства, получим следующее рекуррентное соотношение:
![](../../../../img/tex/a/a/0/aa0bd9984a846a07d748c9c6dfa4dada.png)
![]() |
(7.1) |
Выбор начальных условий для последовательности чисел Фибоначчи не важен; существенное свойство этой последовательности определяется рекуррентным соотношением. Будем предполагать
![](../../../../img/tex/b/0/b/b0bcdd7464a8d092fe9b8325862ff7b6.png)
![](../../../../img/tex/8/a/6/8a64e1ac4707ae21b14afcf29f490c08.png)
Рассмотрим эту задачу немного иначе.
Пара кроликов приносит раз в месяц приплод из двух крольчат (самки и самца), причем новорожденные крольчата через два месяца после рождения уже приносят приплод. Сколько кроликов появится через год, если в начале года была одна пара кроликов?
Из условия задачи следует, что через месяц будет две пары кроликов. Через два месяца приплод даст только первая пара кроликов, и получится 3 пары.
А еще через месяц приплод дадут и исходная пара кроликов, и пара кроликов, появившаяся два месяца тому назад. Поэтому всего будет 5 пар кроликов. Обозначим через
![](../../../../img/tex/f/c/a/fcae57f9a53ef3ac2a32c56eae1703e7.png)
количество пар кроликов по истечении
![](../../../../img/tex/a/7/4/a7466f63abf1057fc1e10136891431ed.png)
![](../../../../img/tex/0/f/5/0f5618be9a98437ea33de813839ad924.png)
месяцев будут эти
![](../../../../img/tex/f/c/a/fcae57f9a53ef3ac2a32c56eae1703e7.png)
![](../../../../img/tex/1/5/c/15c39875de7daf510f0cb7d2bb6420e6.png)
![](../../../../img/tex/6/8/8/68840b1a1814696fc2a9a55390d0e294.png)
![]() | (7.2) |
![](../../../../img/tex/8/9/d/89db109ff23de74265b55477783fd170.png)
![](../../../../img/tex/5/4/7/547f86bb0e6bd885ace546166be2f9b7.png)
![](../../../../img/tex/c/3/a/c3ac4e8949ad3d2a4d8c0a8f2ecfdb25.png)
В частности,
![](../../../../img/tex/0/0/f/00f5d4e4e9afe27415f36085866933d8.png)
Числа
![](../../../../img/tex/f/c/a/fcae57f9a53ef3ac2a32c56eae1703e7.png)
![](../../../../img/tex/5/5/4/554af331e022577b5a1c02c75260b22f.png)
Найти число
![](../../../../img/tex/a/7/4/a7466f63abf1057fc1e10136891431ed.png)
Чтобы установить эту связь, возьмем любую такую последовательность и сопоставим ей пару кроликов по следующему правилу: единицам соответствуют месяцы появления на свет одной из пар "предков" данной пары (включая и исходную), а нулями - все остальные месяцы. Например, последовательность 010010100010 устанавливает такую "генеалогию": сама пара появилась в конце 11-го месяца, ее родители - в конце 7-го месяца, "дед" - в конце 5-го месяца и "прадед" - в конце второго месяца. Исходная пара кроликов тогда зашифровывается последовательностью 000000000000.
Ясно, что при этом ни в одной последовательности не могут стоять две единицы подряд - только что появившаяся пара не может, по условию, принести приплод через месяц. Кроме того, при указанном правиле различным последовательностям отвечают различные пары кроликов, и обратно, две различные пары кроликов всегда имеют разную "генеалогию", так как, по условию, крольчиха дает приплод, состоящий только из одной пары кроликов.
Установленная связь показывает, что число
![](../../../../img/tex/a/7/4/a7466f63abf1057fc1e10136891431ed.png)
![](../../../../img/tex/f/c/a/fcae57f9a53ef3ac2a32c56eae1703e7.png)
Докажем теперь, что
![]() | (7.3) |
![](../../../../img/tex/d/d/7/dd72c876db401e4b9f0edf174bc7f233.png)
![](../../../../img/tex/a/7/4/a7466f63abf1057fc1e10136891431ed.png)
![](../../../../img/tex/d/a/5/da5a94b5423c057a5be3e79e4fefc9f9.png)
![](../../../../img/tex/a/7/4/a7466f63abf1057fc1e10136891431ed.png)
Иными словами,
![](../../../../img/tex/b/9/8/b98ef19628f47f8a87d28c4fa7ba5f27.png)
![](../../../../img/tex/d/7/7/d778bbf05497c2584a8a8a25af594520.png)
![](../../../../img/tex/b/5/9/b59fd4ba52d8f21fda488051ab2fc379.png)
![](../../../../img/tex/b/0/b/b0ba721a8c07ab18cc6bcb2559d0e160.png)
![](../../../../img/tex/5/2/e/52edae36495f686eca2d4bc3dd01679f.png)
В самом деле,
![](../../../../img/tex/f/c/a/fcae57f9a53ef3ac2a32c56eae1703e7.png)
![](../../../../img/tex/a/7/4/a7466f63abf1057fc1e10136891431ed.png)
![](../../../../img/tex/1/2/2/122d5a466568b7a1eeee076b8716864d.png)
![](../../../../img/tex/6/b/a/6bacfc337805243411c7399d4a5bf145.png)
![](../../../../img/tex/2/3/0/230ed02628e38df45a75587f6141f696.png)
![](../../../../img/tex/2/1/4/21400591cb3eeff3be0a19746778d687.png)
![](../../../../img/tex/1/2/2/122d5a466568b7a1eeee076b8716864d.png)
![](../../../../img/tex/7/9/9/7996658762bbd76f520d05b2c98675af.png)
Равенство (7.3) можно доказать и иначе. Положим
![](../../../../img/tex/1/a/1/1a19f64904144b57908d4fd9ec190fa9.png)
где
![](../../../../img/tex/2/6/c/26ce7d6c212b0fb1351464fbb664c237.png)
![](../../../../img/tex/a/0/e/a0e6f0d75c5c06256709e1f4d15d9ace.png)
легко следует, что
![]() | (7.4) |
![](../../../../img/tex/0/9/6/0965a597a3466ecb392f2f1fe1d43463.png)
![](../../../../img/tex/5/9/5/5952035f3cdc0a104cb0b7779b40f08e.png)
![](../../../../img/tex/f/c/a/fcae57f9a53ef3ac2a32c56eae1703e7.png)
![](../../../../img/tex/c/c/7/cc79ad9c34e3847a5d340897b6db1d8d.png)
удовлетворяют рекуррентному соотношению
![](../../../../img/tex/6/8/e/68e794e112e3fdd09b543544ab22def2.png)
![](../../../../img/tex/c/9/c/c9cbc292426c48c40300f8fedb86a27c.png)
и, вообще,
![](../../../../img/tex/f/b/b/fbb01433cf6769e5f16f1f4798895f06.png)