|
1 / 3 / 1
Регистрация: 26.05.2014
Сообщений: 59
|
|||||||||||
Ошибка в реализации алгоритма Хаффмана09.12.2014, 14:49. Показов 604. Ответов 0
Метки нет (Все метки)
Доброго дня.
Есть более-менее работающая реализация алгоритма Хаффмана: HuffmanAlgConsole.cpp
stdafx.h
Суть работы в двух словах: побайтно считывается содержимое файла в строку, параллельно заполняя ассоциативный массив m парами "символ-частота_вхождения". Затем в цикле перебираются все элементы этого массива, и формируется list из "узлов" (всё тех же пар "символ-частота_вхождения"), после чего в цикле выстраивается бинарное дерево. Корнем назначается первый элемент списка, после чего метод Print() выводит всё дерево в консоль. Метод BuildTable() отвечает за проход от корневого элемента до конечных узлов (содержащих в себе символ), параллельно записывая свой "путь" - если условно идёт влево, то в конец vector<bool> code добавляется 0, если вправо - 1. Дойдя до конечного узла, метод записывает пару "символ-код" в соответствующий ассоциативный массив, "делает шаг назад" по дереву, удаляет последний символ из code и идёт дальше - до тех пор, пока не обойдёт все узлы, содержащие в себе символы. Когда массив символов и кодов сформирован, результат выводится на консоль в виде последовательности кодов, соответствующих символам в исходном файле (я ещё прикрутил кривенькую реализацию записи всего этого добра в файл, но не сделал запись словаря в конец, потому что не было ни сил ни желания, поэтому такой файл по сути бесполезен). И теперь возникает вопрос - почему у меня при любом исходном файле (пусть даже это будет 1.txt состоящий из цифры "1") в бинарном дереве (и далее на выводе готового кода) присутствует элемент "я", когда быть его там явно не должно? Если кто решится заглянуть в дебри исходников и не поймёт, что там написано - найду ссылку на видео, по которому разбирался с этим алгоритмом (с ходу не нашёл, надо рыться в истории).
0
|
|||||||||||
| 09.12.2014, 14:49 | |
|
Ответы с готовыми решениями:
0
Ошибка “vector<bool> erase iterator outside range” при работе алгоритма Хаффмана Кодирование алгоритма Хаффмана |
| 09.12.2014, 14:49 | |
|
Помогаю со студенческими работами здесь
1
Архиватор на основе алгоритма Хаффмана
Оптимизация алгоритма Хаффмана
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|