Java. Алгоритм Хаффмана для компрессии данных.

preview_player
Показать описание
В данном видео разбирается, что такое кодирование Хаффмана, как оно работает, и как за счет оптимального префиксного кодирования достигается сжатие информации. Так же показано как написать простейшую реализацию компрессии Хаффмана на языке программирования Java. В конце производится сравнение размера файла, сжатого алгоритмом Хаффмана и архиватором ZIP.

Исходный код:

Оглавление по алгоритмам:

Поддержать канал💰:

Наша группа в Telegram:

#ArhiTutorialsJava #ityoutubersru
Рекомендации по теме
Комментарии
Автор

Никогда не думал что сжатие данных может быть объяснено так просто. Автор - гений!

vital__
Автор

Нет слов, которые смогут описать как крут автор! Огромное спасибо!

GenesizANT
Автор

Объяснение классное, решение очень помогло.
После того, как начал реализовывать нашел, что легче решить с
Queue<TreeNode> queue = new
так не нужно постоянно сортировать лист (Collection.sort(....))

АртемСиробаба
Автор

Не забрасывай пожалуйста! Все это необходимо для начинающих java - developer!

programer
Автор

Спасибо большое. Очень помогло. У вас очень хорошие видео. Очень видно, что вы стараетесь, не останавливайтесь)

azminseo
Автор

Спасибо вам огромное !
Это было безумно интересно и полезно !

cassielerner
Автор

Серега, обожаю твои уроки! Все на высшем уровне.

Так это получается такой алгоритм работает, когда мы на Windows нажимаем "Сжать файл"???

LAZIO
Автор

Знаю как в теории можно доработать данную программу. При обработке больших файлов получается очень большая переменная encoded, в которой хранится огромное количество битов сжатой строки.
Можно динамически добавлять в файл код одной буквы, а затем очищать её.
То есть, к примеру, есть буква а, записываем её в файл, затем очищаем её переменную,
делаем проверку, если она не последняя, то идем дальше записывать следующую букву
а если последняя, то дописываем нули до конца байта.
Ну это так, домашнее задание тем, кто хочет попрактиковаться.

TestTest-ytzh
Автор

Спасибо вам за урок. Очередной отличный урок от вас. Вам бы в учителя :). Мне интересна такая тема как создание своего браузера для линукс. На андроид там все довольно таки просто через реализацию webView, а вот для линукс я ничего не нашел. И вообще могли бы раскрыть такую тему как создание программ с графическим интерфейсом на языке java для операционной системы LInux.

truth_Of_The_Life
Автор

Спасибо за видео! Попробовал сжать изображение, из 578 kB получил 560 kB. Zip, tar.xz, 7z сжимают примерно также. Изображения уже изначально хранятся в сжатом виде?
Есть алгоритмы для сжатия изображения?
Каким алгоритмом просто ухудшить качество изображения?

d.mertsalov
Автор

Здравствуйте, Сергей. Спасибо за уроки, очень доходчиво и понятно. Можно попросить вас сделать пару уроков по Firebase?

worthyone
Автор

Здравствуйте. Начал изучать Java, и ваши видео очень полезные, огромное вам спасибо! Интересен вопрос, если я имею задачу, в которой мне дают количество символов, общую длину кода, и все кодовые значения букв. как расшифровать? Создавал словарь, но так и не смог через него сделать. Можно ли как то построить дерево с этими данными?

achillesofficial
Автор

Почему пробелов в тексте 6, как и символов "e", однако префиксный код на "e" гораздо больше. В это же время символ "a" встречается трижды, ровно как и "h". И снова большая разница в префиксных

h.amster
Автор

Извините, не подскажите, что нужно сделать, чтобы добавить ключ кодирования. Не могу найти нормальную информацию по-этому поводу. Заранее спасибо.

ИванЕременко-дж
Автор

Никакого сжатия строки не получилось, для исходной строки вы действительно рассчитываете РАЗМЕР строки в битах, а для "сжатой" строки просто выводите количество символов методом length(), но не считаете размер в битах! Грубая ошибка!

SergeySamarcev