crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Сжатия по алгоритму Хаффмана на Qt
dsp
  опции профиля:
сообщение 11.11.2010, 6:04
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 51
Регистрация: 12.10.2010
Пользователь №: 2109

Спасибо сказали: 4 раз(а)




Репутация:   0  


Здравствуйте.

Задали в универе реализовать данный алгоритм на Делфи, но к Делфи я равнодушен и тратить на него время не хочу, а посему решил поизучать Qt, т.к. познаю на данный момент самостоятельно С++. Я не прошу писать за меня код, но, т.к. с Qt я почти не знаком, хотелось бы получать от вас помощь в качестве наводок на тот или иной класс, дабы я смог написать программу и чему-то научился.

Сам алгоритм, как я себе его представляю:

1) Читаем файл, который требуется подвергнуть сжатию. Это нужно для того, что бы подсчитать частоту повторяющихся в нем символов. Читаем побайтно (какой класс для этого использовать?);
2) Записываем считанные символы и их частоту в какую-то структуру данных (map?);
3) Сортируем по возрастанию считанные символы (есть ли смысл сортировать map, или лучше сделать отдельный массив ссылок на каждый элемент map, и сортировать ссылки?);
4) Далее, строим дерево, выбирая каждый раз два символа с наименьшим числом вхождения и суммирем их, получая новый узел. Это делать до тех пор, пока не останется один узел (пример можно посмотреть тут (как это делать, пока не знаю. не думал ) );
5) Следует начать кодирование файла, начиная обход каждого узла дерева с корня (как работать с деревьями, пока не знаю);
6) Выполнив обход для всех символов, получим таблицу для каждого символа;
7) Упаковка и сохранение файла вместе с деревом.

Пока что кода нет, т.к. только сформулировал для себя то, что надо делать.
Буду благодарен за ссылки, которые помогут разобраться мне по каждому пункту.

P.S. Пишу на Qt 4.7, Ubuntu 10.10

Спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.12.2024, 15:40