Данные (без потерь) можно сжимать только убирая ту их часть, которая не несёт дополнительной информации. Понятие количества информации тесно связано с понятием энтропии информации. Чем больше информационная энтропия, тем меньше возможности по сжатию соответствующих данных, поскольку уменьшить объем сообщения, сделав его меньше информационной энтропии этого сообщения, невозможно без искажений.
Энтропия вообще характеризует степень беспорядка в системе. Значит, информации в хаосе больше, чем в регулярных данных. Если, например, нужно сжать однотонную картинку, достаточно сохранить только тон и размеры картинки. Для сохранения изображения с большим количеством деталей требуется намного больше места на диске. Совершенно неавтокоррелированный сигнал вообще нельзя сжать без потерь. Такой странный парадокс: не несущий нам пользы сигнал (некоррелированный шум) весит больше всего. Гармонический (периодический) сигнал почти ничего не весит с точки зрения теории информации. И в этом случае он и для нас выглядит как "пустой" сигнал, без полезной информации. Полезная, имеющая для нас смысл информация в смысле энтропии находится где-то между этими двумя случаями.
В linux есть виртуальный входной поток данных urandom, с которого командой "cat /dev/urandom | tr -dc 'a-z'" можно получить поток случайных латинских букв. Не буду здесь обсуждать "идеальность" этой случайности, но выглядит довольно непредсказуемо. Важно, что такое сообщение не будет поддаваться сжатию, будет много весить и довольно бесполезным.
Почему для этого сообщения энтропия такая высокая? Фактически, если долго наблюдать за абсолютно случайным источником, можно получить из него практически любую информацию. Поток urandom на моем компьютере выдает не меньше 10 миллионов случайных символов в секунду, и при этом буквосочетание "rad" впервые встречается в этом потоке через 78 миллисекунд, буквосочетание "radi" обнаруживается в бессмысленном потоке информации с очень высокой энтропией через 12 секунд и 896 миллисекунд, наконец, слово "radio" (time grep "radio" < /dev/urandom | tr -dc 'a-z') поток urandom не выдал даже через час ожидания (ноубук нагрелся знатно, пришлось остановить процесс). Видно, что время выдачи увеличивается на порядки при увеличении строки даже на один символ. Вряд ли я смогу провести такой эксперимент, но, ожидая очень долго, можно получить в таком потоке какую-нибудь полезную научную статью:)
Информация, хоть и оценивается в цифровой технике по мере энтропии, является полезной для нас при некоторых "промежуточных" значениях энтропии: меньше максимальной для данного алфавита и больше нуля. Но, при этом, сжатие информации ограничено значением соответствующей энтропии.
Подписывайтесь и оставляйте комментарии, если неравнодушны к теории информации, от ваших комментариев, возможно, зависит, куда я подамся в следующих статьях:)