200 likes | 503 Views
Quffman Кроссплатформенная реализация алгоритма сжатия Хаффмана. Автор : Дедков Антон 11 “ А ” Научный руководитель : Дединский Илья Рудольфович. Цель работы.
E N D
QuffmanКроссплатформенная реализация алгоритма сжатия Хаффмана Автор:Дедков Антон 11 “А” Научный руководитель:Дединский Илья Рудольфович
Цель работы Создание кроссплатформенной библиотеки для сжатия данных методом Хаффмана, а также CLI и GUI фронтендов для взаимодействия конечного пользователя с ней. Дедков Антон 11 "А"
Задачи • Реализация алгоритма сжатия методом Хаффмана • Анализ факторов, влияющих на скорость и качество сжатия • Создание формата хранения сжатых данных • Разработка архитектуры библиотеки сжатия • Реализация CLI (интерфейса командной строки) • Реализация GUI на основе фреймворка Qt Дедков Антон 11 "А"
Сжатие данных С искажениями Архив Типы сжатия: • Сжатие с потерями • Сжатие без потерь Виды кодов: • Равномерные • Неравномерные Архив Без искажений A B A C A B A C Выигрыш Дедков Антон 11 "А"
Алгоритм Хаффмана Алгоритм Хаффмана строит коды символов по частоте их встречаемости в файле 1 этап: построение таблицы частот Входной файл: ABACABADABACABA Дедков Антон 11 "А"
3 2+1 2 этап:построение дерева 3 2+1 15 8+7 C2 D1 3 2+1 A8 C2 B4 D1 C2 D1 A8 min min 0 1 C2 D1 A8 B4 0 1 7 4+3 min min 0 1 7 4+3 0 1 B4 0 1 B4 A8 0 1 min min Дедков Антон 11 "А"
3 этап: кодирование 15 8+7 3 2+1 Исходный текст: ABACABADABACABA 1 0 A8 • Кодирование одного из символов ( С ): • Находим лист с символом С • Проходим путь от листа до корня, накапливая биты (011) • Переворачиваем полученную последовательность • Получаем код символа • С (110) C2 D1 0 1 7 4+3 0 1 B4 (A) ( B )(A) ( C ) (A)( B )(A) ( D ) (A)( B )(A) ( C ) (A)( B )(A) В результате:0 100110010011101001100100 Дедков Антон 11 "А"
Сжатие • Качество и мощность алфавита: • Скорость: Дедков Антон 11 "А"
Архитектура библиотеки • Взаимодействие программы происходит только с ядром • Ядро предоставляет инструменты для работы с файловой системой архива • Модуль, отвечающий за кодирование, абстрагирован от каких либо внешних факторов, он взаимодействует лишь с пакетами данных (CompressorData), которые формирует для него ядро lib_quffman Compressor CompressorData Core Application FileSystem Дедков Антон 11 "А"
archive.quf DataFormat Root directory (“/”) SystemInfo • Архив содержит всю информацию о данных • Атрибуты: quf, root, subdir, file, block Subdirectory (“/subdir1”) File (“/file1”) File (“/file2”) Subdirectory (“/subdir1/subdir2”) File (“/subdir1/file3”) File4 Block 1 File4 Block 2 File (“/subdir1/subdir2/file4”) DataBlocks quf(root(subdir(“subdir1”,subdir(“subdir2”, file(“file4”))… Дедков Антон 11 "А"
Проблемы • Появление в сжатых файлах системной информации • Соотношение скорость/качество сжатия • Проблема переполнения Дедков Антон 11 "А"
Итоги • Реализован алгоритм сжатия методом Хаффмана • Создан формат для хранения сжатых данных • Разработана архитектуры библиотеки сжатия • Реализован CLI • Реализован прототип GUI на основе фреймворка Qt Дедков Антон 11 "А"
Дальнейшее развитие • Перенос вычислений на многопроцессорные системы с использованием OpenCL • Реализация клиент-серверной архитектуры • Доработка GUI Дедков Антон 11 "А"
Спасибо за внимание! Самая свежая версия всегда ждет вас на quffman.googlecode.com Дедков Антон 11 "А"