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

  Рет қаралды 10,208

Sergey Arkhipov Java Tutorials

Sergey Arkhipov Java Tutorials

4 жыл бұрын

В данном видео разбирается, что такое кодирование Хаффмана, как оно работает, и как за счет оптимального префиксного кодирования достигается сжатие информации. Так же показано как написать простейшую реализацию компрессии Хаффмана на языке программирования Java. В конце производится сравнение размера файла, сжатого алгоритмом Хаффмана и архиватором ZIP.
Исходный код:
github.com/Arhiser/java_tutor...
Оглавление по алгоритмам:
github.com/Arhiser/java_tutor...
Поддержать канал💰:
yoomoney.ru/to/410018856244871
Наша группа в Telegram:
t.me/ArhiTutorials
#ArhiTutorialsJava #ityoutubersru

Пікірлер: 35
@vital_63_
@vital_63_ 6 ай бұрын
Никогда не думал что сжатие данных может быть объяснено так просто. Автор - гений!
@GenesizANT
@GenesizANT Жыл бұрын
Нет слов, которые смогут описать как крут автор! Огромное спасибо!
@azminseo
@azminseo 3 жыл бұрын
Спасибо большое. Очень помогло. У вас очень хорошие видео. Очень видно, что вы стараетесь, не останавливайтесь)
@cassielerner2152
@cassielerner2152 2 жыл бұрын
Спасибо вам огромное ! Это было безумно интересно и полезно !
@Andrii_Afonchenko
@Andrii_Afonchenko 3 жыл бұрын
Очень пригодилось Ваше видео.
@alexdomanskyi7301
@alexdomanskyi7301 3 жыл бұрын
Подписываюсь. Годнота!
@TestTest-yt3zh
@TestTest-yt3zh 4 жыл бұрын
Спасибо, очень помогло.
@user-oh4vt4pt9v
@user-oh4vt4pt9v 2 жыл бұрын
Объяснение классное, решение очень помогло. После того, как начал реализовывать нашел, что легче решить с Queue queue = new PriorityQueue(Collections.reverseOrder()); так не нужно постоянно сортировать лист (Collection.sort(....))
@arhitutorials
@arhitutorials 2 жыл бұрын
Да, верно. Я для видео стараюсь так писать код, чтоб в нем хорошо просматривался алгоритм, даже если это идет в ущерб производительности. Считаю, что главное, чтоб человек разобрался. Ну а тот кто хорошо разобрался, всегда сам сможет оптимизировать.
@programer8
@programer8 3 жыл бұрын
Не забрасывай пожалуйста! Все это необходимо для начинающих java - developer!
@arhitutorials
@arhitutorials 3 жыл бұрын
Спасибо, как раз сегодня собираюсь записывать новый ролик. Выйдет где-то к концу недели.
@islamlaipanov4910
@islamlaipanov4910 4 жыл бұрын
офигенно!
@user-sz1xm7on4t
@user-sz1xm7on4t 3 жыл бұрын
Спасибо
@achillesofficial15
@achillesofficial15 3 жыл бұрын
Здравствуйте. Начал изучать Java, и ваши видео очень полезные, огромное вам спасибо! Интересен вопрос, если я имею задачу, в которой мне дают количество символов, общую длину кода, и все кодовые значения букв. как расшифровать? Создавал словарь, но так и не смог через него сделать. Можно ли как то построить дерево с этими данными?
@worthyone6631
@worthyone6631 3 жыл бұрын
Здравствуйте, Сергей. Спасибо за уроки, очень доходчиво и понятно. Можно попросить вас сделать пару уроков по Firebase?
@arhitutorials
@arhitutorials 3 жыл бұрын
Здравствуйте. Пока что, к сожалению, очень не хватает свободного времени чтоб делать видео. Надеюсь, что в будущем ситуация улучшится и тогда сделаю.
@worthyone6631
@worthyone6631 3 жыл бұрын
Sergey Arkhipov спасибо большое. Буду ждать))
@mobilafilm
@mobilafilm Жыл бұрын
прекрасно!
@anjelomanoranjan
@anjelomanoranjan 28 күн бұрын
Серега, обожаю твои уроки! Все на высшем уровне. Так это получается такой алгоритм работает, когда мы на Windows нажимаем "Сжать файл"???
@arhitutorials
@arhitutorials 28 күн бұрын
Скорее всего не совсем такой. Этих алгоритмов много, под каждую задачу можно подобрать подходящий.
@anjelomanoranjan
@anjelomanoranjan 28 күн бұрын
@@arhitutorials спасибо, Серёга. Ты ТОП!
@truth_Of_The_Life
@truth_Of_The_Life 4 жыл бұрын
Спасибо вам за урок. Очередной отличный урок от вас. Вам бы в учителя :). Мне интересна такая тема как создание своего браузера для линукс. На андроид там все довольно таки просто через реализацию webView, а вот для линукс я ничего не нашел. И вообще могли бы раскрыть такую тему как создание программ с графическим интерфейсом на языке java для операционной системы LInux.
@arhitutorials
@arhitutorials 4 жыл бұрын
Спасибо! К сожалению по поводу браузера не подскажу, не приходилось сталкиваться. А вот по поводу графических интерфейсов все хорошо. Приложения с графическим интерфейсом на Java работаю сразу на всех платформах. Что доказывается хотя бы тем же IntelliJ IDEA, которая написана на Java и при этом одинаково хорошо работает и под виндой и на макоси и в линуксе (для интерфейса использует библиотеку SWT).
@truth_Of_The_Life
@truth_Of_The_Life 4 жыл бұрын
@@arhitutorials Сделайте пожалуйста какой нибудь пример программы с графическим интерфейсом под операционную систему. К примеру какой нибудь блокнот. У вас вроде есть под андроид пример записной книги, вот если этот пример перевести на Linux или win-s. По идее даже код не надо будет менять :) Просто сам процесс переиздания показать. Главное что бы он заработал на OS
@truth_Of_The_Life
@truth_Of_The_Life 4 жыл бұрын
@@arhitutorials еще раз здравствуйте. Мне интересна такая тема как подключение приложений, сайтов ( на java ) к базе данных sql ( пример cPanal ). Могли бы вы затронуть эту тему и объяснить ее так как вы умеете ( четко , подробно и понятно).А если еще и из под linux вообще замечательно былобы. За ранее спасибо.
@d.mertsalov
@d.mertsalov 4 жыл бұрын
Спасибо за видео! Попробовал сжать изображение, из 578 kB получил 560 kB. Zip, tar.xz, 7z сжимают примерно также. Изображения уже изначально хранятся в сжатом виде? Есть алгоритмы для сжатия изображения? Каким алгоритмом просто ухудшить качество изображения?
@user-ng7bf9pc6r
@user-ng7bf9pc6r 4 жыл бұрын
изображения уже сжаты - ru.wikipedia.org/wiki/JPEG
@TestTest-yt3zh
@TestTest-yt3zh 3 жыл бұрын
Знаю как в теории можно доработать данную программу. При обработке больших файлов получается очень большая переменная encoded, в которой хранится огромное количество битов сжатой строки. Можно динамически добавлять в файл код одной буквы, а затем очищать её. То есть, к примеру, есть буква а, записываем её в файл, затем очищаем её переменную, делаем проверку, если она не последняя, то идем дальше записывать следующую букву а если последняя, то дописываем нули до конца байта. Ну это так, домашнее задание тем, кто хочет попрактиковаться.
@user-bl8pj1pf1l
@user-bl8pj1pf1l 2 жыл бұрын
Извините, не подскажите, что нужно сделать, чтобы добавить ключ кодирования. Не могу найти нормальную информацию по-этому поводу. Заранее спасибо.
@BookwormYevgen
@BookwormYevgen 3 жыл бұрын
А как тут работает сортировка?
@h.amster
@h.amster Жыл бұрын
Почему пробелов в тексте 6, как и символов "e", однако префиксный код на "e" гораздо больше. В это же время символ "a" встречается трижды, ровно как и "h". И снова большая разница в префиксных кодах????????
@SergeySamarcev
@SergeySamarcev Ай бұрын
Никакого сжатия строки не получилось, для исходной строки вы действительно рассчитываете РАЗМЕР строки в битах, а для "сжатой" строки просто выводите количество символов методом length(), но не считаете размер в битах! Грубая ошибка!
@mikeshilovski1512
@mikeshilovski1512 3 жыл бұрын
мда... как новичок я сюда рано загреб
@milkwchan3676
@milkwchan3676 Ай бұрын
uwu
@blumkeet
@blumkeet Ай бұрын
Согласен!
Java. Поиск в массиве: линейный, двоичный.
16:19
Sergey Arkhipov Java Tutorials
Рет қаралды 12 М.
La revancha 😱
00:55
Juan De Dios Pantoja 2
Рет қаралды 51 МЛН
New Gadgets! Bycycle 4.0 🚲 #shorts
00:14
BongBee Family
Рет қаралды 17 МЛН
Final muy inesperado 🥹
00:48
Juan De Dios Pantoja
Рет қаралды 12 МЛН
Please be kind🙏
00:34
ISSEI / いっせい
Рет қаралды 55 МЛН
Код Хаффмана
15:04
Kirsanov2011
Рет қаралды 22 М.
КАК РАБОТАЕТ СЖАТИЕ?
27:37
Alek OS
Рет қаралды 83 М.
Алгоритм Хаффмана C++
1:05:04
FamTrinli
Рет қаралды 103 М.
Java. Деревья ч.1. Рекурсивный обход в глубину.
17:44
Sergey Arkhipov Java Tutorials
Рет қаралды 36 М.
КАК РАБОТАЕТ ZIP АРХИВ? | РАЗБОР
12:22
Droider
Рет қаралды 240 М.
La revancha 😱
00:55
Juan De Dios Pantoja 2
Рет қаралды 51 МЛН