Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм Хаффмана (Hufmann Algorithm), лабораторка 
:(
    Опции темы
w32blaster
Дата 2.12.2008, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.1.2006
Где: Tln/Slmae

Репутация: нет
Всего: нет



Господа, здравствуйте!
Мне нужно написать по универу прогу на С, реализующая архиватор по алгоритму Хаффмана. Я вообще специальизировался на Яве и на РНР, но вот С меня поставил в тупик. Бьюсь уже почти месяц, а время поджимает.... Я конечно же не претендую на полное разъяснение, но, может, кто-то где-то делал и осталась прога? Последняя палка в колёсах перед дипломкой....  smile 

Спасибо заранее...

email [email protected]
PM MAIL WWW ICQ MSN   Вверх
Acer
Дата 2.12.2008, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: нет
Всего: 8



PM MAIL   Вверх
w32blaster
  Дата 16.12.2008, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.1.2006
Где: Tln/Slmae

Репутация: нет
Всего: нет



Ok, я получил последовательность Хаффмана, то есть последовательность 0 и 1.  Создал необходимое дерево. Но препод сказал, что этого мало - прога должна обязательно сжимать файлы и распаковывать. Вот. Как я читал во всех мануалах, нужно к полученной последовательности 0001100101010 ещё как-то прибавить само дерево, которое будет являться как бы "каротой", по которой можно будет расшифровать архив. Вот, собсна, и вопрос: как это сделать?

Моё дерево я храню в массиве, где есть каждый элемент с его "Ид",  "ПарентИд", значением "лево/парво" и "лист/не лист". По нему я могу сделать двоичную последовательность и, я надеюсь, в будущем смогу обратно восстановить. Но это в теории. А вот на практике я совсем не предстваляю, как это сделать..... :( В Инете во всех статьях повествование оканчивается на последовательности и всё....


жжжесть... из всего курса только один предмет загнал меня в тупик....  smile У кого-нить есть идеи, хотя б на словах? Или с примером кода?  Благодарен за любую помощь.
PM MAIL WWW ICQ MSN   Вверх
MaXL
Дата 17.12.2008, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



Ну самый просто вариант, это записывать это дерево в файл, перед шифрованными данными. А в самое начало файл писать "заголовок", т.е. размер этого дерева. И потом ты легко сможешь получить данные с деревом, ну и собственно саму упакованную информацию.
Цитата
где есть каждый элемент с его "Ид",  "ПарентИд", значением "лево/парво" и "лист/не лист"

ну можно попробовать ничего не кодировать в двоичном виде, а просто подряд писать элементы с первого до последнего. Ид, можно не хранить, он и будет порядковым номер в этой последовательности. Под "ParentId" можно отвести один байт(если у тебя в алфавите 255 символов). под само значение опять таки один байт, зависит от алфавита ну и лево права снова один байт. вот собственно и всё. Размер массива хранить в заголовке.


--------------------
MaXL
PM MAIL   Вверх
Бонифаций
Дата 17.12.2008, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: нет
Всего: 40



когда то давно понадобилось написать подобную штуку, только с алгоритмом Шеннона-Фано.. Ну не важно. Там, вместо того, чтобы хранить дерево в файле. мне показалось проще хранить в результирующем файле статистику букв исходного файла. То есть (буква, число сколко раз встречалась)* , получалось компактенее. А дерево при расшифровке просто воссоздавал по этой статистике.





--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0729 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.