Кодирование Фибоначчи - Fibonacci coding - Wikipedia
Эта статья включает Список ссылок, связанное чтение или внешняя ссылка, но его источники остаются неясными, потому что в нем отсутствует встроенные цитаты.Январь 2013) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Системы счисления |
---|
Индусско-арабская система счисления |
Восточная Азия |
Европейский |
Американец |
|
По алфавиту |
Бывший |
Позиционные системы к основание |
Нестандартные позиционные системы счисления |
Список систем счисления |
В математика и вычисления, Кодирование Фибоначчи это универсальный код[нужна цитата ] который кодирует положительные целые числа в двоичную систему кодовые слова. Это один из примеров представления целых чисел на основе Числа Фибоначчи. Каждое кодовое слово заканчивается на «11» и не содержит других экземпляров «11» перед концом.
Код Фибоначчи тесно связан с Представительство Zeckendorfпозиционный система счисления который использует Теорема цекендорфа и обладает тем свойством, что ни одно число не имеет представления с последовательными единицами. Кодовое слово Фибоначчи для определенного целого числа является в точности представлением Цекендорфа целого числа с обратным порядком цифр и добавленной в конец дополнительной «1».
Определение
Для ряда , если представляют собой цифры кодового слова, представляющего тогда у нас есть:
куда F(я) это яth Число Фибоначчи, и так F(я+2) это я-е различное число Фибоначчи, начиная с . Последний бит всегда является добавленным битом 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:
- Найдите самый большой Число Фибоначчи равно или меньше чем N; вычтите это число из N, отслеживая остаток.
- Если вычитаемое число было ячисло Фибоначчи F(я), поставьте 1 на место я−2 в кодовом слове (считая крайнюю левую цифру как место 0).
- Повторите предыдущие шаги, заменив остаток на N, пока не будет достигнут остаток 0.
- Поставьте дополнительную 1 после крайней правой цифры кодового слова.
Чтобы декодировать кодовое слово, удалите последнюю цифру «1», присвойте оставшиеся значения 1,2,3,5,8,13 ... ( Числа Фибоначчи ) к битам в кодовом слове и суммируйте значения битов "1".
Сравнение с другими универсальными кодами
Кодирование Фибоначчи имеет полезное свойство, которое иногда делает его привлекательным по сравнению с другими универсальными кодами: это пример самосинхронизирующийся код, что упрощает восстановление данных из поврежденного потока. С большинством других универсальных кодов, если один кусочек изменяется, никакие данные, поступающие после него, не будут правильно прочитаны. С другой стороны, при кодировании Фибоначчи измененный бит может привести к тому, что один токен будет считан как два или приведет к неправильному считыванию двух токенов как одного, но чтение «0» из потока остановит дальнейшее распространение ошибок. Поскольку единственный поток, в котором нет «0», - это поток из «11» токенов, общий редактировать расстояние между потоком, поврежденным одной битовой ошибкой, и исходным потоком не более трех.
Этот подход - кодирование с использованием последовательности символов, в которой некоторые шаблоны (например, «11») запрещены, можно свободно обобщать.[1]
Пример
В следующей таблице показано, что число 65 представлено в кодировке Фибоначчи как 0100100011, поскольку 65 = 2 + 8 + 55. Первые два числа Фибоначчи (0 и 1) не используются, и всегда добавляется дополнительная 1.
0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 | – |
дополнительный | |||||||||||
– | – | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
Обобщения
Кодировки Фибоначчи для положительных целых чисел представляют собой двоичные строки, которые заканчиваются на «11» и не содержат других экземпляров «11». Это можно обобщить на двоичные строки, заканчивающиеся на N последовательные 1 и не содержат других экземпляров N последовательные единицы. Например, для N = 3 положительные целые числа кодируются как 111, 0111, 00111, 10111, 000111, 100111, 010111, 110111, 0000111, 1000111, 0100111,…. В этом случае количество кодировок как функция длины строки определяется последовательностью Числа Трибоначчи.
Для общих ограничений, определяющих, какие символы разрешены после данного символа, максимальная скорость передачи информации может быть получена путем первого определения оптимальных вероятностей перехода с использованием случайное блуждание с максимальной энтропией, затем используйте энтропийный кодер (с переключаемым кодером с декодером) для кодирования сообщения как последовательности символов, удовлетворяющей найденным оптимальным вероятностям перехода.
Смотрите также
- База золотого сечения
- Нумерация Островского
- Универсальный код
- Варикод, практическое применение
- Теорема цекендорфа
- Случайное блуждание с максимальной энтропией
Рекомендации
- Аллуш, Жан-Поль; Шаллит, Джеффри (2003). Автоматические последовательности: теория, приложения, обобщения. Издательство Кембриджского университета. п.105. ISBN 978-0-521-82332-6. Zbl 1086.11015.
- Fraenkel, Aviezri S .; Кляйн, Шмуэль Т. (1996). «Надежные универсальные полные коды для передачи и сжатия». Дискретная прикладная математика. 64 (1): 31–55. CiteSeerX 10.1.1.37.3064. Дои:10.1016 / 0166-218X (93) 00116-H. ISSN 0166-218X. Zbl 0874.94026.
дальнейшее чтение
- Стахов, А. П. (2009). Математика гармонии: от Евклида до современной математики и информатики. Сингапур: World Scientific Publishing.