Тем не менее эта книга будет намного легче восприниматься зрительно, если не заставлять издателей экономить на краске, пропуская каждый пятый знак. Правильные слова мозгу обрабатывать намного проще, потому что именно это он обучен делать. Однако если вы хотите передать битовую строку, вместо того чтобы обрабатывать эти данные при помощи какого-то приложения, эффективнее будет переслать более короткую последовательность нулей и единиц. Уже на заре развития теории информации такие ее пионеры, как Клод Шеннон, поняли, что избыточность информации дает возможность закодировать сигнал с использованием меньшего числа битов. Мало того, Шеннон вывел формулу, позволяющую вычислить, насколько короче код может получиться из данного сигнала для данного уровня избыточности.
Избыточность принципиально важна, потому что сообщения без нее невозможно сжать без потери информации. Доказательство основано на простом подсчете. Предположим, например, что нас интересуют сообщения длиной 10 бит, такие как 1001110101. Существует ровно 1024 таких битовых строки. Предположим, мы хотим сжать 10 бит данных в 8-битную строку. Таких строк существует ровно 256. Так что сообщений у нас имеется вчетверо больше, чем сжатых строк, и невозможно каждой 10-битной строке поставить в соответствие 8-битную строку так, чтобы разным 10-битным строкам соответствовали разные 8-битные строки. Если каждая 10-битная строка может встретиться с равной вероятностью, то выясняется, что у нас нет умного способа обойти это ограничение. Однако если некоторые из 10-битных строк встречаются очень часто, а остальные очень редко, мы можем выбрать код, который обозначит короткими битовыми строками (скажем, по 6 бит) самые часто встречающиеся сообщения и более длинными строками (может быть, по 12 бит) – редкие сообщения. 12-битных строк существует много, так что их недостаток нам не грозит. Всякий раз, когда встречается редкое сообщение, оно добавляет два бита к длине передачи, зато когда встречается частое сообщение, оно убавляет четыре бита. При подходящих вероятностях из сообщений будет отнято больше бит, чем добавлено.
Вокруг подобных методов выросла целая отрасль математики – теория кодирования. В общем случае эти методы куда тоньше, чем описанный выше, и обычно в них для определения кодов используются свойства абстрактной алгебры. Это не должно слишком удивлять: в главе 5 мы видели, что, по существу, коды – это математические функции и что особенно полезны здесь функции теории чисел. Там целью была секретность, здесь цель – сжатие данных, но общий принцип одинаков в обоих случаях. Алгебра имеет отношение к
Сжатие данных, а следовательно, и сжатие изображений, использует избыточность для создания кодов, укорачивающих данные конкретного типа. Иногда данные сжимаются «без потерь»: в этом случае первоначальную информацию можно восстановить по сжатой версии в точности. Иногда данные теряются, и тогда восстановленный вариант лишь приближение первоначальных данных. Это было бы плохо, скажем, для банковских счетов, но зачастую вполне годится для изображений: главное – устроить все так, чтобы приближенный вариант по-прежнему выглядел для человеческого глаза похожим на первоначальное изображение. Тогда информация, которая теряется безвозвратно, вообще не имеет значения.
Изображения в реальном мире по большей части избыточны. Отпускные фотки часто содержат большие блоки голубого неба, нередко примерно одинакового оттенка по всей площади, так что множество пикселей с одинаковым цветовым кодом может быть заменено двумя парами координат для противоположных углов прямоугольника и коротким кодовым сообщением типа «окрасить
Я старомоден, то есть пользуюсь фототехникой, которой – какой ужас! – уже около 10 лет. Возмутительно! Я умею обращаться с техникой и вполне могу снять что-то с помощью смартфона, но это не превратилось в рефлекс, и в серьезные путешествия, такие как сафари с тиграми в национальных парках Индии, я беру с собой маленькую автоматическую цифровую камеру. Она создает файлы изображений с такими названиями, как IMG_0209.JPG. Идентификатор JPG свидетельствует о том, что файлы сохранены в формате JPEG, по первым буквам названия Joint Photographic Expert Group, и указывает на систему сжатия данных. JPEG – отраслевой стандарт, хотя с годами он получил некоторое развитие и теперь существует в нескольких формально разных формах.