Как стать автором
Обновить

Комментарии 3

Во всех описаниях мне не хватает инормации, насколько это выгодно? Для кодирования и декодирования требуется время. Плюс. Т.к. у нас передача запись, передача и чтение в байтах, то сразу понимаю, что сокращение в битах, а передача в байтах требует доп. усилий. Второе - не понятно, как опрделять вероятность немецкой "a" и русской "а"? Вначале прочитать весь документ? А откуда у другой стороны таблица вероятностей? Надо с данными посылать? Но ведь это увиличивает кол-во байтов для пересылки.

Скорости кодировки/декодировки + таблица вероятностей (статистическая или динамическая) vs. простое кол-во оригинальных байтов, нужных для сохранения? Так что лучше?

Посмотрел в вики. Там стоит

Кодирование Хаффмана широко применяется при сжатии данных, в том числе при сжатии фото- и видеоизображений (JPEGMPEG), в популярных архиваторах (PKZIPLZH и др.), в протоколах передачи данных HTTP (Deflate), MNP5 и MNP7 и других.

Иду и пытаюсь узнать, как используется этот код и там в JPEG (en) стоит:

Entropy coding is a special form of lossless data compression. It involves arranging the image components in a "zigzag" order employing run-length encoding (RLE) algorithm that groups similar frequencies together, inserting length coding zeros, and then using Huffman coding on what is left.

The JPEG standard also allows, but does not require, decoders to support the use of arithmetic coding, which is mathematically superior to Huffman coding. However, this feature has rarely been used, as it was historically covered by patents requiring royalty-bearing licenses, and because it is slower to encode and decode compared to Huffman coding. Arithmetic coding typically makes files about 5–7% smaller

т.е. он не используется, потому что лицензирован, но самое важное - медленный.

Может быть на системном уровне - да, но вроде на юзерном уровне с ASCII не работают, только Unicode. На весь unicode таблиц вероятностей не наберёшся. У вас есть инфа, где Код Хаффмана используется вообще?

Алгоритм Лемпеля — Зива — Велча - тут понятно, что есть и выгода и скорость удовлетворяемая и работает с любыми видами данных, а не только с ASCII, и что он имеет практическое применение. Хотя патентов там тоже не меньше. Но работает. Но вот Код Хаффмана? Спасибо за инфы, если такие будут.

т.е. он не используется, потому что лицензирован, но самое важное - медленный.

В JPEG изначально делали два метода кодирования: Хаффмана и арифметический. Первый быстрый, второй позволяет получить большее сжатие. Арифметическое кодирование в те времена еще покрывалось патентами, поэтому JPEG использовали только с кодированием Хаффмана. В 2009-м патент на арифметическое кодирование истёк, но его так и не стали широко использовать, потому что оно всё еще не поддерживается всем софтом и тем более железом.

Короткие коды Хаффмана моментально декодируются по таблице (lookup table). Используется повсеместно, например в .zip и .rar.

Сейчас есть rANS как компромисс между арифметическим кодированием и кодом Хаффмана. Последний самый быстрый, но в некоторых сценариях он не дотягивает по сжатию. Первый имеет хороший коэффициент сжатия и достаточно быстрый.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории