Блок задач

5. Проекты

Темы
Сложность 8

Проект «Компрессия данных»

Реализовать программу компрессии/декомпресси данных по алгоритму Хаффмана и/или Лемпеля-Зива-Венча.

Входные данные рассматривать как последовательность байт, т.е. считать, что для их записи используется алфавит из 256 символов.

Пример работы с программой:

compress -c input_file compressed_file - упаковка файла

compress -u compressed_file output_file - распаковка файла

В ходе работы для алгоритма Хаффмана программа должна сообщать:

  • количество байт занятых в файле под хранение дерева Хаффмана
  • количество байт занятых сжатыми данными
  • степень компрессии = (байт сжатых данных + байт под хранение дерева Хафмана) / байт исходных данных

для алгоритма LZW:

  • степень компрессии = байт сжатых данных / байт исходных данных