Гамма-, дельта- и омега-код Элиаса
Коды без памяти
Простейшими кодами, на основе которых может выполняться сжатие данных, являются коды без памяти. В коде без памяти каждый символ в кодируемом векторе данных заменяется кодовым словом из префиксного множества двоичных последовательностей или слов.
К примеру, множество двоичных слов
= является префиксным множеством двоичных последовательностей, поскольку, если проверить любую из 30 возможных совместных комбинаций ( , ) из , то видно, что никогда не явится префиксом (или началом) . С другой стороны, множество = не является префиксным множеством двоичных последовательностей, так как последовательность 00 является префиксом (началом) другой последовательности из этого множества — 001. Соответственно, множество может быть множеством кодовых слов для вектора данных в коде без памяти, а — нет.Разделение мантисс и экспонент
Английское название метода - Separate Exponents and Mantissas (SEM).
Цель — сжатие потока R-битовых элементов.
Основная идея состоит в том, чтобы отдельно описывать порядок значения элемента ("экспоненту"
) и отдельно — значащие цифры значения ("мантиссу" ).Значащие цифры начинаются со старшей ненулевой цифры: например, в числе
= = 13 это последние 4 цифры. Порядок числа определяется позицией старшей ненулевой цифры в записи числа. Как и при обычной записи в десятичной системе, он равен числу цифр в записи числа без предшествующих незначащих нулей. В данном примере порядок равен четырем.Методы данной группы являются трансформирующими и поточными, то есть могут применяться даже в том случае, когда объем входных данных заранее не известен. В общем случае скорость работы компрессора (содержащего прямое, «сжимающее» преобразование) равна скорости декомпрессора (реализующего обратное, «разжимающее» преобразование) и зависит только от объема исходных данных. Памяти потребуется всего несколько байтов.
В самом простом случае под запись экспонент и мантисс отводится фиксированное число битов: Е и М. Причем
, , E + M = R, где R — число битов в записи исходного числа.Этот первый из четырех вариантов метода условно обозначим
1. Fixed + Fixed (Фиксированная длина экспоненты — Фиксированная длина мантиссы), а остальные три:
2. Fixed + Variable (Фиксированная длина экспоненты — Переменная длина мантиссы),
3. Variable + Variable (Переменная длина экспоненты — Переменная длина мантиссы) и
4. Variable + Fixed (Переменная длина экспоненты — Фиксированная длина мантиссы).
Есть несколько путей еще большего увеличения степени сжатия. Например, применение хорошо исследованных схем кодирования (Элиаса, Раиса, Голомба, Фибоначчи).