Сжатие данных без потерь. Использование алгоритма Хаффмана | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 30 ноября, печатный экземпляр отправим 4 декабря.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №35 (325) август 2020 г.

Дата публикации: 25.08.2020

Статья просмотрена: 906 раз

Библиографическое описание:

Котиева, Х. М. Сжатие данных без потерь. Использование алгоритма Хаффмана / Х. М. Котиева. — Текст : непосредственный // Молодой ученый. — 2020. — № 35 (325). — С. 12-14. — URL: https://moluch.ru/archive/325/73307/ (дата обращения: 16.11.2024).



Говоря сегодня о сжатии данных, на ум приходит вопрос: а нужно ли оно в наше время? Конечно же, да! Мы знаем, что сейчас нам доступны носители огромного объема и высокоскоростные каналы передачи данных, но нужно учитывать то, что объем передаваемой информации тоже растет. Если раньше мы смотрели фильмы невысокого качества, умещающиеся на одной болванке, то сейчас фильмы качества HD могут занимать десятки гигабайт. Разумеется, для хранения, и тем более передачи, информации такого объема понадобится много места и времени. Именно для таких случаев и используют метод сжатия данных. В нашей статье мы попытаемся понять, как работает сжатие данных без потерь, и рассмотрим самый распространенный метод сжатия без потерь — алгоритм Хаффмана.

Ключевые слова: данные, информация, сжатие данных, алгоритм Хаффмана, сжатие данных без потерь.

Сжатие данных — это алгоритмический процесс уменьшения объема данных путем сокращения их избыточности. Сжатие файла — это его уменьшение при сохранении исходных данных. [1] Существует два метода сжатия: с потерями и без потерь. При сжатии с потерями восстановленные данные несколько отличаются от исходных, например: разрешением, качеством звука и т. д.. Используют этот метод при сжатии изображений, аудио и медиа файлов, когда нет необходимости точного восстановления данных. При сжатии без потерь исходные данные восстанавливаются с точностью до бита. Такой способ используют для хранения и передачи текстовых документов, компьютерных программ. Далее мы будем рассматривать именно второй способ. [2]

Сжатие без потерь (СБП) уменьшает биты путем выявления и устранения статистической избыточности. Рассмотрим следующий пример, чтобы понять принцип работы этого метода. [4] На рисунке ниже изображено девять овалов- три бордовых, три зелёных, три желтых:

Вместо того, чтобы показывать все девять овалов, мы можем убрать все овалы, оставив по одному овалу разного цвета, и указав на них цифрами сколько было этих овалов вначале. То есть мы показываем те же данные, но используя меньшее количество фигур:

Оба рисунка несут в себе один и тот же смысл, содержат одну информацию, но на втором рисунке информация сжата, при хранении и передаче занимает меньше места.

Другой пример: возьмем файл, который хранит следующую информацию-

DDDDDDDDDDDYYYYYYFFFFFFFFFFFFFFFFFFFOOO. Этот текст мы можем сжать следующим образом: D11Y6F19O3. Таким образом вместо 39 символов, мы использовали 11 для представления тех же данных.

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

Несмотря на окружающую мистическую ауру, сжатие данных основано на простой идее: отображение представления данных из одной группы символов на другую, более компактную серию символов. Чтобы достигнуть этого, программы сжатия данных и соответствующая аппаратура используют несколько различных алгоритмов, самыми основными из которых являются метод Хаффмана и LZW- кодирование. [6]

Алгоритм Хаффмана

Простота и легкость данного способа сжатия информации сделали его популярным среди пользователей. Хотя он и был создан в далеком 1952 году, но даже в наше время этот метод остается актуальным. Кодирование Хаффмана работает на принципе того, что есть вероятность, что некоторые символы в представлении данных используются чаще, чем другие. Суть алгоритма в том, чтобы найти символы с большей частотой и дать им самый короткий код, а символам с наименьшей частотой дать самый длинный код. На входе в алгоритме Хаффмана должна быть уже задана таблица частот, без нее кодирование невозможно. [2]

