Сколько стоит запрет 11
В фибоначчиевой записи нельзя использовать два соседних числа Фибоначчи. Поэтому в соответствующей строке из нулей и единиц запрещена комбинация 11.
Насколько сильно это ограничение уменьшает число возможных записей?
Пусть Aₙ — число двоичных строк длины n без соседних единиц.
Разделим их на два типа.
Если строка заканчивается нулём, перед ним может стоять любая допустимая строка длины n−1. Таких Aₙ₋₁.
Если строка заканчивается единицей, предыдущий символ обязан быть нулём. Поэтому перед окончанием 01 может стоять любая допустимая строка длины n−2. Таких Aₙ₋₂.
Получаем
Aₙ = Aₙ₋₁ + Aₙ₋₂.
С начальными значениями A₁ = 2, A₂ = 3
получается 2, 3, 5, 8, 13, 21, …,
то есть Aₙ = Fₙ₊₂.
Поэтому для десяти разрядов имеется не 2¹⁰ = 1024,
а только F₁₂ = 144 допустимые строки.
Это и есть цена запрета 11.
Но числа Фибоначчи растут примерно как степени золотого сечения
φ = (1+√5)/2 ≈ 1,618.
Точнее, Fₙ ≈ φⁿ/√5.
Значит, число допустимых строк длины n растёт примерно как φⁿ, тогда как число обычных двоичных строк — как 2ⁿ.
В логарифмическом масштабе один обычный двоичный разряд несёт 1 бит информации, а на один разряд приходится асимптотически log₂φ ≈ 0,694 бита информации.
Иными словами, чтобы закодировать то же количество вариантов, фибоначчиевых разрядов требуется примерно в 1/log₂φ ≈ 1,44 раза больше, чем двоичных.
Например, 100 обычных двоичных разрядов по ёмкости соответствуют примерно 144 фибоначчиевым.
Так что фибоначчиева запись проигрывает двоичной в компактности.
Но тот же самый запрет 11 даёт другое преимущество: комбинацию 11 можно использовать как признак конца числа и передавать последовательность чисел без внешних разделителей.
Получается характерный обмен:
запрет уменьшает число допустимых записей, зато создаёт структуру, которой у обычной двоичной записи нет.
А скорость роста этой структуры определяется тем же числом φ, которое появляется во всей последовательности Фибоначчи.
Post #1327
534
- ❤ 8
- 🔥 5
- 👍 3