Код Левенштейна

Код Левенштейна

Код Левенштейна — это универсальный код, позволяющий кодировать неотрицательные целые числа. Он был придуман Владимиром Левенштейном.

Код нуля — это «0»; для кодирования положительных чисел используется алгоритм:

  1. Инициализировать счетчик шагов С = 1, K — код числа(изначально пустой).
  2. Записать двоичный код кодируемого числа без «старшей» 1 (например, число 1100 записать как 100; число 100 — как 00).
  3. Дописать полученное в начало K.
  4. Пусть M — количество бит, записанных на втором шаге. Перевести M в двоичный вид.
  5. С = С + 1.
  6. Если М не пусто, то повторить алгоритм с шага 2 для полученного М. Иначе перейти на шаг 7.
  7. Записать С штук единиц и 0 в начало кода К (например, если счетчик С = 2, К = 0 011, получить: 110 0 011) — код Левенштейна.

Код Левенштейна для первых 24 чисел будет выглядеть так:

 0 0
 1 10
 2 110 0
 3 110 1
 4 1110 0 00
 5 1110 0 01
 6 1110 0 10
 7 1110 0 11
 8 1110 1 000
 9 1110 1 001
10 1110 1 010
11 1110 1 011
12 1110 1 100
13 1110 1 101
14 1110 1 110
15 1110 1 111
16 11110 0 00 0000
17 11110 0 00 0001
18 11110 0 00 0010
19 11110 0 00 0011
20 11110 0 00 0100
21 11110 0 00 0101
22 11110 0 00 0110
23 11110 0 00 0111
24 11110 0 00 1000

Пусть К — код Левенштейна. Для расшифровки кода Левенштейна необходимо:

  1. Посчитать количество С единичных бит до первого нулевого бита.
  2. Если С = 0, то закодированное значение — 0. Если нет, перейти на шаг 3.
  3. Отбросить из К эти С единиц и следующий за ними 0. Записать новое значение К.
  4. Установить переменную N = 1. Ввести счетчик шагов P = С — 1.
  5. Если P = 0, то N — искомое число. Если нет, перейти на шаг 6.
  6. Считать первые N бит из К. Записать новое значение К без считанных N бит.
  7. К считанной записи добавить 1 в начало (например, считано 00, получено: 100).
  8. Преобразовать полученное значение в десятичную систему (или исходную, если известно) — новое значение переменной N.
  9. P = P — 1. Повторить с шага 5.

При кодировании Левенштейна положительное число всегда на 1 бит больше, чем при омега-кодировании Элиаса. Однако, кодом Левенштейна можно закодировать ноль, в то время как при омега-кодировании Элиаса необходимо переобозначать все цифры таким образом, чтобы ноль представлялся единицей.


Ссылки

Источник


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Код Левенштейна" в других словарях:

  • Экспоненциальный код Голомба — порядка k  это универсальный код, параметризованный целым числом k. Для кодирования неотрицательного числа в экспоненциальный код Голомба порядка k, можно использовать следующий метод: Взять число N в двоичном коде, без последних k цифр.… …   Википедия

  • Расстояние Левенштейна — (также редакционное расстояние или дистанция редактирования) между двумя строками в теории информации и компьютерной лингвистике  это минимальное количество операций вставки одного символа, удаления одного символа и замены одного символа на… …   Википедия

  • Список алгоритмов — Эта страница информационный список. Основная статья: Алгоритм Ниже приводится список алгоритмов, группированный по категориям. Более детальные сведения приводятся в списке структур данных и …   Википедия

  • Программируемые алгоритмы —       Служебный список статей, созданный для координации работ по развитию темы.   Данное предупреждение не устанавл …   Википедия

  • Двоичный алгоритм поиска подстроки — (также bitap algorithm, shift or algorithm)  алгоритм поиска подстроки, использующий тот факт, что в современных компьютерах битовый сдвиг и побитовое ИЛИ являются атомарными операциями. По сути, это примитивный алгоритм поиска с небольшой… …   Википедия

  • Diff — В вычислительной технике diff  утилита сравнения файлов, выводящая разницу между двумя файлами. Эта программа выводит построчно изменения, сделанные в файле (для текстовых файлов). Современные реализации поддерживают также двоичные файлы.… …   Википедия

  • Медаль Ричарда Хэмминга — (англ. Richard W. Hamming Medal)  награда, присуждаемая ежегодно институтом инженеров электротехники и электроники (англ. IEEE) за исключительный вклад в науку об информации, информационные системы и технологии. К награде могут… …   Википедия

  • diff — Эта статья  об утилите для сравнения файлов. О сравнении версий правок в викисреде см. Википедия:Сравнение версий. В вычислительной технике diff  утилита сравнения файлов, выводящая разницу между двумя файлами. Эта… …   Википедия

  • Алгоритм Нидлмана — Алгоритм Нидлмана  Вунша  это алгоритм для выполнения выравнивания двух последовательностей (будем называть их и ), который используется в биоинформатике при построении выравниваний аминокислотных или нуклеотидных последовательностей.… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»