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

ความคิดเห็น • 35

  • @vital_63_
    @vital_63_ 7 หลายเดือนก่อน +2

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

  • @GenesizANT
    @GenesizANT ปีที่แล้ว +4

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

  • @user-oh4vt4pt9v
    @user-oh4vt4pt9v 2 ปีที่แล้ว +3

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

    • @arhitutorials
      @arhitutorials  2 ปีที่แล้ว +1

      Да, верно. Я для видео стараюсь так писать код, чтоб в нем хорошо просматривался алгоритм, даже если это идет в ущерб производительности. Считаю, что главное, чтоб человек разобрался. Ну а тот кто хорошо разобрался, всегда сам сможет оптимизировать.

  • @programer8
    @programer8 3 ปีที่แล้ว +1

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

    • @arhitutorials
      @arhitutorials  3 ปีที่แล้ว +4

      Спасибо, как раз сегодня собираюсь записывать новый ролик. Выйдет где-то к концу недели.

  • @azminseo
    @azminseo 3 ปีที่แล้ว +1

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

  • @Andrii_Afonchenko
    @Andrii_Afonchenko 3 ปีที่แล้ว +1

    Очень пригодилось Ваше видео.

  • @cassielerner2152
    @cassielerner2152 2 ปีที่แล้ว +1

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

  • @alexdomanskyi7301
    @alexdomanskyi7301 3 ปีที่แล้ว +1

    Подписываюсь. Годнота!

  • @TestTest-yt3zh
    @TestTest-yt3zh 4 ปีที่แล้ว +1

    Спасибо, очень помогло.

  • @islamlaipanov4910
    @islamlaipanov4910 4 ปีที่แล้ว +1

    офигенно!

  • @user-sz1xm7on4t
    @user-sz1xm7on4t 3 ปีที่แล้ว +1

    Спасибо

  • @mobilafilm
    @mobilafilm ปีที่แล้ว

    прекрасно!

  • @TestTest-yt3zh
    @TestTest-yt3zh 3 ปีที่แล้ว

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

  • @truth_Of_The_Life
    @truth_Of_The_Life 4 ปีที่แล้ว +1

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

    • @arhitutorials
      @arhitutorials  4 ปีที่แล้ว +1

      Спасибо!
      К сожалению по поводу браузера не подскажу, не приходилось сталкиваться.
      А вот по поводу графических интерфейсов все хорошо. Приложения с графическим интерфейсом на 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 ปีที่แล้ว +1

      @@arhitutorials еще раз здравствуйте. Мне интересна такая тема как подключение приложений, сайтов ( на java ) к базе данных sql ( пример cPanal ). Могли бы вы затронуть эту тему и объяснить ее так как вы умеете ( четко , подробно и понятно).А если еще и из под linux вообще замечательно былобы. За ранее спасибо.

  • @achillesofficial15
    @achillesofficial15 4 ปีที่แล้ว

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

  • @anjelomanoranjan
    @anjelomanoranjan หลายเดือนก่อน

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

    • @arhitutorials
      @arhitutorials  หลายเดือนก่อน +1

      Скорее всего не совсем такой. Этих алгоритмов много, под каждую задачу можно подобрать подходящий.

    • @anjelomanoranjan
      @anjelomanoranjan หลายเดือนก่อน

      @@arhitutorials спасибо, Серёга. Ты ТОП!

  • @worthyone6631
    @worthyone6631 4 ปีที่แล้ว

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

    • @arhitutorials
      @arhitutorials  4 ปีที่แล้ว +1

      Здравствуйте. Пока что, к сожалению, очень не хватает свободного времени чтоб делать видео. Надеюсь, что в будущем ситуация улучшится и тогда сделаю.

    • @worthyone6631
      @worthyone6631 4 ปีที่แล้ว

      Sergey Arkhipov спасибо большое. Буду ждать))

  • @d.mertsalov
    @d.mertsalov 4 ปีที่แล้ว +2

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

    • @user-ng7bf9pc6r
      @user-ng7bf9pc6r 4 ปีที่แล้ว +2

      изображения уже сжаты - ru.wikipedia.org/wiki/JPEG

  • @h.amster
    @h.amster ปีที่แล้ว

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

  • @user-bl8pj1pf1l
    @user-bl8pj1pf1l 2 ปีที่แล้ว

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

  • @BookwormYevgen
    @BookwormYevgen 3 ปีที่แล้ว +1

    А как тут работает сортировка?

  • @SergeySamarcev
    @SergeySamarcev 2 หลายเดือนก่อน +1

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

  • @milkwchan3676
    @milkwchan3676 2 หลายเดือนก่อน

    uwu

    • @blumkeet
      @blumkeet 2 หลายเดือนก่อน +1

      Согласен!

  • @mikeshilovski1512
    @mikeshilovski1512 3 ปีที่แล้ว +3

    мда... как новичок я сюда рано загреб