Вступ
Щодня Інтернетом подорожує понад 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. Структура дерева дозволила Фано уникнути цих небажаних накладень: як тільки Фано розмістить літеру в дереві, ця гілка закінчуватиметься, тобто жоден майбутній код не зможе починатися так само.
Вступ
Щоб вирішити, які літери куди міститимуться, Фано міг би вичерпно перевірити всі можливі шаблони для досягнення максимальної ефективності, але це було б непрактично. Тож замість цього він розробив наближення: для кожного повідомлення він упорядковував відповідні літери за частотою, а потім призначав літери гілкам так, щоб літери зліва в будь-якій заданій парі гілок використовувалися в повідомленні приблизно таку ж кількість разів, як і літери праворуч. Таким чином, часто використовувані символи потраплятимуть на коротші, менш щільні гілки. Невелика кількість високочастотних літер завжди врівноважує більшу кількість низькочастотних.
Вступ
Результатом було надзвичайно ефективне стиснення. Але це було лише наближення; мала існувати краща стратегія стиснення. Тож Фано викликав своїх студентів знайти його.
Фано будував свої дерева зверху вниз, зберігаючи якомога більшу симетрію між парними гілками. Його учень Девід Хаффман перевернув процес з ніг на голову, будуючи ті самі типи дерев, але знизу вгору. Хаффман прийшов до висновку, що, що б не трапилося, в ефективному коді два найменш поширених символи повинні мати два найдовші коди. Отже, Хаффман визначив два найменш поширених символи, згрупував їх разом як розгалужену пару, а потім повторив процес, цього разу шукаючи два найменш поширені записи серед символів, що залишилися, і пари, яку він щойно створив.
Розглянемо повідомлення, де підхід Фано дає збої. У «шкільній кімнаті» O з’являється чотири рази, а S/C/H/L/R/M кожен з’являється по одному разу. Балансуючий підхід Фано починається з присвоєння О та ще однієї літери лівій гілці, причому п’ять загальних використань цих літер урівноважують п’ять появ решти літер. Отримане повідомлення вимагає 27 біт.
Хаффман, навпаки, починає з двох незвичайних літер — скажімо, R і M — і групує їх разом, розглядаючи пару як одну букву.
Вступ
Потім його оновлена частотна діаграма пропонує йому чотири варіанти: O, що з’являється чотири рази, новий комбінований вузол RM, який функціонально використовується двічі, і окремі літери S, C, H і L. Хаффман знову вибирає два найменш поширених варіанти, відповідаючи (скажи) H з L.
Вступ
Діаграма знову оновлюється: O все ще має вагу 4, RM і HL тепер мають вагу 2, а літери S і C стоять окремо. Хаффман продовжує звідти, на кожному кроці групуючи два найменш часті варіанти, а потім оновлюючи як дерево, так і діаграму частот.
Вступ
Зрештою, «шкільна кімната» стає 11101111110000110110000101, трохи позбавляючи підходу Фано «зверху вниз».
Вступ
Один біт може здатися невеликим, але навіть невеликі заощадження значно збільшуються при масштабуванні мільярдами гігабайтів.
Дійсно, підхід Хаффмана виявився настільки потужним, що сьогодні майже кожна стратегія стиснення без втрат повністю або частково використовує розуміння Хаффмана. Потрібен PKZip для стиснення документа Word? Перший крок включає в себе ще одну розумну стратегію для виявлення повторів і, таким чином, стиснення розміру повідомлення, але другий крок полягає в тому, щоб взяти результуюче стиснене повідомлення та пропустити його через процес Хаффмана. Зберегти зображення як JPEG? Ваш комп’ютер спочатку перетворює зображення на текстове подання, а потім знову використовує кодування Хаффмана для стиснення цього тексту.
Непогано для проекту, спочатку мотивованого бажанням аспіранта пропустити випускний іспит.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoAiStream. Web3 Data Intelligence. Розширення знань. Доступ тут.
- Карбування майбутнього з Адріенн Ешлі. Доступ тут.
- Купуйте та продавайте акції компаній, які вийшли на IPO, за допомогою PREIPO®. Доступ тут.
- джерело: https://www.quantamagazine.org/how-lossless-data-compression-works-20230531/
- : має
- :є
- : ні
- :де
- ][стор
- $UP
- 000
- 1
- 27
- 9
- a
- Achieve
- насправді
- доданий
- знову
- назад
- алгоритм
- ВСІ
- тільки
- вже
- завжди
- Неоднозначність
- серед
- an
- та
- Інший
- будь-який
- все
- з'являтися
- виступи
- з'являється
- підхід
- підходи
- ЕСТЬ
- штучний
- штучний інтелект
- AS
- призначений
- At
- автор
- уникнути
- поганий
- Balance
- Балансування
- BE
- оскільки
- стає
- було
- починати
- буття
- Краще
- між
- Мільярд
- мільярди
- Біт
- обидва
- дно
- Філія
- гілки
- Створюємо
- побудований
- але
- by
- CAN
- не може
- виклик
- виклик
- характер
- символи
- Графік
- вибір
- вибір
- клас
- код
- закодований
- комбінований
- загальний
- компанія
- повний
- комп'ютер
- постійно
- триває
- контрастність
- дорого
- може
- В даний час
- передовий
- Тире
- дані
- Девід
- день
- вирішувати
- певний
- деталі
- Визначати
- розвиненою
- пристрій
- цифр
- розрізняти
- do
- документ
- DOT
- вниз
- краплі
- e
- кожен
- легко
- Ефективний
- ефективність
- ефективний
- ще
- кінець
- надзвичайно
- Навіть
- Кожен
- кожен день
- все
- іспит
- приклад
- існувати
- існуючий
- надзвичайно
- хитається
- остаточний
- знайти
- Перший
- Сфокусувати
- після
- для
- чотири
- частота
- частий
- часто
- від
- функціонально
- майбутнє
- даний
- Go
- випускник
- Групи
- Рости
- було
- відбувається
- Мати
- he
- голова
- Висока частота
- його
- його
- Як
- HTTPS
- Полювання
- ідентифікований
- ідентифікує
- if
- зображення
- негайно
- удосконалювати
- поліпшення
- in
- включати
- неефективний
- інформація
- повідомив
- розуміння
- екземпляр
- замість
- Інститут
- Інтелект
- навмисно
- інтернет
- в
- IT
- ЙОГО
- просто
- Знати
- більше
- провідний
- найменш
- залишити
- менше
- лист
- як
- трохи
- Довго
- довше
- шукати
- made
- журнал
- Підтримка
- Массачусетс
- Массачусетський технологічний інститут
- узгодження
- максимальний
- Може..
- сенс
- повідомлення
- повідомлення
- може бути
- відсутній
- більше
- мотивовані
- багато
- Названий
- майже
- необхідно
- Необхідність
- нужденних
- Netflix
- ніколи
- Нові
- немає
- вузол
- зараз
- номер
- номера
- of
- від
- запропонований
- Пропозиції
- on
- один раз
- ONE
- ті,
- тільки
- Опції
- or
- спочатку
- Інше
- інші
- з
- пакети
- пара
- парний
- частина
- приватність
- частини
- шлях
- Викрійки
- періодів
- Вибори
- розміщення
- plato
- Інформація про дані Платона
- PlatoData
- точка
- це можливо
- влада
- потужний
- Проблема
- процес
- Професор
- проект
- якість
- Читати
- зрозумів,
- причина
- отримання
- нещодавно
- одержувачів
- доречний
- решті
- повторний
- представляти
- подання
- представлений
- Вимагається
- дослідження
- Дослідники
- результат
- в результаті
- результати
- право
- РОБЕРТ
- грубо
- прогін
- s
- то ж
- Економія
- say
- другий
- відправка
- Короткий
- Повинен
- Мовчання
- просто
- один
- Розмір
- невеликий
- менше
- So
- Софтвер
- деякі
- що в сім'ї щось
- Звучати
- пробіли
- стояти
- standard
- старт
- почалася
- починається
- Крок
- Як і раніше
- зберігати
- просто
- стратегії
- Стратегія
- структура
- студент
- Студентам
- речовина
- такі
- Приймати
- методи
- Технологія
- ніж
- Що
- Команда
- Їх
- потім
- теорія
- Там.
- тим самим
- вони
- це
- ті
- хоча?
- три
- через
- час
- times
- до
- сьогодні
- разом
- занадто
- топ
- Усього:
- традиційний
- Подорож
- лікування
- дерево
- Дерева
- Опинився
- Двічі
- два
- Типи
- повсюдний
- Uncommon
- зрозуміла
- створеного
- представила
- оновлений
- Updates
- оновлення
- використання
- використовуваний
- користувач
- використовує
- утиліта
- Відео
- було
- спостереження
- шлях..
- способи
- we
- webp
- вага
- були
- Що
- будь
- коли
- коли б ні
- який
- ВООЗ
- всі
- з
- без
- слово
- працює
- б
- років
- ще
- вашу
- зефірнет