Алгоритм

  1. Задается таблица частот;
  2. Выбираются два узла с наименьшим весом (частотой);
  3. Создается родитель равный весу их суммы;
  4. Родитель — это новый свободный узел, а те два узла-потомка удаляются;
  5. Для дуги, выходящей из родителя, ставится в соответствие бит 1 или 0;
  6. Вся эта операция повторяется, пока в списке не останется единственный узел.

Приведем пример. Нам задана следующая таблица частот:

F

G

H

J

10

3

7

18

Согласно нашему алгоритму, мы должны суммировать два узла с наименьшей частотой: G+ H= 3+ 7= 10. Из G и H получается новый родитель G/H, вес которого составляет 10, а эти узлы удаляются. На следующем шаге наименьший вес у узлов G/H и F. Получается новый родитель с весом 20, а эти узлы удаляются. Это операция происходит, пока не останется один единственный узел.

Дерево кодирования выглядит так:

Далее нам нужно задать код для каждого символа. Для этого мы будем двигаться снизу-вверх по нашему дереву до корня, накапливая биты при перемещении по ветвям. Перемещение вправо — 0 бит, влево- 1 бит. У нас получится следующая таблица:

F

G

H

J

11

101

100

0

Как нам и обещал алгоритм символ с наибольшей частотой получил меньший код (J= 0= 0), а символ с наименьшей частотой наибольший код (G= 101= 5).

Классический алгоритм Хаффмана имеет один существенный недостаток. Для восстановления содержимого сообщения декодер должен знать таблицу частот, которой пользовался кодер. Следовательно, длина сжатого сообщения увеличивается на длину таблицы частот, которая должна посылаться впереди данных, что приводит к увеличению размеров выходного файла. Кроме того, необходимость наличия полной частотной статистики перед началом собственно кодирования требует двух проходов по сообщению: одного для построения модели сообщения (таблицы частот и дерева), другого для собственно кодирования. [5]

В этой статье мы с вами подробно описали один из видов сжатия данных -сжатие без потерь, и самый популярный алгоритм этого метода — кодирование Хаффмана. Естественно, это не единственный алгоритм сжатия данных, их очень много, и какой метод выбрать решает сам пользователь. Сегодня, в век информации, несмотря на то, что есть носители огромного объема, проблема сжатия данных все еще остается актуальной.

Литература:

  1. Баринов В. В. Сжатие данных, речи, звука и изображений в телекоммуникационных системах; РадиоСофт — Москва, 2009. — 360 c.
  2. Вотолин Д. Ратушпяк А. Смирнов М. Юкин В. Методы сжатия данных. Устройство архиваторов, Сжатие изображений и видео. — М.:ДИАЛОГ-МИФИ, 2003 г. — 381 с..
  3. Рассел Джесси Сжатие данных; Книга по Требованию — Москва, 2013. — 104 c.
  4. Ратушняк О. А. Сжатие мультимедийной информации. // Hard'n'Soft. 2001. — №.4 — стр. 78–79.
  5. Сэломон Д. Сжатие данных, изображений и звука; Техносфера — Москва, 2006. — 368 c.
  6. Электронный ресурс: https://mf.grsu.by/UchProc/livak/po/comprsite/theory_contents.html
Основные термины (генерируются автоматически): сжатие данных, алгоритм Хаффмана, таблица частот, наименьшая частота, потеря, DDDDDDDDDDDYYYYYYFFFFFFFFFFFFFFFFFFFOOO, LZW, единственный узел, кодирование Хаффмана, огромный объем.


Ключевые слова

информация, данные, сжатие данных без потерь, сжатие данных, алгоритм Хаффмана

Похожие статьи

Методы сжатия изображений

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

Актуальность кластерного анализа данных при обработке информации

Данная статья рассматривает актуальность применения кластерного анализа данных при обработке информации в современном мире. В статье проанализированы преимущества кластерного анализа и его применение в различных областях, таких как маркетинг, медицин...

Влияние аналитики больших данных на эффективность деятельности российских компаний

В современном мире, когда объем больших данных увеличивается быстрыми темпами, необходимо уметь правильно анализировать полученные данные, чтобы извлекать из них ценную информацию. Во многих странах данная практика уже находится на высоком уровне, в ...

Философская проблема отчуждения технического объекта в философии Ж. Симондона

