Давайте сначала зададим вопрос "сколько существует последовательностей 0-1 длины n без двух последовательных 1?" Пусть ответ будет A (n). У нас есть A (0) = 1 (пустая последовательность), A (1) = 2 («0» и «1»), и A (2) = 3 («00», «01» и «10», но не "11").
Чтобы упростить запись повторения, мы вычислим A (n) как сумму двух чисел:
B (n), число таких последовательностей, заканчивающихся на 0, и
C (n), число таких последовательностей, которые заканчиваются на 1.
Тогда B (n) = A (n-1) (возьмите любую такую последовательность длины n-1 и добавьте 0)
и C (n) = B (n-1) (потому что если у вас есть 1 в позиции n, вы должны иметь 0 в n-1.)
Это дает A (n) = B (n) + C (n) = A (n-1) + B (n-1) = A (n-1) + A (n-2).
К настоящему времени это должно быть знакомо: -)
A (n) - это просто число Фибоначчи F n + 2 , где последовательность Фибоначчи определяется как
F 0 = 0, F 1 = 1 и F n + 2 = F n + 1 + F n для n & ge; 0.
Теперь на ваш вопрос. Мы посчитаем количество договоренностей с 1 = 0 и 1 = 1 отдельно. Для первых, 2 & hellip; n может быть любой последовательностью (без последовательных 1 с), поэтому число A (n-1) = F n + 1 . Для последнего у нас должно быть 2 = 0, а затем 3 & hellip; a n - любая последовательность без последовательных 1, которые заканчиваются с 0 , то есть B (n-2) = A (n-3) = F n-1 .
Итак ответ F n + 1 + F n-1 .
На самом деле, мы можем пойти еще дальше, чем этот ответ. Обратите внимание, что если вы называете ответ как
G (n) = F n + 1 + F n-1 , то
G (n + 1) = F n + 2 + F n и
G (n + 2) = F n + 3 + F n + 1 , поэтому даже G (n) удовлетворяет тому же самому повторению, что и последовательность Фибоначчи! [На самом деле, любая линейная комбинация последовательностей, подобных Фибоначчи, будет удовлетворять одному и тому же повторению, так что это не так уж удивительно.] Поэтому другой способ вычисления ответов будет использовать:
G (2) = 3
G (3) = 4
G (n) = G (n-1) + G (n-2) для n & ge; 4.
И теперь вы также можете использовать закрытую форму F n = (& alpha; n - & beta; n ) / ( & alpha; - & beta;) (где & alpha; и & beta; равны (1 ± √5) / 2, корни x 2 -x-1 = 0), чтобы получить
G (n) = ((1 + √5) / 2) n + ((1-√5) / 2) n .
[Вы можете игнорировать второй член, потому что он очень близок к 0 для больших n, на самом деле G (n) является ближайшим целым числом к ((1 + √5) / 2) n для всех n & ge; 2.]