Алгоритм сжатия данных с использованием неравномерных кодов работает за счёт замены часто встречающихся данных короткими кодовыми словами, а редких — длинными. nsportal.ru
Один из таких алгоритмов — Хаффмана. el-ed.ru habr.com Он подходит для сжатия текстовых данных и других типов данных с неравномерным распределением символов. habr.com
Алгоритм Хаффмана включает несколько этапов: el-ed.ru
- Подсчёт частоты встречаемости каждого символа в исходных данных. habr.com Эти данные формируют частотную таблицу. el-ed.ru
- Создание для каждого символа отдельного узла, отражающего его частоту — будущие листья дерева. el-ed.ru
- Формирование дерева Хаффмана. el-ed.ru Два наименее частотных узла объединяются в новый, с суммарной частотой. el-ed.ru Процесс продолжается до тех пор, пока не останется одно дерево, представляющее всё множество символов. el-ed.ru
- Присвоение каждому символу уникального двоичного кода, соответствующего пути от корня до листа: «0» — для движения влево, «1» — вправо. el-ed.ru Благодаря такой структуре ни один код не пересекается с другим, что исключает двусмысленность при чтении. el-ed.ru
- Замена исходных символов на соответствующие коды. el-ed.ru В итоге получается компактное представление данных без потерь. el-ed.ru
Такой подход позволяет значительно уменьшить объём данных при сохранении полной информации. el-ed.ru