Введение
Ежедневно по Интернету перемещается более 9 миллиардов гигабайт информации, поэтому исследователи постоянно ищут новые способы сжатия данных в более мелкие пакеты. Передовые методы сосредоточены на подходах с потерями, которые обеспечивают сжатие путем преднамеренной «потери» информации из передачи. Google, например, недавно представила стратегию с потерями, когда компьютер-отправитель пропускает детали изображения, а компьютер-получатель использует искусственный интеллект, чтобы угадать недостающие части. Даже Netflix использует подход с потерями, снижая качество видео всякий раз, когда компания обнаруживает, что пользователь смотрит на устройстве с низким разрешением.
Напротив, в настоящее время проводится очень мало исследований по стратегиям без потерь, при которых передача становится меньше, но не жертвуется содержанием. Причина? Подходы без потерь уже удивительно эффективны. Они поддерживают все, от стандарта изображений JPEG до вездесущей утилиты PKZip. А все из-за аспиранта, который просто искал выход из жесткого выпускного экзамена.
Семьдесят лет назад профессор Массачусетского технологического института по имени Роберт Фано предложил студентам своего класса по теории информации выбор: сдать традиционный выпускной экзамен или улучшить передовой алгоритм сжатия данных. Фано мог сообщить или не сообщить своим ученикам, что он был автором этого существующего алгоритма или что он годами искал улучшение. Что мы знаем, так это то, что Фано предложил своим ученикам следующую задачу.
Рассмотрим сообщение, состоящее из букв, цифр и знаков препинания. Простым способом кодирования такого сообщения было бы присвоение каждому символу уникального двоичного числа. Например, компьютер может представить букву A как 01000001, а восклицательный знак как 00100001. В результате получаются коды, которые легко разобрать — каждые восемь цифр или битов соответствуют одному уникальному символу — но ужасно неэффективно, потому что одно и то же число двоичных цифр используется как для обычных, так и для необычных записей. Лучшим подходом было бы что-то вроде азбуки Морзе, где частая буква E представлена всего одной точкой, тогда как менее распространенная Q требует более длинного и трудоемкого тире-тире-точка-тире.
Но азбука Морзе тоже неэффективна. Конечно, некоторые коды короткие, а другие длинные. Но поскольку длина кода различается, сообщения азбукой Морзе нельзя понять, если они не включают короткие периоды тишины между передачей каждого символа. Действительно, без этих дорогостоящих пауз получатели не смогли бы отличить сообщение Морзе тире точка-тире-точка точка-точка тире точка («банально») от тире точка-тире-точка точка-точка-тире точка («правда» ).
Фано решил эту часть проблемы. Он понял, что может использовать коды различной длины без дорогостоящих пробелов, если он никогда не использует один и тот же набор цифр как в качестве полного кода, так и в начале другого кода. Например, если буква S была настолько распространена в определенном сообщении, что Фано присвоил ей очень короткий код 01, то никакая другая буква в этом сообщении не будет кодироваться чем-либо, начинающимся с 01; такие коды, как 010, 011 или 0101, будут запрещены. В результате закодированное сообщение можно было читать слева направо без какой-либо двусмысленности. Например, когда букве S присвоено значение 01, букве A присвоено значение 000, букве M присвоено значение 001, а букве L присвоено значение 1, сообщение 0100100011 может быть немедленно переведено в слово «маленький», даже если L представлено единицей. цифра, S по две цифры, а остальные буквы по три каждая.
Чтобы на самом деле определить коды, Фано построил бинарные деревья, поместив каждую необходимую букву в конец визуальной ветви. Затем код каждой буквы определялся путем сверху вниз. Если путь разветвлялся налево, Фано добавлял 0; правые ветви получили 1. Древовидная структура позволила Фано избежать этих нежелательных наложений: как только Фано поместил букву в дерево, эта ветвь закончилась, а это означало, что ни один будущий код не мог начинаться таким же образом.
Введение
Чтобы решить, какие буквы куда поместить, Фано мог тщательно протестировать все возможные шаблоны на предмет максимальной эффективности, но это было бы непрактично. Поэтому вместо этого он разработал аппроксимацию: для каждого сообщения он упорядочивал соответствующие буквы по частоте, а затем назначал буквы ветвям так, чтобы буквы слева в любой заданной паре ветвей использовались в сообщении примерно столько же раз, сколько и первые. буквы справа. Таким образом, часто используемые символы попадут на более короткие и менее плотные ветки. Небольшое количество высокочастотных букв всегда будет уравновешивать большее количество низкочастотных.
Введение
Результатом стало удивительно эффективное сжатие. Но это было только приближение; должна была существовать лучшая стратегия сжатия. Поэтому Фано бросил вызов своим ученикам, чтобы найти его.
Фано строил свои деревья сверху вниз, сохраняя как можно большую симметрию между парными ветвями. Его ученик Дэвид Хаффман перевернул процесс с ног на голову, построив те же типы деревьев, но снизу вверх. Идея Хаффмана заключалась в том, что, что бы ни случилось, в эффективном коде два наименее распространенных символа должны иметь два самых длинных кода. Итак, Хаффман определил два наименее распространенных символа, сгруппировал их вместе в виде ветвящейся пары, а затем повторил процесс, на этот раз ища два наименее распространенных элемента среди оставшихся символов и пары, которую он только что построил.
Рассмотрим сообщение, в котором подход Фано дает сбои. В «schoolroom» O встречается четыре раза, а S/C/H/L/R/M — по одному разу. Подход Фано к уравновешиванию начинается с назначения буквы O и еще одной буквы левой ветви, при этом пять общих использований этих букв уравновешивают пять появлений остальных букв. Результирующее сообщение требует 27 бит.
Хаффман, напротив, начинает с двух необычных букв — скажем, R и M — и группирует их вместе, рассматривая пару как одну букву.
Введение
Затем его обновленная диаграмма частот предлагает ему четыре варианта: O, который появляется четыре раза, новый комбинированный узел RM, который функционально используется дважды, и отдельные буквы S, C, H и L. Хаффман снова выбирает два наименее распространенных варианта, соответствующие (скажем) H с L.
Введение
Диаграмма снова обновляется: O по-прежнему имеет вес 4, RM и HL теперь имеют каждый вес 2, а буквы S и C стоят отдельно. Хаффман продолжает с этого момента, на каждом этапе группируя два наименее частых варианта, а затем обновляя как дерево, так и диаграмму частот.
Введение
В конечном итоге «учебная комната» становится 11101111110000110110000101, что на один бит меньше, чем в нисходящем подходе Фано.
Введение
Один бит может показаться не таким уж большим, но даже небольшая экономия значительно возрастает при масштабировании в миллиарды гигабайт.
Действительно, подход Хаффмана оказался настолько мощным, что сегодня почти каждая стратегия сжатия без потерь использует идеи Хаффмана полностью или частично. Нужен PKZip для сжатия документа Word? Первый шаг включает в себя еще одну умную стратегию для выявления повторения и, таким образом, сжатия размера сообщения, но второй шаг состоит в том, чтобы взять полученное сжатое сообщение и пропустить его через процесс Хаффмана. Сохранить изображение в формате JPEG? Ваш компьютер сначала переводит изображение в текстовое представление, а затем снова использует кодировку Хаффмана для сжатия этого текста.
Неплохо для проекта, изначально мотивированного желанием аспиранта пропустить выпускной экзамен.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- ПлатонАйСтрим. Анализ данных Web3. Расширение знаний. Доступ здесь.
- Чеканка будущего с Эдриенн Эшли. Доступ здесь.
- Покупайте и продавайте акции компаний PREIPO® с помощью PREIPO®. Доступ здесь.
- Источник: https://www.quantamagazine.org/how-lossless-data-compression-works-20230531/
- :имеет
- :является
- :нет
- :куда
- ][п
- $UP
- 000
- 1
- 27
- 9
- a
- Достигать
- на самом деле
- добавленный
- снова
- тому назад
- алгоритм
- Все
- в одиночестве
- уже
- всегда
- Двусмысленность
- среди
- an
- и
- Другой
- любой
- все
- появиться
- Выступления
- появляется
- подхода
- подходы
- МЫ
- искусственный
- искусственный интеллект
- AS
- назначенный
- At
- автор
- избежать
- Плохой
- Баланс
- Балансировка
- BE
- , так как:
- становится
- было
- начинать
- не являетесь
- Лучшая
- между
- миллиард
- миллиарды
- Немного
- изоферменты печени
- Дно
- Филиал
- ветви
- Строительство
- построенный
- но
- by
- CAN
- не могу
- вызов
- вызов
- персонаж
- символы
- График
- выбор
- выбор
- класс
- код
- закодированы
- сочетании
- Общий
- Компания
- полный
- компьютер
- постоянно
- продолжается
- контраст
- дорогостоящий
- может
- В настоящее время
- передовой
- Dash
- данным
- Давид
- день
- решать
- определенный
- подробнее
- Определять
- развитый
- устройство
- цифры
- выделить
- do
- документ
- DOT
- вниз
- Капли
- e
- каждый
- легко
- Эффективный
- затрат
- эффективный
- еще
- конец
- чрезвычайно
- Даже
- Каждая
- каждый день
- многое
- экзамен
- пример
- существовать
- существующий
- чрезвычайно
- Фальтерс
- окончательный
- Найдите
- Во-первых,
- Фокус
- после
- Что касается
- 4
- частота
- частое
- часто
- от
- функционально
- будущее
- данный
- Go
- выпускник
- Группы
- Расти
- было
- происходит
- Есть
- he
- Высокая частота
- его
- его
- Как
- HTTPS
- охота
- идентифицированный
- идентифицирующий
- if
- изображение
- немедленно
- улучшать
- улучшение
- in
- включают
- неэффективное
- информация
- сообщил
- понимание
- пример
- вместо
- Институт
- Интеллекта
- намеренно
- Интернет
- в
- IT
- ЕГО
- всего
- Знать
- больше
- ведущий
- наименее
- оставил
- Меньше
- письмо
- такое как
- мало
- Длинное
- дольше
- искать
- сделанный
- журнал
- Сохранение
- Массачусетс
- Массачусетский Технологический Институт
- согласование
- максимальный
- Май..
- смысл
- сообщение
- Сообщения
- может быть
- отсутствующий
- БОЛЕЕ
- мотивированные
- много
- Названный
- почти
- необходимо
- Необходимость
- нуждающихся
- Netflix
- никогда
- Новые
- нет
- узел
- сейчас
- номер
- номера
- of
- от
- предложенный
- Предложения
- on
- консолидировать
- ONE
- те,
- только
- Опции
- or
- первоначально
- Другое
- Другое
- внешний
- пакеты
- пара
- в паре
- часть
- особый
- части
- путь
- шаблон
- периодов
- Выборы
- размещение
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- Точка
- возможное
- мощностью
- мощный
- Проблема
- процесс
- Профессор
- Проект
- Читать
- реализованный
- причина
- получение
- недавно
- получатели
- соответствующие
- осталось
- повторный
- представлять
- представление
- представленный
- требуется
- исследованиям
- исследователи
- результат
- в результате
- Итоги
- правую
- РОБЕРТ
- грубо
- Run
- s
- то же
- экономия
- сообщили
- Во-вторых
- отправка
- Короткое
- должен
- Молчание
- просто
- одинарной
- Размер
- небольшой
- меньше
- So
- Software
- некоторые
- удалось
- Звук
- пространства
- стоять
- стандарт
- Начало
- и политические лидеры
- начинается
- Шаг
- По-прежнему
- магазин
- простой
- стратегий
- Стратегия
- Структура
- "Студент"
- Студенты
- вещество
- такие
- взять
- снижения вреда
- Технологии
- чем
- который
- Ассоциация
- Их
- тогда
- теория
- Там.
- тем самым
- они
- этой
- те
- хоть?
- три
- Через
- время
- раз
- в
- сегодня
- вместе
- слишком
- топ
- Всего
- традиционный
- Путешествие
- лечения
- дерево
- Деревья
- Оказалось
- Дважды
- два
- Типы
- вездесущий
- Обычный
- понимать
- созданного
- представила
- обновление
- Updates
- обновление
- использование
- используемый
- Информация о пользователе
- использования
- утилита
- Видео
- законопроект
- наблюдение
- Путь..
- способы
- we
- WebP
- вес
- были
- Что
- любой
- когда
- когда бы ни
- который
- КТО
- все
- без
- Word
- работает
- бы
- лет
- еще
- ВАШЕ
- зефирнет