Java. Алгоритм Хаффмана для компрессии данных.
ฝัง
- เผยแพร่เมื่อ 30 พ.ค. 2020
- В данном видео разбирается, что такое кодирование Хаффмана, как оно работает, и как за счет оптимального префиксного кодирования достигается сжатие информации. Так же показано как написать простейшую реализацию компрессии Хаффмана на языке программирования Java. В конце производится сравнение размера файла, сжатого алгоритмом Хаффмана и архиватором ZIP.
Исходный код:
github.com/Arhiser/java_tutor...
Оглавление по алгоритмам:
github.com/Arhiser/java_tutor...
Поддержать канал💰:
yoomoney.ru/to/410018856244871
Наша группа в Telegram:
t.me/ArhiTutorials
#ArhiTutorialsJava #ityoutubersru
Никогда не думал что сжатие данных может быть объяснено так просто. Автор - гений!
Нет слов, которые смогут описать как крут автор! Огромное спасибо!
Объяснение классное, решение очень помогло.
После того, как начал реализовывать нашел, что легче решить с
Queue queue = new PriorityQueue(Collections.reverseOrder());
так не нужно постоянно сортировать лист (Collection.sort(....))
Да, верно. Я для видео стараюсь так писать код, чтоб в нем хорошо просматривался алгоритм, даже если это идет в ущерб производительности. Считаю, что главное, чтоб человек разобрался. Ну а тот кто хорошо разобрался, всегда сам сможет оптимизировать.
Не забрасывай пожалуйста! Все это необходимо для начинающих java - developer!
Спасибо, как раз сегодня собираюсь записывать новый ролик. Выйдет где-то к концу недели.
Спасибо большое. Очень помогло. У вас очень хорошие видео. Очень видно, что вы стараетесь, не останавливайтесь)
Очень пригодилось Ваше видео.
Спасибо вам огромное !
Это было безумно интересно и полезно !
Подписываюсь. Годнота!
Спасибо, очень помогло.
офигенно!
Спасибо
прекрасно!
Знаю как в теории можно доработать данную программу. При обработке больших файлов получается очень большая переменная encoded, в которой хранится огромное количество битов сжатой строки.
Можно динамически добавлять в файл код одной буквы, а затем очищать её.
То есть, к примеру, есть буква а, записываем её в файл, затем очищаем её переменную,
делаем проверку, если она не последняя, то идем дальше записывать следующую букву
а если последняя, то дописываем нули до конца байта.
Ну это так, домашнее задание тем, кто хочет попрактиковаться.
Спасибо вам за урок. Очередной отличный урок от вас. Вам бы в учителя :). Мне интересна такая тема как создание своего браузера для линукс. На андроид там все довольно таки просто через реализацию webView, а вот для линукс я ничего не нашел. И вообще могли бы раскрыть такую тему как создание программ с графическим интерфейсом на языке java для операционной системы LInux.
Спасибо!
К сожалению по поводу браузера не подскажу, не приходилось сталкиваться.
А вот по поводу графических интерфейсов все хорошо. Приложения с графическим интерфейсом на Java работаю сразу на всех платформах. Что доказывается хотя бы тем же IntelliJ IDEA, которая написана на Java и при этом одинаково хорошо работает и под виндой и на макоси и в линуксе (для интерфейса использует библиотеку SWT).
@@arhitutorials Сделайте пожалуйста какой нибудь пример программы с графическим интерфейсом под операционную систему. К примеру какой нибудь блокнот. У вас вроде есть под андроид пример записной книги, вот если этот пример перевести на Linux или win-s. По идее даже код не надо будет менять :) Просто сам процесс переиздания показать. Главное что бы он заработал на OS
@@arhitutorials еще раз здравствуйте. Мне интересна такая тема как подключение приложений, сайтов ( на java ) к базе данных sql ( пример cPanal ). Могли бы вы затронуть эту тему и объяснить ее так как вы умеете ( четко , подробно и понятно).А если еще и из под linux вообще замечательно былобы. За ранее спасибо.
Здравствуйте. Начал изучать Java, и ваши видео очень полезные, огромное вам спасибо! Интересен вопрос, если я имею задачу, в которой мне дают количество символов, общую длину кода, и все кодовые значения букв. как расшифровать? Создавал словарь, но так и не смог через него сделать. Можно ли как то построить дерево с этими данными?
Серега, обожаю твои уроки! Все на высшем уровне.
Так это получается такой алгоритм работает, когда мы на Windows нажимаем "Сжать файл"???
Скорее всего не совсем такой. Этих алгоритмов много, под каждую задачу можно подобрать подходящий.
@@arhitutorials спасибо, Серёга. Ты ТОП!
Здравствуйте, Сергей. Спасибо за уроки, очень доходчиво и понятно. Можно попросить вас сделать пару уроков по Firebase?
Здравствуйте. Пока что, к сожалению, очень не хватает свободного времени чтоб делать видео. Надеюсь, что в будущем ситуация улучшится и тогда сделаю.
Sergey Arkhipov спасибо большое. Буду ждать))
Спасибо за видео! Попробовал сжать изображение, из 578 kB получил 560 kB. Zip, tar.xz, 7z сжимают примерно также. Изображения уже изначально хранятся в сжатом виде?
Есть алгоритмы для сжатия изображения?
Каким алгоритмом просто ухудшить качество изображения?
изображения уже сжаты - ru.wikipedia.org/wiki/JPEG
Почему пробелов в тексте 6, как и символов "e", однако префиксный код на "e" гораздо больше. В это же время символ "a" встречается трижды, ровно как и "h". И снова большая разница в префиксных кодах????????
Извините, не подскажите, что нужно сделать, чтобы добавить ключ кодирования. Не могу найти нормальную информацию по-этому поводу. Заранее спасибо.
А как тут работает сортировка?
Никакого сжатия строки не получилось, для исходной строки вы действительно рассчитываете РАЗМЕР строки в битах, а для "сжатой" строки просто выводите количество символов методом length(), но не считаете размер в битах! Грубая ошибка!
uwu
Согласен!
мда... как новичок я сюда рано загреб