Сколько существует двоичных строк длины n, не содержащих двух единиц подряд? Постройте несколько различных доказательств (рекуррентные соотношения, метод включений-исключений, матричная экспонентация), сравните их и обсудите асимптотическое поведение
Короткий ответ: число таких строк длины nnn равно ana_nan, где a0=1, a1=2,an=an−1+an−2 (n≥2),
a_0=1,\; a_1=2,\qquad a_n=a_{n-1}+a_{n-2}\ (n\ge2), a0=1,a1=2,an=an−1+an−2(n≥2),
и в закрытой форме an=Fn+2=∑k=0⌊(n+1)/2⌋(n−k+1k),
a_n=F_{n+2}=\sum_{k=0}^{\lfloor(n+1)/2\rfloor}\binom{n-k+1}{k}, an=Fn+2=k=0∑⌊(n+1)/2⌋(kn−k+1),
где FmF_mFm — числа Фибоначчи (F0=0,F1=1F_0=0,F_1=1F0=0,F1=1). Ниже — несколько различных доказательств, сравнение и асимптика. 1) Доказательство рекуррентой (простое, конструктивное). - Разделим все строки длины nnn по первой позиции: если первая цифра 000, оставшиеся n−1n-1n−1 позиций могут быть любыми допустимыми — an−1a_{n-1}an−1 способов; если первая цифра 111, то вторая обязательно 000, и оставшиеся n−2n-2n−2 позиции дают an−2a_{n-2}an−2 способов. Следовательно an=an−1+an−2,
a_n=a_{n-1}+a_{n-2}, an=an−1+an−2,
с начальными условиями a0=1,a1=2a_0=1,a_1=2a0=1,a1=2. Это даёт an=Fn+2a_n=F_{n+2}an=Fn+2. 2) Комбинаторическое (и эквивалентно включения‑исключения по расположению единиц). - Считаем по числу единиц kkk. Чтобы kkk единиц не были смежными, между ними должно быть по крайней мере по одной нулевой «прослойке» (кроме концов). Стандартная биекция даёт число размещений (n−k+1k).
\binom{n-k+1}{k}. (kn−k+1).
Суммируя по kkk от 000 до ⌊(n+1)/2⌋\lfloor(n+1)/2\rfloor⌊(n+1)/2⌋, получаем an=∑k=0⌊(n+1)/2⌋(n−k+1k).
a_n=\sum_{k=0}^{\lfloor(n+1)/2\rfloor}\binom{n-k+1}{k}. an=k=0∑⌊(n+1)/2⌋(kn−k+1).
(Тот же результат можно вывести методом включений‑исключений, учитывая множества позиций пар «11» и устраняя размещения с соседними единицами; итоговая альтернирующая сумма сводится к приведённой биномиальной формуле.) 3) Матричная экспонентация (линейная алгебра, быстрый подсчёт). - Рекуррентая связь эквивалентна векторному виду (anan−1)=(1110)(an−1an−2),
\begin{pmatrix}a_n\\a_{n-1}\end{pmatrix} =\begin{pmatrix}1&1\\1&0\end{pmatrix} \begin{pmatrix}a_{n-1}\\a_{n-2}\end{pmatrix}, (anan−1)=(1110)(an−1an−2),
поэтому (anan−1)=(1110) n−1(a1a0).
\begin{pmatrix}a_n\\a_{n-1}\end{pmatrix} =\begin{pmatrix}1&1\\1&0\end{pmatrix}^{\,n-1} \begin{pmatrix}a_1\\a_0\end{pmatrix}. (anan−1)=(1110)n−1(a1a0).
Это даёт быстрый алгоритм вычисления за O(logn)O(\log n)O(logn) умножений матриц (бинарное возведение в степень). Собственная разложение матрицы даёт формулу Бине: an=φ n+2−ψ n+25,
a_n=\frac{\varphi^{\,n+2}-\psi^{\,n+2}}{\sqrt5}, an=5φn+2−ψn+2,
где φ=1+52, ψ=1−52\varphi=\tfrac{1+\sqrt5}{2},\ \psi=\tfrac{1-\sqrt5}{2}φ=21+5,ψ=21−5. Сравнение методов. - Рекуррентный метод — самый простой для доказательства и получения значений по‑порядку (линейное время). - Комбинаторический подход даёт явную сумму по числу единиц и удобен для точных счётов и понимания структуры строк. - Метод включений‑исключений формально даёт ту же формулу, но требует аккуратного учёта перекрытий; он хорош, чтобы понять, как исключаются запрещённые локальные паттерны. - Матричная экспонентация/собственные значения дают быстрый (логарифмический) алгоритм вычисления и сразу асимптику и замыкание (Бине). Асимптотика. Из формулы Бине следует an∼φ n+25(n→∞),
a_n\sim\frac{\varphi^{\,n+2}}{\sqrt5}\quad(n\to\infty), an∼5φn+2(n→∞),
и отношение последовательных членов стремится к золотовому сечению: an+1an→φ≈1.618…
\frac{a_{n+1}}{a_n}\to\varphi\approx1.618\ldots anan+1→φ≈1.618…
То есть рост экспоненциальный с базой φ\varphiφ. Заключение: количество двоичных строк длины nnn без двух единиц подряд равно an=Fn+2a_n=F_{n+2}an=Fn+2, его можно получить рекурсивно, комбинаторно (или через включения‑исключения) и через матричную экспоненту; асимптотически an≈φn+2/5a_n\approx\varphi^{n+2}/\sqrt5an≈φn+2/5.
a0=1, a1=2,an=an−1+an−2 (n≥2), a_0=1,\; a_1=2,\qquad a_n=a_{n-1}+a_{n-2}\ (n\ge2),
a0 =1,a1 =2,an =an−1 +an−2 (n≥2), и в закрытой форме
an=Fn+2=∑k=0⌊(n+1)/2⌋(n−k+1k), a_n=F_{n+2}=\sum_{k=0}^{\lfloor(n+1)/2\rfloor}\binom{n-k+1}{k},
an =Fn+2 =k=0∑⌊(n+1)/2⌋ (kn−k+1 ), где FmF_mFm — числа Фибоначчи (F0=0,F1=1F_0=0,F_1=1F0 =0,F1 =1). Ниже — несколько различных доказательств, сравнение и асимптика.
1) Доказательство рекуррентой (простое, конструктивное).
- Разделим все строки длины nnn по первой позиции: если первая цифра 000, оставшиеся n−1n-1n−1 позиций могут быть любыми допустимыми — an−1a_{n-1}an−1 способов; если первая цифра 111, то вторая обязательно 000, и оставшиеся n−2n-2n−2 позиции дают an−2a_{n-2}an−2 способов. Следовательно
an=an−1+an−2, a_n=a_{n-1}+a_{n-2},
an =an−1 +an−2 , с начальными условиями a0=1,a1=2a_0=1,a_1=2a0 =1,a1 =2. Это даёт an=Fn+2a_n=F_{n+2}an =Fn+2 .
2) Комбинаторическое (и эквивалентно включения‑исключения по расположению единиц).
- Считаем по числу единиц kkk. Чтобы kkk единиц не были смежными, между ними должно быть по крайней мере по одной нулевой «прослойке» (кроме концов). Стандартная биекция даёт число размещений
(n−k+1k). \binom{n-k+1}{k}.
(kn−k+1 ). Суммируя по kkk от 000 до ⌊(n+1)/2⌋\lfloor(n+1)/2\rfloor⌊(n+1)/2⌋, получаем
an=∑k=0⌊(n+1)/2⌋(n−k+1k). a_n=\sum_{k=0}^{\lfloor(n+1)/2\rfloor}\binom{n-k+1}{k}.
an =k=0∑⌊(n+1)/2⌋ (kn−k+1 ). (Тот же результат можно вывести методом включений‑исключений, учитывая множества позиций пар «11» и устраняя размещения с соседними единицами; итоговая альтернирующая сумма сводится к приведённой биномиальной формуле.)
3) Матричная экспонентация (линейная алгебра, быстрый подсчёт).
- Рекуррентая связь эквивалентна векторному виду
(anan−1)=(1110)(an−1an−2), \begin{pmatrix}a_n\\a_{n-1}\end{pmatrix}
=\begin{pmatrix}1&1\\1&0\end{pmatrix}
\begin{pmatrix}a_{n-1}\\a_{n-2}\end{pmatrix},
(an an−1 )=(11 10 )(an−1 an−2 ), поэтому
(anan−1)=(1110) n−1(a1a0). \begin{pmatrix}a_n\\a_{n-1}\end{pmatrix}
=\begin{pmatrix}1&1\\1&0\end{pmatrix}^{\,n-1}
\begin{pmatrix}a_1\\a_0\end{pmatrix}.
(an an−1 )=(11 10 )n−1(a1 a0 ). Это даёт быстрый алгоритм вычисления за O(logn)O(\log n)O(logn) умножений матриц (бинарное возведение в степень). Собственная разложение матрицы даёт формулу Бине:
an=φ n+2−ψ n+25, a_n=\frac{\varphi^{\,n+2}-\psi^{\,n+2}}{\sqrt5},
an =5 φn+2−ψn+2 , где φ=1+52, ψ=1−52\varphi=\tfrac{1+\sqrt5}{2},\ \psi=\tfrac{1-\sqrt5}{2}φ=21+5 , ψ=21−5 .
Сравнение методов.
- Рекуррентный метод — самый простой для доказательства и получения значений по‑порядку (линейное время).
- Комбинаторический подход даёт явную сумму по числу единиц и удобен для точных счётов и понимания структуры строк.
- Метод включений‑исключений формально даёт ту же формулу, но требует аккуратного учёта перекрытий; он хорош, чтобы понять, как исключаются запрещённые локальные паттерны.
- Матричная экспонентация/собственные значения дают быстрый (логарифмический) алгоритм вычисления и сразу асимптику и замыкание (Бине).
Асимптотика.
Из формулы Бине следует
an∼φ n+25(n→∞), a_n\sim\frac{\varphi^{\,n+2}}{\sqrt5}\quad(n\to\infty),
an ∼5 φn+2 (n→∞), и отношение последовательных членов стремится к золотовому сечению:
an+1an→φ≈1.618… \frac{a_{n+1}}{a_n}\to\varphi\approx1.618\ldots
an an+1 →φ≈1.618… То есть рост экспоненциальный с базой φ\varphiφ.
Заключение: количество двоичных строк длины nnn без двух единиц подряд равно an=Fn+2a_n=F_{n+2}an =Fn+2 , его можно получить рекурсивно, комбинаторно (или через включения‑исключения) и через матричную экспоненту; асимптотически an≈φn+2/5a_n\approx\varphi^{n+2}/\sqrt5an ≈φn+2/5 .