Для текстовых файлов чаще всего используют сжатие без потерь, при котором восстановленная информация в точности соответствует исходной. multiurok.ru videouroki.net
Некоторые методы сжатия данных для текстовых файлов:
- Кодирование длин серий (RLE). dzen.ru Вместо записи одинаковых символов несколько раз подряд, их заменяют указанием числа повторов и символа. dzen.ru Например, строка «AAAAAAABBBCCDD» становится «7A3B2C2D». dzen.ru
- Кодирование Хаффмана. dzen.ru Создаётся таблица частот символов, где самые часто встречающиеся символы заменяются короткими последовательностями битов, а редкие — более длинными. dzen.ru
- Словарные методы. github.com Повторяющиеся последовательности символов заменяются на короткие кодовые слова, которые хранятся в словаре. github.com Примеры: алгоритмы LZ77/LZ78, LZW (Lempel-Ziv-Welch). github.com
- Алгоритм DEFLATE. github.com Комбинирует методы словарного сжатия и кодирования Хаффмана. github.com Вначале текст сжимается методом LZ77, а затем оставшаяся избыточность кодируется с помощью алгоритма Хаффмана. github.com
Для достижения лучших результатов алгоритмы сжатия иногда комбинируют. dzen.ru Например, в ZIP-файлах может использоваться LZW для создания словаря, а потом данные могут быть дополнительно упакованы методом Хаффмана. dzen.ru