Развитие технической сферы заметно опережает социальное развитие, появляются новые технологии, которые становится все труднее осмыслить: появление интернета, 3D принтеров (позволяющих воспроизводить донорские органы), очки виртуальной реальности. Уск...

Анализ способов оптимизации программного кода с использованием возможностей современных многоядерных процессоров и графических карт

В статье рассмотрены четыре способа повышения эффективности вычислительного процесса во времени, не требующие аппаратной модернизации вычислительной машины. Два способа состоят в создании множества потоков, выполняемых на своем логическом процессоре,...

3D-моделирование фракталов. Фрактальные антенны

Когда-то большинству людей казалось, что геометрия в природе ограничивается простыми фигурами и их комбинациями. Однако природные системы и их динамика могут быть весьма сложными. Например — модель горного хребта, легких человека, системы кровообраще...

Метод защиты от подделок для мобильных систем распознавания по радужной оболочке глаза

Высокая степень защиты от подделок — одно из основных требований для современной биометрической системы. Технология распознавания человека по радужной оболочке глаза, в последнее время активно используется в мобильных устройствах, и для обеспечения д...

Анализ рынка смартфонов с точки зрения эффективности бренда с использованием гибридных многокритериальных методов принятия решений

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

Оценка стойкости криптосистемы Эль-Гамаля

В современном обществе, когда информационные технологии играют важную роль, актуальной становится проблема защиты информационных технологий от многих видов угроз или нападений, которые могут привести к потере денег или репутации и, таким образом, уни...

Получение оверлеев векторных данных большого объёма

Рассмотрена задача построения оверлеев (пересечения, объединения, разности) векторных данных, содержащих большое число контуров простой структуры. С целью решения этой задачи изучены представленные в литературе методы. Как оказалось, лишь три метода ...

Похожие статьи

Методы сжатия изображений

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

Актуальность кластерного анализа данных при обработке информации

Данная статья рассматривает актуальность применения кластерного анализа данных при обработке информации в современном мире. В статье проанализированы преимущества кластерного анализа и его применение в различных областях, таких как маркетинг, медицин...

Влияние аналитики больших данных на эффективность деятельности российских компаний

В современном мире, когда объем больших данных увеличивается быстрыми темпами, необходимо уметь правильно анализировать полученные данные, чтобы извлекать из них ценную информацию. Во многих странах данная практика уже находится на высоком уровне, в ...

Философская проблема отчуждения технического объекта в философии Ж. Симондона

Развитие технической сферы заметно опережает социальное развитие, появляются новые технологии, которые становится все труднее осмыслить: появление интернета, 3D принтеров (позволяющих воспроизводить донорские органы), очки виртуальной реальности. Уск...

Анализ способов оптимизации программного кода с использованием возможностей современных многоядерных процессоров и графических карт

В статье рассмотрены четыре способа повышения эффективности вычислительного процесса во времени, не требующие аппаратной модернизации вычислительной машины. Два способа состоят в создании множества потоков, выполняемых на своем логическом процессоре,...

3D-моделирование фракталов. Фрактальные антенны

Когда-то большинству людей казалось, что геометрия в природе ограничивается простыми фигурами и их комбинациями. Однако природные системы и их динамика могут быть весьма сложными. Например — модель горного хребта, легких человека, системы кровообраще...

Метод защиты от подделок для мобильных систем распознавания по радужной оболочке глаза

Высокая степень защиты от подделок — одно из основных требований для современной биометрической системы. Технология распознавания человека по радужной оболочке глаза, в последнее время активно используется в мобильных устройствах, и для обеспечения д...

Анализ рынка смартфонов с точки зрения эффективности бренда с использованием гибридных многокритериальных методов принятия решений

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

Оценка стойкости криптосистемы Эль-Гамаля

В современном обществе, когда информационные технологии играют важную роль, актуальной становится проблема защиты информационных технологий от многих видов угроз или нападений, которые могут привести к потере денег или репутации и, таким образом, уни...

Получение оверлеев векторных данных большого объёма

Рассмотрена задача построения оверлеев (пересечения, объединения, разности) векторных данных, содержащих большое число контуров простой структуры. С целью решения этой задачи изучены представленные в литературе методы. Как оказалось, лишь три метода ...

Задать вопрос