Введение

Схема сжатия данных без потерь

В теории информации энтропийное кодирование (или энтропийное кодирование) – это любой метод сжатия данных без потерь, который стремится приблизиться к нижней границе, установленной теоремой кодирования источника Шеннона. Эта теорема утверждает, что любой метод сжатия данных без потерь должен иметь ожидаемую длину кода, большую или равную энтропии источника. Более точно, теорема кодирования источника гласит, что для любого распределения источника ожидаемая длина кода удовлетворяет условию , где – число символов в кодовом слове, – функция кодирования, – число символов, используемых для формирования выходных кодов, а – вероятность символа источника. Энтропийное кодирование стремится к достижению этой нижней границы. Два наиболее распространенных метода энтропийного кодирования – кодирование Хаффмана и арифметическое кодирование. Если приблизительные характеристики энтропии потока данных известны заранее (особенно при сжатии сигналов), может оказаться полезным более простой статический код. К таким статическим кодам относятся универсальные коды (например, гамма-кодирование Элиаса или кодирование Фибоначчи) и коды Голомба (например, унитарное кодирование или кодирование Райса). С 2014 года компрессоры данных стали использовать семейство асимметричных систем счисления для энтропийного кодирования, что позволяет сочетать степень сжатия арифметического кодирования с вычислительной сложностью, сопоставимой с кодированием Хаффмана.

Энтропия как мера сходства

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