|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
|
Сжатие методом Хаффмана15.03.2018, 22:07. Показов 5328. Ответов 18
Метки нет (Все метки)
Хочу реализовать алгоритм "Сжатие методом Хаффмана" но столкнулся с такой проблемой. Проблема вот в чём, в описании алгоритма говорится что надо брать минимальные значение частот(частота символа это процент встречающегося символа) символов в последовательности(в строке которую мы сами же и задаём) и суммировать их, тем самым получаем новое значение.
Я хочу написать это в виде дерева но не могу понять как сохранять новые узлы полученные сложением минимальных частот символов К примеру у нас такая последовательность: TAATTAGAAATTCTATTATA Частота символа A = 0.45 = 45%, C = 0.05 = 5%, G = 0.05 = 5%, T = 0.45 = 45%. В начале у нас будут 4 узла в которых в качестве значения будут храниться частоты символов. Ищем среди них минимальные значения, минимальными значениями будут здесь 0.05(символа C) и 0.05(символа G), суммируем их 0.1 получаем новый узел который будет связан с узлами 0.05(символа C) и 0.05(символа G). Вопрос, как сохранить этот новый узел чтобы при следующей итерации к нему можно было сразу обращаться?
0
|
|
| 15.03.2018, 22:07 | |
|
Ответы с готовыми решениями:
18
Сжатие Хаффмана Сжатие Хаффмана Кодирование текста методом Хаффмана |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 15.03.2018, 22:18 | |
|
Были же реализации Хаффмана, хоть и кривоватые. Посмотри, как там делали.
1
|
|
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
|
| 15.03.2018, 22:30 [ТС] | |
|
Если честно, фиг поймёшь эти реализации. Там только голый код и несколько слов об алгоритме, а как строится само дерево совсем непонятно. Ну если не будет другого выхода останется только копаться в этих кодах и смотреть как там всё устроено, что собственно мне не очень хочется.
![]() Добавлено через 2 минуты Была мысль идти от начальных узлов к вершине(корню) но так проход будет очень долгим я думаю
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 16.03.2018, 08:29 | |
|
Вот тут есть комментарии в некоторых местах:
Хаффман. Выводит лишний элемент
1
|
|
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
||||||
| 16.03.2018, 19:08 [ТС] | ||||||
|
Почему в map не сохраняются значения массива freq и структуры HaffmanNode?
Обратите внимание на строку 58 где цикл
Я даже пытаюсь их тут же вывести, в массиве chr храниться символ а в массиве freq частота этого символа оба не пустые но когда вывожу содержимое map-а то всё по нулям Добавлено через 4 минуты я ОШИБСЯ! Я нашел ошибку. Эта самая тупая ошибка которую я делал
0
|
||||||
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
||||||
| 17.03.2018, 19:21 [ТС] | ||||||
|
Думаю не надо создавать новую тему поэтому спрошу тут.
Вот написал наконец то "сжатие методом Хаффмана", но я хочу реализовать настоящего Хаффмана так как моя программа не производит реального сжатия. Можете что нибудь порекомендовать мне?
0
|
||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 17.03.2018, 19:46 | |
|
Что за реальное сжатие? Там же где-то в примере было формирование последовательности битов с записью в файл.
1
|
|
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
||||||
| 27.03.2018, 18:37 [ТС] | ||||||
|
Всем ещё раз здравствуйте дорогие форумчанине
Что можете посоветовать для того чтобы создать реальный архиватор хотя бы txt файла Моя программа создаёт кодировку, как теперь выделить эти биты и присвоить символам?Добавлено через 2 минуты
0
|
||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 27.03.2018, 19:05 | |
|
Там же есть обратное преобразование.
Придётся таблицу кодов в файл сохранять.
1
|
|
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
|||||||||||
| 27.03.2018, 19:53 [ТС] | |||||||||||
|
nmcf Сейчас читаю про бинарные файлы, вы можете пожалуйста объяснить подробно что делает вот эта строчка кода. В интернете читаю, её везде используют но каким образом она работает не объясняется
![]()
0
|
|||||||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
||||||
| 27.03.2018, 22:42 | ||||||
|
Запись в файл массива. И цикл не нужен.
1
|
||||||
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
|
| 28.03.2018, 18:56 [ТС] | |
|
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
||||||
| 28.03.2018, 19:05 | ||||||
|
Приведение типа.
1
|
||||||
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
|
| 28.03.2018, 19:24 [ТС] | |
|
Ну я понял что это приведение типа но для чего она здесь нужна?
Зачем приводить к типу (char *)
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 28.03.2018, 22:27 | |
|
Функцию write() посмотри.
0
|
|
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
|
| 30.03.2018, 18:20 [ТС] | |
|
А где сохранять таблицу символов с кодами? Например заархивировал на одном компе и разархивировал на другом.
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 30.03.2018, 18:29 | |
|
Ну в тот же файл и сохранять.
1
|
|
|
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
|
|
| 30.03.2018, 21:15 [ТС] | |
|
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 30.03.2018, 21:25 | |
|
Придумывать какой-то формат сохранения.
0
|
|
| 30.03.2018, 21:25 | |
|
Помогаю со студенческими работами здесь
19
Сжатие методом Шеннона-Фано (Pascal -> C++) Сжатие bmp файла методом Шеннона-Фано Сжатие данных методом Лемпеля-Зива-Велча. Почему некоторые файлы увеличиваются в размере? Сжатие данных методом Хаффмана Сжатие файла методом Хаффмана Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|