28.04.2023

Move-To-Front


Перемещение к началу (англ. move-to-front, MTF) — преобразование для кодирования данных (обычно потока байтов), разработанное для улучшения производительности энтропийного кодирования. При хорошей реализации оно достаточно быстро для включения как дополнительный шаг в алгоритмах сжатия данных. Также может использоваться совместно с BWT, преобразованием Барроуза — Уилера.

Алгоритм

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

Алгоритм впервые описан в работе [1]. Изначально алгоритм назывался «стопка книг» («book stack»). История разработки алгоритма рассказана в [2].

Часто используется при преобразовании байтов. Изначально каждое возможное значение байта записывается в список, в ячейку с номером, равным значению байта, т.е. (0, 1, 2, 3, …, 255). В процессе обработки данных этот список изменяется. Первый обработанный символ заменяется самим собой, после чего элемент, соответствующий этому символу, перемещается в голову списка (сдвигая элементы с 0 по своё положение на 1 вправо). Последующие символы кодируются номером элемента, содержащего их значение. После кодирования каждого символа эти элементы также продвигаются к голове списка.

Пример

Рассмотрим работу алгоритма на алфавите из английских букв (пронумеруем их с нуля). Возьмём слово

bananaaa

b - записан в элементе с номером 1. После передвигания b в голову списка b станет нулевым, а а — 1-м

Оно будет преобразовано в

1,1,13,1,1,1,0,0

Алгоритмы, использующие MTF

  • bzip2

Похожие новости:

string (C++)

string (C++)
string — класс с методами и переменными для организации работы со строками в языке программирования C++. Он включён в стандартную библиотеку C++. Название образовано от имени строчного типа данных

Теория кодирования

Теория кодирования
Теория кодирования — наука о свойствах кодов и их пригодности для достижения поставленной цели. Кодирование в рамках теории рассматривается исключительно как процесс преобразования данных из формы,

Суффиксный массив

Суффиксный массив
Суффиксный массив — лексикографически отсортированный массив всех суффиксов строки. Эта структура данных была разработана Джином Майерсом и Уди Манбером как более экономная альтернатива суффиксному

353 (число)

353 (число)
353 (триста пятьдесят три) — натуральное число, расположенное между числами 352 и 354. 353 день в году — 19 декабря (в високосный год — 18 декабря)[значимость факта?]. В математике 353
Комментариев пока еще нет. Вы можете стать первым!

Добавить комментарий!

Ваше Имя:
Ваш E-Mail:
Введите два слова, показанных на изображении: *
Популярные новости
Захватывающая мощь брендированной ленты
Захватывающая мощь брендированной ленты
В мире, где визуальная привлекательность стала важнейшим инструментом привлечения внимания,...
Как бывают уличные урны: от металлических до деревянных
Как бывают уличные урны: от металлических до деревянных
Уличные урны, урны металлические, или уличные мусорные контейнеры, являются неотъемлемой частью...
Преимущества аренды КАМАЗа для перевозки стройматериалов
Преимущества аренды КАМАЗа для перевозки стройматериалов
КАМАЗы в наше время являются одним из самых популярных видов спецтехники, которая применяется для...
Все новости