Входные данные
Алгоритм RLE: откуда взялся и где применяется
Алгоритм RLE (Run-Length Encoding) - один из простейших и старейших методов сжатия данных без потерь, появившийся в 1967 году. Идея проста: последовательность одинаковых символов заменяется парой (количество, символ), и чем длиннее такие серии, тем сильнее сжатие.
Пример: AAAAAABBBCC → 6A3B2C (11 символов → 6)
Проблема классического RLE: На данных без повторов размер
увеличивается!
ABCDEF → 1A1B1C1D1E1F (6 символов → 12 символов, +100%)
Решение - Smart RLE (PackBits): Уникальные серии кодируются
отрицательным числом длины, после которого идет сама серия без изменений.
ABCDEF → -6ABCDEF (6 символов → 7 байт, всего +1 байт)
Применение сегодня:
- BMP, TIFF, PCX - сжатие изображений (особенно с большими однотонными областями)
- Факсимильная связь - стандарты Group 3/4 для передачи факсов
- Ретро-игры - сжатие спрайтов, тайлов и уровней (NES, SNES, Sega)
- PDF - один из методов сжатия потоков данных
- Видеокодеки - сжатие разностных кадров (в комбинации с другими методами)
RLE особенно эффективен для данных с большим количеством повторов: черно-белые изображения, иконки, простая графика. Для фотографий и текста он неэффективен - здесь лучше использовать Хаффман или LZ-алгоритмы.