Эту страницу предлагается переименовать в «Асимметричные системы счисления».Пояснение причин и обсуждение — на странице Википедия:К переименованию/8 сентября 2022. Пожалуйста, основывайте свои аргументы на правилах именования статей. Не удаляйте шаблон до подведения итога обсуждения. Переименовать в предложенное название, снять этот шаблон.

Asymmetric numeral systems (ANS, от «асимметричные системы счисления») — семейство методов энтропийного кодирования, изобретённых Ярославом (Яреком) Дудой в 2006 на основе введённой им концепции асимметричных систем счисления. С 2014 года используется для сжатия данных в ряде программ, так как эти методы по степени сжатия дают примерно столь же хорошее аккуратное приближение к оптимальному энтропийному кодированию, как и арифметическое кодирование, но обладают более высоким быстродействием, не уступая по скорости распаковки алгоритмам кодирования Хаффмана; кроме того, существенным является то, что эти методы не защищены патентами и свободны к использованию, так как создание и распространение свободной альтернативы арифметическому кодированию являлось целью автора.

Концепция асимметричных систем счисления

[править | править код]

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

В вычислительной технике принято представлять информацию в виде потока битов, и добавление новой информации — символа — происходит путём приписывания к числу в конце соответствующих коду символа цифр — новых младших разрядов. При подходе с обычными позиционными системами счисления любому символу соответствует одинаковое количество цифр. Это хорошо подходит в случае, когда вероятность встретить разные символы одинакова.

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

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

Литература

[править | править код]