Jump to content

Кодирование Фибоначчи

В математике и информатике кодирование Фибоначчи является универсальным кодом. [ нужна ссылка ] который кодирует положительные целые числа в двоичные кодовые слова . Это один из примеров представления целых чисел на основе чисел Фибоначчи . Каждое кодовое слово заканчивается на «11» и не содержит других экземпляров «11» до конца.

Код Фибоначчи тесно связан с представлением Цекендорфа , позиционной системой счисления , которая использует теорему Цекендорфа и обладает тем свойством, что ни одно число не имеет представления с последовательными единицами. Кодовое слово Фибоначчи для конкретного целого числа — это в точности представление Цекендорфа целого числа с обратным порядком цифр и добавленной в конце дополнительной цифрой «1».

Определение [ править ]

Для номера , если представляют собой цифры кодового слова, представляющего тогда мы имеем:

где F ( i ) i- е число Фибоначчи , и поэтому F ( i +2) i- е отличное число Фибоначчи, начинающееся с . Последний бит всегда является добавленным битом 1 и не имеет разрядного значения.

Можно показать, что такое кодирование уникально, и единственное появление цифры «11» в любом кодовом слове находится в конце, т. е. d ( k −1) и d ( k ). Предпоследний бит является наиболее значимым битом, а первый бит — наименее значащим битом. Также нельзя опускать ведущие нули, как, например, в десятичных числах.

Ниже показаны первые несколько кодов Фибоначчи, а также их так называемая подразумеваемая вероятность — значение для каждого числа, которое имеет код минимального размера в кодировании Фибоначчи.

Символ Представление Фибоначчи Кодовое слово Фибоначчи Подразумеваемая вероятность
1 11 1/4
2 011 1/8
3 0011 1/16
4 1011 1/16
5 00011 1/32
6 10011 1/32
7 01011 1/32
8 000011 1/64
9 100011 1/64
10 010011 1/64
11 001011 1/64
12 101011 1/64
13 0000011 1/128
14 1000011 1/128

Чтобы закодировать целое число N :

  1. Найдите наибольшее число Фибоначчи, равное или меньшее N ; вычтите это число из N , отслеживая остаток.
  2. Если вычтенное число было i -м числом Фибоначчи F ( i ), поместите 1 на место i -2 в кодовом слове (считая самую левую цифру за позицию 0).
  3. остатком Повторите предыдущие шаги, заменяя N , пока остаток не будет равен 0.
  4. Поставьте дополнительную цифру 1 после самой правой цифры кодового слова.

Чтобы декодировать кодовое слово, удалите последнюю «1», присвойте оставшиеся значения 1,2,3,5,8,13... ( числа Фибоначчи ) битам кодового слова и просуммируйте значения биты «1».

Сравнение с другими универсальными кодами [ править ]

Кодирование Фибоначчи обладает полезным свойством, которое иногда делает его привлекательным по сравнению с другими универсальными кодами: оно является примером самосинхронизирующегося кода , облегчающего восстановление данных из поврежденного потока. В большинстве других универсальных кодов, если изменить один бит , ни одна из данных, следующих за ним, не будет правильно прочитана. С другой стороны, при кодировании Фибоначчи измененный бит может привести к тому, что один токен будет прочитан как два, или к тому, что два токена будут прочитаны неправильно как один, но чтение «0» из потока остановит дальнейшее распространение ошибок. Поскольку единственный поток, в котором нет «0», — это поток токенов «11», общее расстояние редактирования между потоком, поврежденным одной битовой ошибкой, и исходным потоком составляет не более трех.

Этот подход — кодирование с использованием последовательности символов, в которой запрещены некоторые шаблоны (например, «11»), можно свободно обобщать. [1]

Пример [ править ]

В следующей таблице показано, что число 65 представлено в кодировке Фибоначчи как 0100100011, поскольку 65 = 2 + 8 + 55 . Первые два числа Фибоначчи (0 и 1) не используются, всегда добавляется дополнительная 1.

Обобщения [ править ]

Кодировки Фибоначчи для положительных целых чисел представляют собой двоичные строки, которые заканчиваются на «11» и не содержат других экземпляров «11». Это можно обобщить на двоичные строки, которые заканчиваются N последовательными единицами и не содержат других экземпляров N последовательных единиц. Например, для N = 3 положительные целые числа кодируются как 111, 0111, 00111, 10111, 000111, 100111, 010111, 110111, 0000111, 1000111, 0100111, …. В этом случае количество кодировок как функция длины строки определяется последовательностью чисел Трибоначчи .

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

См. также [ править ]

Ссылки [ править ]

  1. ^ Дуда, Ярек (2007). «Оптимальное кодирование на дискретной решетке с ограничениями трансляционного инварианта с использованием статистических алгоритмов». arXiv : 0710.3861 [ cs.IT ].

Дальнейшее чтение [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b34102432d7a71298d42f31b01b8e3bb__1700377380
URL1:https://arc.ask3.ru/arc/aa/b3/bb/b34102432d7a71298d42f31b01b8e3bb.html
Заголовок, (Title) документа по адресу, URL1:
Fibonacci coding - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)