Алгоритмы и структуры данных. Соколов А.С. Курсовой 4-80к. Курсовая работа по курсу Алгоритмы и структуры данных
Скачать 140.61 Kb.
|
Оптимизация быстрого прототипаПоскольку коды Хаффмана – коды знакопеременной длины, то задачей оптимизации является «упаковка» данных кодов побайтно. То есть, если, например, во входном потоке идет последовательность 001 10001, то не обязательно выделять каждый раз под код 1 байт (т.е. в данном примере выделилось бы 2 байта на данный код: 1 байт займет код 001, 1 байт займет код 10001), а можно уложить данные коды в один байт. Тем-самым, сократив размер файла. Кодер реализует следующий алгоритм: Построение карты (таблицы) частот Построение дерева Хаффмана Получить очередной символ из входного потока Вычислить код символа по текущему состоянию дерева Записать карту частот в выходной поток Записать в выходной поток количество дополнительных бит (для выравнивания выходного потока) Упаковать коды Хаффмана в байты. На выходе – массив байт. Для каждого байта в массиве байт: записать закодированный по дереву Хаффмана байт в выходной поток. Конец. Разработка интерфейса и испытанияОрганизованно диалоговое окно, которое позволяет выбрать любой файл. Так же программа не привязана к определённому месту сохранения результата. Путь сохранения результата совпадает с местом хранения исходного файла. Для исключения ошибки повторения имени файла, происходит добавление к файлу расширения (.huff). Окно приложения показано на рисунке 4. Рисунок 4 – Результаты испытания быстрого прототипа |