Связь энтропии со скоростью сжатия без потерь

Из теоремы кодирования исходного кода Шеннона мы знаем, что энтропия сжатой строки ограничена энтропия исходной строки так:

H(X) <= L < H(X) + 1/N 

где H (X) - энтропия исходной строки, N - длина исходной строки, а L - ожидаемая длина сжатой строки.

Это обязательно означает, что существует ограничение на сжатие без потерь.

Что я хотел бы знать:

  • Можем ли мы напрямую связать энтропию с некоторой ожидаемой степенью сжатия?

  • Можем ли мы использовать энтропию, чтобы найти верхнюю границу степени сжатия?


person Landon    schedule 26.02.2009    source источник


Ответы (4)


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

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

person Yes - that Jake.    schedule 26.02.2009

Теорема Шеннона определяется в терминах случайных данных и вероятностей. Точно так же энтропия строки определяется только для случайных строк - энтропия является свойством распределения, а не самих строк. Итак, мы можем неформально переформулировать теорему Шеннона следующим образом:

Если вы случайным образом выберете строку из заданного распределения вероятностей, то наилучшая средняя степень сжатия, которую мы можем получить для строки, будет определяться степенью энтропии распределения вероятностей.

Учитывая любую случайную строку, я могу легко написать алгоритм сжатия, который сжимает эту строку до 1 бита, но мой алгоритм обязательно увеличит длину некоторых других строк. Мой алгоритм сжатия работает следующим образом:

  1. Если входная строка равна некоторой заранее выбранной случайной строке, на выходе будет 1-битная строка "0".
  2. В противном случае на выходе будет N + 1-битовая строка «1», за которой следует входная строка.

Соответствующий алгоритм декомпрессии:

  1. Если на входе "0", на выходе будет наша предыдущая предварительно выбранная случайная строка.
  2. В противном случае на выходе будет все, кроме первого входного бита.

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

Если у нас есть заданное вероятностное распределение строк, мы можем вычислить коэффициент энтропии распределения, а затем, если случайным образом выбрать строку в соответствии с распределением и попытаться сжать ее, используя любое , относительный размер сжатой строки в среднем никогда не будет меньше скорости энтропии. Об этом говорит теорема Шеннона.

person Adam Rosenfield    schedule 26.02.2009
comment
очень хорошо сказано, но я не совсем понял аргумент, слишком много строк - person Tony Lee; 24.03.2009
comment
Да, очень хорошо сказано, очень неприятно находить так много ответов / вопросов о переполнении стека, которые рассматривают энтропию как функцию данных - это не функция вероятностей. - person samthebest; 15.09.2013

да. В английском языке коэффициент энтропии часто указывается как 1,5 бита на символ (плюс-минус). Типичные кодировки используют 8 бит на символ. Таким образом, максимально сжатый текст должен составлять 1,5 / 8 (~ 19%) размера оригинала. Фактические результаты для текстовой версии книги Джейн Остин «Гордость и предубеждение»: orig = 701K, bzip2 = 178K, для ~ 25%.

person dwc    schedule 26.02.2009
comment
Чтобы получить актуальные результаты на английском языке, используйте тест Matt Mahoney для сжатия большого текста по адресу cs.fit.edu/~mmahoney/compression/text.html очень интересно. - person schnaader; 26.02.2009

Да! Я думаю, что этот документ укажет вам правильное направление.

ETA Похоже, вам нужно быть членом IEEE, чтобы читать настоящую статью. Если бы кто-то мог найти общедоступный ресурс (или объяснить здесь математику), это, конечно, было бы намного лучше!

person Eric Petroelje    schedule 26.02.2009