SlideShare a Scribd company logo
1 of 50
РОССИЙСКАЯ АКАДЕМИЯ НАРОДНОГО ХОЗЯЙСТВА И 
ГОСУДАРСТВЕННОЙ СЛУЖБЫ ПРИ ПРЕЗИДЕНТЕ 
РОССИЙСКОЙ ФЕДЕРАЦИИ 
Нижегородский институт управления 
Кафедра информатики и информационных технологий 
Введение в алгоритмы и 
структуры данных 
Ивина Наталья Львовна 
доцент кафедры Информатики и ИТ
Тема 5. Алгоритмы сжатия данных 
Основные понятия и теоремы алфавитного и блочного 
кодирования. 
Теоретические основы сжатия данных. Алгоритмы обратимых 
методов: Алгоритм RLE, Алгоритм KWE, Алгоритм Хаффмана, 
Синтетические алгоритмы. 
Программные средства сжатия данных и уплотнения носителей
Введение. Основные понятия 
теории кодирования 
Теория кодирования - это раздел теории информации, изучающий 
способы отождествление сообщений с отображающими их сигналами. 
Код - набор знаков вторичного алфавита, используемый для 
представления знаков или их сочетаний первичного алфавита. 
Кодирование - перевод информации, представленной сообщением в 
первичном алфавите, в последовательность кодов. 
Декодирование - операция, обратная кодированию, т.е. восстановление 
информации в первичном алфавите по полученной последовательности 
кодов. 
Операции кодирования и декодирования называются обратимыми, если 
их последовательное применение обеспечивает возврат к исходной 
информации без каких-либо ее потерь. 
Код называется равномерным или блочным, если все кодовые слова 
имеют одинаковую длину.
Основные понятия теории 
Кодирование применяется для решения задач: 
• представление данных произвольной природы (например, чисел, 
текста, графики) в памяти компьютера; 
• защита информации от несанкционированного доступа; 
• обеспечение помехоустойчивости при передаче данных по каналам 
связи; 
• сжатие информации в базах данных. 
Источник 
сообщений 
Схема 
кодировани 
я 
Схема 
... декодирова- 
Адресат 
ния 
кодирования
Алфавитное кодирование 
Пусть заданы два алфавита А и В, состоящие из конечного числа 
символов: A = {a1, a2, …, an} и B = {b1, b2, …, bm}. 
Элементы алфавита называются буквами. Упорядоченный набор в 
алфавите А называется словом: а = a1, a2, …, an . 
Для слова а буква a1, называется началом, или префиксом, слова, а 
буква an - окончанием, или постфиксом, слова. 
Слова можно соединять. Для этого префикс второго слова должен 
следовать сразу за постфиксом первого, при этом в новом слове они 
утрачивают свой статус, если только одно из слов не было пустым.
Алфавитное кодирование 
Множество всех непустых слов алфавита A будем обозначать символом 
A*. 
Множество слов, составленных в алфавите B, обозначим B*. 
Множество A часто называют алфавитом сообщений, множество В – 
кодирующим алфавитом. 
Обозначим через F отображение слов алфавита А в алфавит В. 
Тогда слово b = F(a) назовем кодом слова а. 
Декодирование можно рассматривать как функцию F-1 – обратную 
функции F – кодированию.
Алфавитное кодирование. 
Неравномерное кодирование 
Знаки первичного алфавита кодируются комбинациями символов 
двоичного алфавита: 0 и 1. Длина кодов и, соответственно, 
длительность передачи отдельного кода, могут различаться. 
Длительности элементарных сигналов при этом одинаковые. 
Для передачи информации, в среднем приходящейся на знак 
первичного алфавита, необходимо время. 
Задача по оптимизации неравномерного кодирования заключается в 
построении схемы кодирования, в которой суммарная длительность 
кодов при передаче (или суммарное число кодов при хранении) 
данного сообщения была бы наименьшей.
Алфавитное кодирование. 
Неравномерное кодирование 
Суммарная длительность сообщения будет меньше, если знакам 
первичного алфавита, которые встречаются в сообщении чаще, 
присвоить меньшие по длине коды, а тем, относительная частота 
которых меньше – коды более длинные. 
Параллельно должна решаться проблема различимости кодов. 
Представим, что на выходе кодера получена следующая 
последовательность элементарных сигналов: 
00100010000111010101110000110
Алфавитное кодирование. 
Неравномерное кодирование 
1. Использование специальной комбинации элементарных сигналов, 
которая интерпретируется декодером как разделитель знаков. Его 
называют “Неравномерный код с разделителем”. 
Разделителем отдельных кодов букв может быть 
последовательность 00 (признак конца знака), а разделителем слов 
– 000 (признак конца слова – пробел). При этом можно установить 
правила построения кодов, например: 
~ код признака конца знака может быть включен в код буквы, 
поскольку не существует отдельно (т.е. кода всех букв будут 
заканчиваться 00); 
~ коды букв не должны содержать двух и более нулей подряд в 
середине (иначе они будут восприниматься как конец знака); 
~ разделителю слов (000) всегда предшествует признак конца 
знака и др.
Алфавитное кодирование. 
Неравномерное кодирование 
2. Применение префиксных кодов («приставка»). При прочтении 
(расшифровке) закодированного сообщения путем сопоставления с 
таблицей кодов всегда можно точно указать, где заканчивается один код и 
начинается другой. 
Таблица префиксных кодов некоторых 
русских букв 
а л м р у ы 
10 010 00 11 0110 0111 
Декодируем сообщение, в котором отсутствуют коды конца знака и слова: 
00100010000111010101110000110.
Алфавитное кодирование. 
Равномерное кодирование. 
Байтовый код 
Двоичный код первичного алфавита строится цепочками равной 
длины. Формировать признак конца знака не требуется. Приемное 
устройство отсчитывает оговоренное заранее количество 
элементарных сигналов и интерпретирует цепочку, соотнося ее с 
таблицей кодов. 
Применение равномерного кода оказывается одним из средств 
контроля правильности передачи, поскольку факт поступления 
лишнего элементарного сигнала или, наоборот, поступление 
неполного кода сразу интерпретируется как ошибка.
Алфавитное кодирование. 
Равномерное кодирование. 
Байтовый код 
Число знаков (сигналов) равномерного кода определяется по 
формуле: 
k ≥ Log2 N, 
где k-число сигналов, N – число символов в алфавите. 
Примером равномерного алфавитного кодирования является 
телеграфный код Бодо, пришедший на смену азбуке Морзе. 
Исходный алфавит должен содержать не более 32-х символов. 
k= Log2 32 = 5. 
Каждый знак первичного алфавита содержит 5 бит информации и 
кодируется цепочкой из 5 двоичных знаков. 
В русском алфавите 34 буквы (с пробелом). Поэтому пришлось 
объединить в один знак буквы е – ё, ь – ъ. После такого сжатия N = 
32. Знаки препинания, либо отсутствуют, либо заменяются 
буквенными аббревиатурами; такими как “ТЧК”, ЗПТ” и др.
Алфавитное кодирование. 
Равномерное кодирование. 
Байтовый код 
Равномерное алфавитное кодирование используется при 
представлении символьной (знаковой) информации в компьютере. 
Чтобы определить длину кода, необходимо начать с установления 
количество знаков в первичном алфавите. Компьютерный алфавит 
должен включать: 
1. Прописные и строчные буквы латинского алфавита, всего 26 х 2 = 
52шт. 
2. Прописные и строчные буквы русского алфавита:33 х 2 = 66шт. 
3. Цифры от 0 до 9 – всего 10шт. 
4. Знаки математических операций, знаки препинания, специальные 
символы, всего 20шт. 
Общее число символов N= 148. 
Длина кодовой цепочки: k > Log2148 > 7,21. Длина кода выражается 
целым числом, поэтому берется k = 8.
Стандартизации 
кодовых таблиц 
Первым таким международным стандартом, который применялся на 
больших вычислительных машинах, был EBCDIC (Extended Binary 
Coded Decimal Interchange Code) – расширенная двоичная кодировка 
десятичного кода обмена. 
В персональных компьютерах и телекоммуникационных системах 
применяется международный байтовый код ASCII (American 
Standard Code for Information Interchange – стандартный 
американский код обмена информацией). 
Регламентирует коды первой половины кодовой таблицы (номера 
кодов от 0 до 127): прописные и строчные английские буквы, цифры, 
знаки препинания и математических операций, управляющие коды. 
Вторая часть кодовой таблицы охватывает коды в интервале от 128 
до 255, используется для представления символов национальных 
алфавитов и символов псевдографики.
Алфавитное кодирование с 
неравной длительностью 
элементарных сигналов. Код Морзе 
Свой код Морзе разработал в 1838 г. 
Каждой букве или цифре сопоставляется некоторая 
последовательность кратковременных импульсов – точек и тире, 
разделяемых паузами. 
Пусть t- длительность импульса соответствует точке, тогда: 
3t – соответствует тире 
3t – пауза между буквами 
t - длительность паузы между точками, точкой и тире, между тире 
6t – длительность пазы между словами и т.д.
Блочное двоичное кодирование 
Кодовый знак относится к нескольким буквам первичного 
алфавита или к целому слову первичного языка. Такая 
комбинация называется блоком. Кодирование блоков понижает 
избыточность. 
Пусть имеется словарь некоторого языка, содержащий 
n = 16000 слов. Поставим в соответствие каждому слову 
равномерный двоичный код. Длину кода находим по формуле : 
k ≥ Log21600 > 13,97 = 14. 
Следовательно, каждое слово кодируется комбинацией из 14 
нулей и единиц.
Блочное двоичное кодирование 
В качестве примера закодируем несколько слов: 
ИНФОРМАТИКА - 10101011100110, 
НАУКА - 00000000000001, 
ИНТЕРЕСНАЯ - 00100000000010; 
Тогда последовательность: 
10101011100110 00100000000010 00000000000001 
будет означать «ИНФОРМАТИКА ИНТЕРЕСНАЯ НАУКА». 
Установлено, что средняя длина русского слова равна 5,3 буквам, а 
с учетом пробела между словами, она станет равной К=6,3 буквам. 
Таким образом, кодирование слов оказывается более выгодным, чем 
алфавитное. 
Вместо слов можно кодировать сочетания букв – блоки.
Теоретические основы сжатия 
данных. Алгоритмы сжатия 
данных. 
Цель процесса сжатия - получение более компактного выходного 
потока информационных единиц из некоторого изначально 
некомпактного входного потока при помощи некоторого их 
преобразования. 
Характерной особенностью большинства типов данных является их 
избыточность. Определяется: 
•типом данных; 
•принятой системой кодирования. 
Постоянно возникает проблема уменьшения избыточности или 
сжатия данных. Если методы сжатия данных применяются к готовым 
файлам, то часто вместо термина "сжатие данных" употребляют 
термин "архивация данных", сжатый вариант данных называют 
архивом, а программные средства, которые реализуют методы 
сжатия называются архиваторами.
Три теоретических способа уменьшения избыточности данных: 
1. изменение содержимого данных, 
2. изменение структуры данных, 
3. одновременное изменение как структуры, так и содержимого 
данных. 
Теоретические основы сжатия 
данных. Алгоритмы сжатия 
данных.
Теоретические основы сжатия 
данных. Алгоритмы сжатия 
данных. 
Основными техническими характеристиками процессов сжатия и 
результатов их работы являются: 
* степень сжатия (compress rating) или отношение (ratio) объемов 
исходного и результирующего потоков; 
* скорость сжатия - время, затрачиваемое на сжатие некоторого 
объема информации входного потока, до получения из него 
эквивалентного выходного потока; 
* качество сжатия - величина, показывающая на сколько сильно 
упакован выходной поток, при помощи применения к нему 
повторного сжатия по этому же или иному алгоритму.
Теоретические основы сжатия 
данных. Алгоритмы сжатия 
данных. 
Все способы сжатия можно разделить на две категории: 
обратимое и необратимое сжатие. 
Примерами форматов сжатия с потерями информации могут быть: 
•JPEG - для графических данных; 
•MPG - для видеоданных; 
•MP3 - для аудиоданных. 
Примеры форматов сжатия без потери информации: 
•GIF, TIFF - для графических данных; 
•AVI - для видеоданных; 
•ZIP, ARJ, RAR, CAB, LH - для произвольных типов данных.
Алгоритмы обратимых методов. 
При исследовании методов сжатия данных следует иметь в виду 
существование следующих доказанных теорем: 
1. Для любой последовательности данных существует теоретиче- 
ский предел сжатия, который не может быть превышен без потери 
части информации. 
2. Для любого алгоритма сжатия можно указать такую 
последовательность данных, для которой он обеспечит лучшую 
степень сжатия, чем другие методы. 
3. Для любого алгоритма сжатия можно указать такую 
последовательность данных, для которой данный алгоритм 
вообще не позволит получить сжатия.
Алгоритмы обратимых методов. 
Алгоритм Выходная 
структура 
Сфера 
применения Примечание 
RLE (Run- 
Length 
Encoding) 
Список 
(вектор 
данных) 
Графические 
данные 
Эффективность 
алгоритма не зависит 
от объема данных 
KWE 
(Keyword 
Encoding) 
Таблица 
данных 
(словарь) 
Текстовые 
данные 
Эффективен для 
массивов большого 
объема 
Алгоритм 
Хафмана 
Иерархичес- 
кая структура 
(дерево 
кодировки) 
Любые 
данные 
Эффективен для 
массивов большого 
объема
Алгоритмы обратимых методов. 
Алгоритм RLE. 
Сжатие способом кодирования серий. 
В основу алгоритмов RLE положен принцип выявления 
повторяющихся последовательностей данных и замены их 
простой структурой, в которой указывается код данных и 
коэффициент повтора. 
Последовательность из n одинаковых символов k заменяется 
парой символов nk. 
Строка “aaaaarooow”, 
после кодирования по алгоритму RLE сжатая строка “5ar3ow”. 
Кодированная строка на 4 символа меньше.
Алгоритмы обратимых методов. 
Алгоритм RLE. 
Например, для последовательности: 
0; 0; 0; 127; 127; 0; 255; 255; 255; 255 (всего 10 байтов) 
образуется следующий вектор, который при записи в строку имеет 
вид: 
3;0; 2; 127; 1; 0; 4; 255 (всего 8 байтов). 
В данном примере коэффициент сжатия равен 8/10 (80 %). 
Другой пример : 
44 44 44 11 11 11 11 11 01 03 FF 22 22 - исходная 
последовательность 
03 44 04 11 00 03 01 03 FF 02 22 - сжатая последовательность
Алгоритмы обратимых методов. 
Алгоритм RLE. 
Данный метод достаточно эффективен для сжатия растровых 
графических изображений (BMP, PCX, TIF, GIF), т.к. они содержат 
достаточно много длинных серий повторяющихся 
последовательностей байтов. 
Программные реализации алгоритмов RLE отличаются простотой, 
высокой скоростью работы, но в среднем обеспечивают 
недостаточное сжатие. Для текстовых данных методы RLE, как 
правило, неэффективны. 
Недостатком метода RLE является достаточно низкая степень 
сжатия.
Алгоритмы обратимых методов. 
Алгоритм RLE. Первый вариант 
алгоритма 
В данном алгоритме признаком счетчика служат единицы в двух 
верхних битах считанного файла: 
Соответственно оставшиеся 6 бит расходуются на счетчик, который может 
принимать значения от 1 до 64. Строку из 64 повторяющихся байтов мы 
превращаем в два байта, т.е. сожмем в 32 раза.
Алгоритмы обратимых методов. 
Алгоритм RLE. Второй вариант 
алгоритма 
Второй вариант этого алгоритма имеет больший максимальный 
коэффициент архивации и меньше увеличивает в размерах 
исходный файл. 
Признаком повтора в данном алгоритме является единица в 
старшем разряде соответствующего байта: 
Как можно легко подсчитать, в лучшем случае этот алгоритм сжимает 
файл в 64 раза (а не в 32 раза, как в предыдущем варианте), в худшем 
увеличивает на 1/128.
Алгоритмы обратимых методов. 
Алгоритм RLE. Характеристики 
алгоритма 
• Коэффициенты компрессии (Лучший, средний, худший 
коэффициенты): Первый вариант: 32; 2; 0,5. Второй вариант: 
64; 3; 128/129. 
• Класс изображений: Ориентирован алгоритм на изображения 
с небольшим количеством цветов: деловую и научную графику. 
• Характерные особенности: К положительным сторонам 
алгоритма, пожалуй, можно отнести только то, что он не 
требует дополнительной памяти при архивации и 
разархивации, а также быстро работает.
Алгоритмы обратимых методов. 
Алгоритм KWE. 
В основу алгоритмов кодирования по ключевым словам (Keyword 
Encoding) положено кодирование лексических единиц исходного 
документа группами байтов фиксированной длины. 
Примером лексической единицы может служить слово. 
Результат кодирования сводится в таблицу, которая прикладывается 
к Результирующему коду и представляет собой словарь. 
Обычно для англоязычных текстов принято использовать 
двухбайтную кодировку слов. Образующиеся при этом пары байтов 
называют токенами.
Алгоритмы обратимых методов. 
Алгоритм KWE. 
Для русскоязычных документов, отличающихся увеличенной 
длиной слов и большим количеством приставок, суффиксов и 
окончаний, не всегда удается ограничиться двухбайтными 
токенами, и эффективность метода заметно снижается. 
Эффективность метода существенно зависит от длины документа, 
поскольку из-за необходимости прикладывать к архиву словарь 
длина кратких документов не только не уменьшается, но даже 
возрастает.
Алгоритмы обратимых методов. 
Алгоритм KWE. 
Существует довольно много реализаций этого алгоритма, среди 
которых наиболее распространенными являются алгоритм Лемпеля- 
Зива (алгоритм LZ) и его модификация - алгоритм Лемпеля-Зива- 
Велча (алгоритм LZW). 
Словарем в данном алгоритме является потенциально бесконечный 
список фраз. 
Новая фраза, состоящая из индекса совпадения и следующего за ним 
символа, прибавляется в словарь.
Алгоритмы обратимых методов. 
Алгоритм KWE. Алгоритм LZ 
Название получил по инициалам двух исследователей - Абрахама 
Лемпэла (Abraham Lempel) и Якоба Зива (Jacob Ziv), разработавших в 
1970 году алгоритм. 
Суть метода: 
упаковщик постоянно хранит некоторое количество последних 
обработанных символов в буфере. По мере обработки входного потока 
вновь поступившие символы попадают в конец буфера, сдвигая 
предшествующие символы и вытесняя самые старые. 
Затем, после построения хеш таблиц алгоритм выделяет самую 
длинную начальную подстроку входного потока, совпадающую с одной 
из подстрок в словаре, и выдает на выход пару (length, distance), где 
length - длина найденной в словаре подстроки, а distance - расстояние 
от нее до входной подстроки (то есть фактически индекс подстроки в 
буфере, вычтенный из его размера).
Алгоритмы обратимых методов. 
Алгоритм KWE. Алгоритм LZ 
Увеличение размера файла в худшем случае на 32770/32768 (в двух 
байтах записано, что нужно переписать в выходной поток следующие 
215 байт), что совсем неплохо. Максимальный коэффициент сжатия 
составит в пределе 8192 раза. Минимальная подстрока, для которой 
выгодно проводить сжатие, должна состоять в общем случае 
минимум из 5 байт, что и определяет малую ценность данного 
алгоритма. 
К достоинствам LZ можно отнести чрезвычайную простоту алгоритма 
декомпрессии.
Алгоритмы обратимых методов. 
Алгоритм KWE. Алгоритм LZW 
Опубликован Велчем в 1984 году, в качестве улучшенной 
реализации алгоритма LZ. Алгоритм разработан так, чтобы его 
можно было быстро реализовать, но он не обязательно 
оптимален, поскольку не проводит никакого анализа входных 
данных. 
В 1987 году алгоритм стал частью стандарта на формат 
изображений GIF. В настоящее время, алгоритм содержится в 
стандарте PDF.
Алгоритмы обратимых методов. 
Алгоритм KWE. Алгоритм LZW 
Процедура LZW-сжатия: 
СТРОКА = очередной символ из входного потока 
WHILE входной поток не пуст DO 
СИМВОЛ = очередной символ из входного потока 
IF СТРОКА+СИМВОЛ в таблице строк THEN 
СТРОКА = СТРОКА+СИМВОЛ 
ELSE 
вывести в выходной поток код для СТРОКА 
добавить в таблицу строк СТРОКА+СИМВОЛ 
СТРОКА = СИМВОЛ 
END of IF 
END of WHILE 
вывести в выходной поток код для СТРОКА
Алгоритмы обратимых методов. 
Алгоритм KWE. Алгоритм LZW 
Пример: 
Входная строка: 
/WED/WE/WEE/ 
WEB/WET 
Вход 
(символы) 
Выход 
(коды) 
Новые коды и 
соответствующие строки 
/W / 256 = /W 
E W 257 = WE 
D E 258 = ED 
/ D 259 = D/ 
WE 256 260 = /WE 
/ E 261 = E/ 
WEE 260 262 = /WEE 
/W 261 263 = E/W 
EB 257 264 = WEB 
/ B 265 = B/ 
WET 260 266 = /WET 
<EOF> T
Алгоритмы обратимых методов. 
Алгоритм KWE. Алгоритм LZW 
Процедура LZW-распаковки: 
читать СТАРЫЙ_КОД 
вывести СТАРЫЙ_КОД 
WHILE входной поток не пуст DO 
читать НОВЫЙ_КОД 
СТРОКА = перевести НОВЫЙ_КОД 
вывести СТРОКУ 
СИМВОЛ = первый символ СТРОКИ 
добавить в таблицу перевода СТАРЫЙ_КОД+СИМВОЛ 
СТАРЫЙ_КОД = НОВЫЙ_КОД 
END of WHILE
Алгоритмы обратимых методов. 
Алгоритм KWE. Алгоритм LZW 
Пример: 
Входные коды: 
/WED256E2602 
61257B260T 
Вход Старый 
код Строка Сим- 
вол 
Новый вход 
таблицы 
Новый код Выход 
/ / / 
W / W W 256 = /W 
E W E E 257 = WE 
D E D D 258 = ED 
256 D /W / 259 = D/ 
E 256 E E 260 = /WE 
260 E /WE / 261 = E/ 
261 260 E/ E 262 = /WEE 
257 261 WE W 263 = E/W 
B 257 B B 264 = WEB 
260 B /WE / 265 = B/ 
T 260 T T 266 = /WET
Алгоритмы обратимых методов. 
Алгоритм KWE. Характеристики 
алгоритма LZW 
Коэффициенты компрессии (Лучший, средний, худший 
коэффициенты): Примерно 1000; 4; 5/7. Сжатие в 1000 раз 
достигается только на одноцветных изображениях размером 
кратным примерно 7 Мб. 
Класс изображений: Ориентирован LZW на 8-битные изображения, 
построенные на компьютере. Сжимает за счет одинаковых 
подцепочек в потоке. 
Характерные особенности: Ситуация, когда алгоритм увеличивает 
изображение, встречается крайне редко.
Алгоритмы обратимых методов. 
Алгоритм Хаффмана. 
Разработан в 1952 году аспирантом Массачусетского 
технологического института Дэвидом Хаффманом при написании 
им курсовой работы. 
В основе алгоритма лежит кодирование битовыми группами. 
Перед началом кодирования производится частотный анализ кода 
документа и выявляется частота повтора каждого из 
встречающихся символов.
Алгоритмы обратимых методов. 
Алгоритм Хаффмана. 
Сжимая файл по алгоритму Хаффмана первое что надо сделать - это 
прочитать файл полностью и подсчитать сколько раз встречается каждый 
символ из расширенного набора ASCII. 
Чем чаще встречается тот или иной символ, тем меньшим количеством 
битов он кодируется. 
После подсчета частоты вхождения каждого символа, необходимо 
просмотреть таблицу кодов ASCII и сформировать бинарное дерево. 
Образующаяся в результате кодирования иерархическая структура 
прикладывается к сжатому документу в качестве таблицы соответствия.
Алгоритмы обратимых методов. 
Алгоритм Хаффмана. 
Пример: 
Файл длинной в 100 байт содержит 6 различных символов в себе. 
Подсчет вхождений каждого из символов в файл дал следующее: 
Эти числа называют частотой вхождения для каждого символа.
Алгоритмы обратимых методов. 
Алгоритм Хаффмана. 
Возьмем из последней таблицы 2 символа с наименьшей частотой 
- это D (5) и какой либо символ из F или A (10), можно взять любой 
из них, например A. 
Сформируем из "узлов" D и A новый "узел", частота вхождения для 
которого будет равна сумме частот D и A:
Алгоритмы обратимых методов. 
Алгоритм Хаффмана. 
Теперь снова ищем два символа с самыми низкими частотами 
вхождения. Исключая из просмотра D и A и рассматривая вместо 
них новый "узел" с суммарной частотой вхождения. Самая низкая 
частота теперь у F и нового "узла". Снова сделаем операцию 
слияния узлов :
Алгоритмы обратимых методов. 
Алгоритм Хаффмана. 
Рассматриваем таблицу снова для следующих двух символов (B и E). 
Продолжаем пока все "дерево" не сформировано, т.е. пока все не 
сведется к одному узлу.
Алгоритмы обратимых методов. 
Алгоритм Хаффмана. 
Когда дерево создано, можно кодировать файл. 
Всегда начинают из корня (Root). Кодируя первый символ (лист 
дерева С), прослеживаем вверх по дереву все повороты ветвей и 
если мы делаем левый поворот, то запоминаем 0-й бит, и аналогично 
1-й бит для правого поворота. В результате получим: 
C = 00 ( 2 бита ) 
A = 0100 ( 4 бита ) 
D = 0101 ( 4 бита ) 
F = 011 ( 3 бита ) 
B = 10 ( 2 бита ) 
E = 11 ( 2 бита ) 
При кодировании заменяем символы на данные последовательности.
Алгоритмы обратимых методов. 
Алгоритм Хаффмана. 
Первоначальный размер файла : 100 байт - 800 бит; 
Размер сжатого файла : 30 байт - 240 бит; 
240 - 30% из 800 , так что сжали этот файл на 70%. 
Частота первоначально уплотненные 
биты 
уменьшено на 
C 30 
A 10 
D 5 
F 10 
B 20 
E 25 
30 x 8 = 240 
10 x 8 = 80 
5 x 8 = 40 
10 x 8 = 80 
20 x 8 = 160 
25 x 8 = 200 
30 x 2 = 60 
10 x 3 = 30 
5 x 4 = 20 
10 x 4 = 40 
20 x 2 = 40 
25 x 2 = 50 
180 
50 
20 
40 
120 
150
Алгоритмы обратимых методов. 
Алгоритм Хаффмана. 
Характеристики классического алгоритма Хаффмана: 
Коэффициенты компрессии (Лучший, средний, худший 
коэффициенты): 8; 1,5; 1. 
Класс изображений: Практически не применяется к 
изображениям в чистом виде. Обычно используется как один из 
этапов компрессии в более сложных схемах. 
Характерные особенности: Единственный алгоритм, который не 
увеличивает размера исходных данных в худшем случае (если 
не считать необходимости хранить таблицу перекодировки 
вместе с файлом).
Синтетические алгоритмы. 
Рассмотренные выше алгоритмы в «чистом виде» на практике не 
применяют из-за того, что эффективность каждого из них сильно 
зависит от начальных условий. В связи с этим, современные 
средства архивации данных используют более сложные алгоритмы, 
основанные на комбинации нескольких теоретических методов. 
Общим принципом в работе таких «синтетических» алгоритмов 
является предварительный просмотр и анализ исходных данных для 
индивидуальной настройки алгоритма, на особенности 
обрабатываемого материала.

More Related Content

What's hot

Общие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальОбщие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальAndrey Dolinin
 
Способы записи алгоритмов
Способы записи алгоритмовСпособы записи алгоритмов
Способы записи алгоритмовAndrey Dolinin
 
логика
логикалогика
логикаfinatalya
 
логика
логикалогика
логикаfinatalya
 
през лекц 2-9_кодиров_091214_v1
през лекц 2-9_кодиров_091214_v1през лекц 2-9_кодиров_091214_v1
през лекц 2-9_кодиров_091214_v1Gulnaz Shakirova
 
презентация2
презентация2презентация2
презентация2Suchkov
 

What's hot (8)

Общие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальОбщие сведения о языке программирования Паскаль
Общие сведения о языке программирования Паскаль
 
Способы записи алгоритмов
Способы записи алгоритмовСпособы записи алгоритмов
Способы записи алгоритмов
 
формальные языки и грамматики
формальные языки и грамматикиформальные языки и грамматики
формальные языки и грамматики
 
логика
логикалогика
логика
 
логика
логикалогика
логика
 
Модули автоматической обработки текстов в проекте aot.ru
Модули автоматической обработки текстов в проекте aot.ruМодули автоматической обработки текстов в проекте aot.ru
Модули автоматической обработки текстов в проекте aot.ru
 
през лекц 2-9_кодиров_091214_v1
през лекц 2-9_кодиров_091214_v1през лекц 2-9_кодиров_091214_v1
през лекц 2-9_кодиров_091214_v1
 
презентация2
презентация2презентация2
презентация2
 

Viewers also liked

Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Основные понятия, используемые при моделировании процессов предоставления пуб...
Основные понятия, используемые при моделировании процессов предоставления пуб...Основные понятия, используемые при моделировании процессов предоставления пуб...
Основные понятия, используемые при моделировании процессов предоставления пуб...Нижегородский институт управления
 
Механизмы реализации процессов оказания (предоставления) публичных услуг физи...
Механизмы реализации процессов оказания (предоставления) публичных услуг физи...Механизмы реализации процессов оказания (предоставления) публичных услуг физи...
Механизмы реализации процессов оказания (предоставления) публичных услуг физи...Нижегородский институт управления
 

Viewers also liked (20)

Введение в алгоритмы и структуры данных
Введение в алгоритмы и структуры данныхВведение в алгоритмы и структуры данных
Введение в алгоритмы и структуры данных
 
Алгоритмы поиска
Алгоритмы поискаАлгоритмы поиска
Алгоритмы поиска
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Оценка сложности алгоритма
Оценка сложности алгоритмаОценка сложности алгоритма
Оценка сложности алгоритма
 
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
 
Экономические аспекты общественного выбора
Экономические аспекты общественного выбораЭкономические аспекты общественного выбора
Экономические аспекты общественного выбора
 
5. Налоговая система
5. Налоговая система5. Налоговая система
5. Налоговая система
 
Статистика государственных финансов и налогов
Статистика государственных финансов и налоговСтатистика государственных финансов и налогов
Статистика государственных финансов и налогов
 
Статистика труда и занятости населения
Статистика труда и занятости населенияСтатистика труда и занятости населения
Статистика труда и занятости населения
 
Дивидендная политика
Дивидендная политикаДивидендная политика
Дивидендная политика
 
Финансовый менеджмент - теоретические основы
Финансовый менеджмент - теоретические основыФинансовый менеджмент - теоретические основы
Финансовый менеджмент - теоретические основы
 
Основные понятия, используемые при моделировании процессов предоставления пуб...
Основные понятия, используемые при моделировании процессов предоставления пуб...Основные понятия, используемые при моделировании процессов предоставления пуб...
Основные понятия, используемые при моделировании процессов предоставления пуб...
 
Статистика уровня жизни населения
Статистика уровня жизни населенияСтатистика уровня жизни населения
Статистика уровня жизни населения
 
4.Распределение доходов, эффективность и благосостояние
4.Распределение доходов, эффективность и благосостояние4.Распределение доходов, эффективность и благосостояние
4.Распределение доходов, эффективность и благосостояние
 
Концепции и модели - основные параметры управления
Концепции и модели - основные параметры управленияКонцепции и модели - основные параметры управления
Концепции и модели - основные параметры управления
 
Стратегический план МО
Стратегический план МОСтратегический план МО
Стратегический план МО
 
Внешний облик делового человека мужской деловой костюм
Внешний облик делового человека мужской деловой костюмВнешний облик делового человека мужской деловой костюм
Внешний облик делового человека мужской деловой костюм
 
Механизмы реализации процессов оказания (предоставления) публичных услуг физи...
Механизмы реализации процессов оказания (предоставления) публичных услуг физи...Механизмы реализации процессов оказания (предоставления) публичных услуг физи...
Механизмы реализации процессов оказания (предоставления) публичных услуг физи...
 
Концепции и модели - оценка объектов инвестирования
Концепции и модели - оценка объектов инвестированияКонцепции и модели - оценка объектов инвестирования
Концепции и модели - оценка объектов инвестирования
 
Статистика денежного обращения, цен и инфляции
Статистика денежного обращения, цен и инфляцииСтатистика денежного обращения, цен и инфляции
Статистика денежного обращения, цен и инфляции
 

Similar to Алгоритмы сжатия данных

представление текстовой информации
представление текстовой информациипредставление текстовой информации
представление текстовой информацииЕлена Ключева
 
Aлфавит Паскаль
Aлфавит ПаскальAлфавит Паскаль
Aлфавит Паскальalinabacalim
 
04
0404
04JIuc
 
кодирование инф.
кодирование инф.кодирование инф.
кодирование инф.Rushitech
 
Кодирование текстовой информации 10 класс
Кодирование текстовой информации 10 классКодирование текстовой информации 10 класс
Кодирование текстовой информации 10 классНаталья Зиненко
 
Кодирование текстовой информации
Кодирование текстовой информацииКодирование текстовой информации
Кодирование текстовой информацииСергей Балан
 
Алфавитное кодирование. Коды с минимальной избыточностью. Теорема Макмиллана.
Алфавитное кодирование. Коды с минимальной избыточностью. Теорема Макмиллана.Алфавитное кодирование. Коды с минимальной избыточностью. Теорема Макмиллана.
Алфавитное кодирование. Коды с минимальной избыточностью. Теорема Макмиллана.Alex Dainiak
 
Типы данных
Типы данныхТипы данных
Типы данныхOlgaDask
 
2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленкеОмские ИТ-субботники
 

Similar to Алгоритмы сжатия данных (17)

двоичное кодирвоание
двоичное кодирвоаниедвоичное кодирвоание
двоичное кодирвоание
 
представление текстовой информации
представление текстовой информациипредставление текстовой информации
представление текстовой информации
 
Aлфавит Паскаль
Aлфавит ПаскальAлфавит Паскаль
Aлфавит Паскаль
 
04
0404
04
 
8 3-1
8 3-18 3-1
8 3-1
 
кодирование инф.
кодирование инф.кодирование инф.
кодирование инф.
 
Кодирование текстовой информации 10 класс
Кодирование текстовой информации 10 классКодирование текстовой информации 10 класс
Кодирование текстовой информации 10 класс
 
info
infoinfo
info
 
лекция 9
лекция 9лекция 9
лекция 9
 
Кодирование текстовой информации
Кодирование текстовой информацииКодирование текстовой информации
Кодирование текстовой информации
 
Алфавитное кодирование. Коды с минимальной избыточностью. Теорема Макмиллана.
Алфавитное кодирование. Коды с минимальной избыточностью. Теорема Макмиллана.Алфавитное кодирование. Коды с минимальной избыточностью. Теорема Макмиллана.
Алфавитное кодирование. Коды с минимальной избыточностью. Теорема Макмиллана.
 
Типы данных
Типы данныхТипы данных
Типы данных
 
07 string
07 string07 string
07 string
 
лек7
лек7лек7
лек7
 
лек7
лек7лек7
лек7
 
лек8
лек8лек8
лек8
 
2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке
 

More from Нижегородский институт управления

Первое Всероссийское тестирование по истории Великой Отечественной войны
Первое Всероссийское тестирование по истории Великой Отечественной войныПервое Всероссийское тестирование по истории Великой Отечественной войны
Первое Всероссийское тестирование по истории Великой Отечественной войныНижегородский институт управления
 
Система национальных счетов и макроэкономических показателей. Платежный баланс
Система национальных счетов и макроэкономических показателей. Платежный балансСистема национальных счетов и макроэкономических показателей. Платежный баланс
Система национальных счетов и макроэкономических показателей. Платежный балансНижегородский институт управления
 

More from Нижегородский институт управления (20)

ФСПОиДП 14 лет
ФСПОиДП 14 летФСПОиДП 14 лет
ФСПОиДП 14 лет
 
Основные направления деятельности_ВШГУ2016
Основные направления деятельности_ВШГУ2016Основные направления деятельности_ВШГУ2016
Основные направления деятельности_ВШГУ2016
 
правила игры
правила игрыправила игры
правила игры
 
Первое Всероссийское тестирование по истории Великой Отечественной войны
Первое Всероссийское тестирование по истории Великой Отечественной войныПервое Всероссийское тестирование по истории Великой Отечественной войны
Первое Всероссийское тестирование по истории Великой Отечественной войны
 
70 лет со дня рождения Надеева Александра Тимофеевича
70 лет со дня рождения Надеева  Александра Тимофеевича70 лет со дня рождения Надеева  Александра Тимофеевича
70 лет со дня рождения Надеева Александра Тимофеевича
 
Статистика страхового и финансового рынков
Статистика страхового и финансового рынковСтатистика страхового и финансового рынков
Статистика страхового и финансового рынков
 
Статистика банковской и биржевой деятельности
Статистика банковской и биржевой деятельностиСтатистика банковской и биржевой деятельности
Статистика банковской и биржевой деятельности
 
Статистика населения
Статистика  населенияСтатистика  населения
Статистика населения
 
Система национальных счетов и макроэкономических показателей. Платежный баланс
Система национальных счетов и макроэкономических показателей. Платежный балансСистема национальных счетов и макроэкономических показателей. Платежный баланс
Система национальных счетов и макроэкономических показателей. Платежный баланс
 
Статистические показатели отраслей и секторов экономики
Статистические показатели отраслей и секторов экономикиСтатистические показатели отраслей и секторов экономики
Статистические показатели отраслей и секторов экономики
 
Статистика национального богатства: основные и оборотные фонды
Статистика национального богатства: основные и оборотные фондыСтатистика национального богатства: основные и оборотные фонды
Статистика национального богатства: основные и оборотные фонды
 
7. Бюджетный федерализм
7. Бюджетный федерализм7. Бюджетный федерализм
7. Бюджетный федерализм
 
6. Общественные расходы
6. Общественные расходы6. Общественные расходы
6. Общественные расходы
 
Общественные блага: свойства и классификация
Общественные блага: свойства и классификацияОбщественные блага: свойства и классификация
Общественные блага: свойства и классификация
 
1.Роль государства в современной смешанной экономике
1.Роль государства в современной  смешанной экономике1.Роль государства в современной  смешанной экономике
1.Роль государства в современной смешанной экономике
 
О Факультете «Высшая школа государственного управления»
О Факультете «Высшая школа государственного управления»О Факультете «Высшая школа государственного управления»
О Факультете «Высшая школа государственного управления»
 
Маркетинг региона как часть территориального маркетинга
Маркетинг региона как часть территориального маркетингаМаркетинг региона как часть территориального маркетинга
Маркетинг региона как часть территориального маркетинга
 
Инновационный маркетинг
Инновационный маркетингИнновационный маркетинг
Инновационный маркетинг
 
Профессиональная этика и этикет на государственной службе
Профессиональная этика и этикет на государственной службеПрофессиональная этика и этикет на государственной службе
Профессиональная этика и этикет на государственной службе
 
Приемы в деловой жизни
Приемы в деловой жизниПриемы в деловой жизни
Приемы в деловой жизни
 

Алгоритмы сжатия данных

  • 1. РОССИЙСКАЯ АКАДЕМИЯ НАРОДНОГО ХОЗЯЙСТВА И ГОСУДАРСТВЕННОЙ СЛУЖБЫ ПРИ ПРЕЗИДЕНТЕ РОССИЙСКОЙ ФЕДЕРАЦИИ Нижегородский институт управления Кафедра информатики и информационных технологий Введение в алгоритмы и структуры данных Ивина Наталья Львовна доцент кафедры Информатики и ИТ
  • 2. Тема 5. Алгоритмы сжатия данных Основные понятия и теоремы алфавитного и блочного кодирования. Теоретические основы сжатия данных. Алгоритмы обратимых методов: Алгоритм RLE, Алгоритм KWE, Алгоритм Хаффмана, Синтетические алгоритмы. Программные средства сжатия данных и уплотнения носителей
  • 3. Введение. Основные понятия теории кодирования Теория кодирования - это раздел теории информации, изучающий способы отождествление сообщений с отображающими их сигналами. Код - набор знаков вторичного алфавита, используемый для представления знаков или их сочетаний первичного алфавита. Кодирование - перевод информации, представленной сообщением в первичном алфавите, в последовательность кодов. Декодирование - операция, обратная кодированию, т.е. восстановление информации в первичном алфавите по полученной последовательности кодов. Операции кодирования и декодирования называются обратимыми, если их последовательное применение обеспечивает возврат к исходной информации без каких-либо ее потерь. Код называется равномерным или блочным, если все кодовые слова имеют одинаковую длину.
  • 4. Основные понятия теории Кодирование применяется для решения задач: • представление данных произвольной природы (например, чисел, текста, графики) в памяти компьютера; • защита информации от несанкционированного доступа; • обеспечение помехоустойчивости при передаче данных по каналам связи; • сжатие информации в базах данных. Источник сообщений Схема кодировани я Схема ... декодирова- Адресат ния кодирования
  • 5. Алфавитное кодирование Пусть заданы два алфавита А и В, состоящие из конечного числа символов: A = {a1, a2, …, an} и B = {b1, b2, …, bm}. Элементы алфавита называются буквами. Упорядоченный набор в алфавите А называется словом: а = a1, a2, …, an . Для слова а буква a1, называется началом, или префиксом, слова, а буква an - окончанием, или постфиксом, слова. Слова можно соединять. Для этого префикс второго слова должен следовать сразу за постфиксом первого, при этом в новом слове они утрачивают свой статус, если только одно из слов не было пустым.
  • 6. Алфавитное кодирование Множество всех непустых слов алфавита A будем обозначать символом A*. Множество слов, составленных в алфавите B, обозначим B*. Множество A часто называют алфавитом сообщений, множество В – кодирующим алфавитом. Обозначим через F отображение слов алфавита А в алфавит В. Тогда слово b = F(a) назовем кодом слова а. Декодирование можно рассматривать как функцию F-1 – обратную функции F – кодированию.
  • 7. Алфавитное кодирование. Неравномерное кодирование Знаки первичного алфавита кодируются комбинациями символов двоичного алфавита: 0 и 1. Длина кодов и, соответственно, длительность передачи отдельного кода, могут различаться. Длительности элементарных сигналов при этом одинаковые. Для передачи информации, в среднем приходящейся на знак первичного алфавита, необходимо время. Задача по оптимизации неравномерного кодирования заключается в построении схемы кодирования, в которой суммарная длительность кодов при передаче (или суммарное число кодов при хранении) данного сообщения была бы наименьшей.
  • 8. Алфавитное кодирование. Неравномерное кодирование Суммарная длительность сообщения будет меньше, если знакам первичного алфавита, которые встречаются в сообщении чаще, присвоить меньшие по длине коды, а тем, относительная частота которых меньше – коды более длинные. Параллельно должна решаться проблема различимости кодов. Представим, что на выходе кодера получена следующая последовательность элементарных сигналов: 00100010000111010101110000110
  • 9. Алфавитное кодирование. Неравномерное кодирование 1. Использование специальной комбинации элементарных сигналов, которая интерпретируется декодером как разделитель знаков. Его называют “Неравномерный код с разделителем”. Разделителем отдельных кодов букв может быть последовательность 00 (признак конца знака), а разделителем слов – 000 (признак конца слова – пробел). При этом можно установить правила построения кодов, например: ~ код признака конца знака может быть включен в код буквы, поскольку не существует отдельно (т.е. кода всех букв будут заканчиваться 00); ~ коды букв не должны содержать двух и более нулей подряд в середине (иначе они будут восприниматься как конец знака); ~ разделителю слов (000) всегда предшествует признак конца знака и др.
  • 10. Алфавитное кодирование. Неравномерное кодирование 2. Применение префиксных кодов («приставка»). При прочтении (расшифровке) закодированного сообщения путем сопоставления с таблицей кодов всегда можно точно указать, где заканчивается один код и начинается другой. Таблица префиксных кодов некоторых русских букв а л м р у ы 10 010 00 11 0110 0111 Декодируем сообщение, в котором отсутствуют коды конца знака и слова: 00100010000111010101110000110.
  • 11. Алфавитное кодирование. Равномерное кодирование. Байтовый код Двоичный код первичного алфавита строится цепочками равной длины. Формировать признак конца знака не требуется. Приемное устройство отсчитывает оговоренное заранее количество элементарных сигналов и интерпретирует цепочку, соотнося ее с таблицей кодов. Применение равномерного кода оказывается одним из средств контроля правильности передачи, поскольку факт поступления лишнего элементарного сигнала или, наоборот, поступление неполного кода сразу интерпретируется как ошибка.
  • 12. Алфавитное кодирование. Равномерное кодирование. Байтовый код Число знаков (сигналов) равномерного кода определяется по формуле: k ≥ Log2 N, где k-число сигналов, N – число символов в алфавите. Примером равномерного алфавитного кодирования является телеграфный код Бодо, пришедший на смену азбуке Морзе. Исходный алфавит должен содержать не более 32-х символов. k= Log2 32 = 5. Каждый знак первичного алфавита содержит 5 бит информации и кодируется цепочкой из 5 двоичных знаков. В русском алфавите 34 буквы (с пробелом). Поэтому пришлось объединить в один знак буквы е – ё, ь – ъ. После такого сжатия N = 32. Знаки препинания, либо отсутствуют, либо заменяются буквенными аббревиатурами; такими как “ТЧК”, ЗПТ” и др.
  • 13. Алфавитное кодирование. Равномерное кодирование. Байтовый код Равномерное алфавитное кодирование используется при представлении символьной (знаковой) информации в компьютере. Чтобы определить длину кода, необходимо начать с установления количество знаков в первичном алфавите. Компьютерный алфавит должен включать: 1. Прописные и строчные буквы латинского алфавита, всего 26 х 2 = 52шт. 2. Прописные и строчные буквы русского алфавита:33 х 2 = 66шт. 3. Цифры от 0 до 9 – всего 10шт. 4. Знаки математических операций, знаки препинания, специальные символы, всего 20шт. Общее число символов N= 148. Длина кодовой цепочки: k > Log2148 > 7,21. Длина кода выражается целым числом, поэтому берется k = 8.
  • 14. Стандартизации кодовых таблиц Первым таким международным стандартом, который применялся на больших вычислительных машинах, был EBCDIC (Extended Binary Coded Decimal Interchange Code) – расширенная двоичная кодировка десятичного кода обмена. В персональных компьютерах и телекоммуникационных системах применяется международный байтовый код ASCII (American Standard Code for Information Interchange – стандартный американский код обмена информацией). Регламентирует коды первой половины кодовой таблицы (номера кодов от 0 до 127): прописные и строчные английские буквы, цифры, знаки препинания и математических операций, управляющие коды. Вторая часть кодовой таблицы охватывает коды в интервале от 128 до 255, используется для представления символов национальных алфавитов и символов псевдографики.
  • 15. Алфавитное кодирование с неравной длительностью элементарных сигналов. Код Морзе Свой код Морзе разработал в 1838 г. Каждой букве или цифре сопоставляется некоторая последовательность кратковременных импульсов – точек и тире, разделяемых паузами. Пусть t- длительность импульса соответствует точке, тогда: 3t – соответствует тире 3t – пауза между буквами t - длительность паузы между точками, точкой и тире, между тире 6t – длительность пазы между словами и т.д.
  • 16. Блочное двоичное кодирование Кодовый знак относится к нескольким буквам первичного алфавита или к целому слову первичного языка. Такая комбинация называется блоком. Кодирование блоков понижает избыточность. Пусть имеется словарь некоторого языка, содержащий n = 16000 слов. Поставим в соответствие каждому слову равномерный двоичный код. Длину кода находим по формуле : k ≥ Log21600 > 13,97 = 14. Следовательно, каждое слово кодируется комбинацией из 14 нулей и единиц.
  • 17. Блочное двоичное кодирование В качестве примера закодируем несколько слов: ИНФОРМАТИКА - 10101011100110, НАУКА - 00000000000001, ИНТЕРЕСНАЯ - 00100000000010; Тогда последовательность: 10101011100110 00100000000010 00000000000001 будет означать «ИНФОРМАТИКА ИНТЕРЕСНАЯ НАУКА». Установлено, что средняя длина русского слова равна 5,3 буквам, а с учетом пробела между словами, она станет равной К=6,3 буквам. Таким образом, кодирование слов оказывается более выгодным, чем алфавитное. Вместо слов можно кодировать сочетания букв – блоки.
  • 18. Теоретические основы сжатия данных. Алгоритмы сжатия данных. Цель процесса сжатия - получение более компактного выходного потока информационных единиц из некоторого изначально некомпактного входного потока при помощи некоторого их преобразования. Характерной особенностью большинства типов данных является их избыточность. Определяется: •типом данных; •принятой системой кодирования. Постоянно возникает проблема уменьшения избыточности или сжатия данных. Если методы сжатия данных применяются к готовым файлам, то часто вместо термина "сжатие данных" употребляют термин "архивация данных", сжатый вариант данных называют архивом, а программные средства, которые реализуют методы сжатия называются архиваторами.
  • 19. Три теоретических способа уменьшения избыточности данных: 1. изменение содержимого данных, 2. изменение структуры данных, 3. одновременное изменение как структуры, так и содержимого данных. Теоретические основы сжатия данных. Алгоритмы сжатия данных.
  • 20. Теоретические основы сжатия данных. Алгоритмы сжатия данных. Основными техническими характеристиками процессов сжатия и результатов их работы являются: * степень сжатия (compress rating) или отношение (ratio) объемов исходного и результирующего потоков; * скорость сжатия - время, затрачиваемое на сжатие некоторого объема информации входного потока, до получения из него эквивалентного выходного потока; * качество сжатия - величина, показывающая на сколько сильно упакован выходной поток, при помощи применения к нему повторного сжатия по этому же или иному алгоритму.
  • 21. Теоретические основы сжатия данных. Алгоритмы сжатия данных. Все способы сжатия можно разделить на две категории: обратимое и необратимое сжатие. Примерами форматов сжатия с потерями информации могут быть: •JPEG - для графических данных; •MPG - для видеоданных; •MP3 - для аудиоданных. Примеры форматов сжатия без потери информации: •GIF, TIFF - для графических данных; •AVI - для видеоданных; •ZIP, ARJ, RAR, CAB, LH - для произвольных типов данных.
  • 22. Алгоритмы обратимых методов. При исследовании методов сжатия данных следует иметь в виду существование следующих доказанных теорем: 1. Для любой последовательности данных существует теоретиче- ский предел сжатия, который не может быть превышен без потери части информации. 2. Для любого алгоритма сжатия можно указать такую последовательность данных, для которой он обеспечит лучшую степень сжатия, чем другие методы. 3. Для любого алгоритма сжатия можно указать такую последовательность данных, для которой данный алгоритм вообще не позволит получить сжатия.
  • 23. Алгоритмы обратимых методов. Алгоритм Выходная структура Сфера применения Примечание RLE (Run- Length Encoding) Список (вектор данных) Графические данные Эффективность алгоритма не зависит от объема данных KWE (Keyword Encoding) Таблица данных (словарь) Текстовые данные Эффективен для массивов большого объема Алгоритм Хафмана Иерархичес- кая структура (дерево кодировки) Любые данные Эффективен для массивов большого объема
  • 24. Алгоритмы обратимых методов. Алгоритм RLE. Сжатие способом кодирования серий. В основу алгоритмов RLE положен принцип выявления повторяющихся последовательностей данных и замены их простой структурой, в которой указывается код данных и коэффициент повтора. Последовательность из n одинаковых символов k заменяется парой символов nk. Строка “aaaaarooow”, после кодирования по алгоритму RLE сжатая строка “5ar3ow”. Кодированная строка на 4 символа меньше.
  • 25. Алгоритмы обратимых методов. Алгоритм RLE. Например, для последовательности: 0; 0; 0; 127; 127; 0; 255; 255; 255; 255 (всего 10 байтов) образуется следующий вектор, который при записи в строку имеет вид: 3;0; 2; 127; 1; 0; 4; 255 (всего 8 байтов). В данном примере коэффициент сжатия равен 8/10 (80 %). Другой пример : 44 44 44 11 11 11 11 11 01 03 FF 22 22 - исходная последовательность 03 44 04 11 00 03 01 03 FF 02 22 - сжатая последовательность
  • 26. Алгоритмы обратимых методов. Алгоритм RLE. Данный метод достаточно эффективен для сжатия растровых графических изображений (BMP, PCX, TIF, GIF), т.к. они содержат достаточно много длинных серий повторяющихся последовательностей байтов. Программные реализации алгоритмов RLE отличаются простотой, высокой скоростью работы, но в среднем обеспечивают недостаточное сжатие. Для текстовых данных методы RLE, как правило, неэффективны. Недостатком метода RLE является достаточно низкая степень сжатия.
  • 27. Алгоритмы обратимых методов. Алгоритм RLE. Первый вариант алгоритма В данном алгоритме признаком счетчика служат единицы в двух верхних битах считанного файла: Соответственно оставшиеся 6 бит расходуются на счетчик, который может принимать значения от 1 до 64. Строку из 64 повторяющихся байтов мы превращаем в два байта, т.е. сожмем в 32 раза.
  • 28. Алгоритмы обратимых методов. Алгоритм RLE. Второй вариант алгоритма Второй вариант этого алгоритма имеет больший максимальный коэффициент архивации и меньше увеличивает в размерах исходный файл. Признаком повтора в данном алгоритме является единица в старшем разряде соответствующего байта: Как можно легко подсчитать, в лучшем случае этот алгоритм сжимает файл в 64 раза (а не в 32 раза, как в предыдущем варианте), в худшем увеличивает на 1/128.
  • 29. Алгоритмы обратимых методов. Алгоритм RLE. Характеристики алгоритма • Коэффициенты компрессии (Лучший, средний, худший коэффициенты): Первый вариант: 32; 2; 0,5. Второй вариант: 64; 3; 128/129. • Класс изображений: Ориентирован алгоритм на изображения с небольшим количеством цветов: деловую и научную графику. • Характерные особенности: К положительным сторонам алгоритма, пожалуй, можно отнести только то, что он не требует дополнительной памяти при архивации и разархивации, а также быстро работает.
  • 30. Алгоритмы обратимых методов. Алгоритм KWE. В основу алгоритмов кодирования по ключевым словам (Keyword Encoding) положено кодирование лексических единиц исходного документа группами байтов фиксированной длины. Примером лексической единицы может служить слово. Результат кодирования сводится в таблицу, которая прикладывается к Результирующему коду и представляет собой словарь. Обычно для англоязычных текстов принято использовать двухбайтную кодировку слов. Образующиеся при этом пары байтов называют токенами.
  • 31. Алгоритмы обратимых методов. Алгоритм KWE. Для русскоязычных документов, отличающихся увеличенной длиной слов и большим количеством приставок, суффиксов и окончаний, не всегда удается ограничиться двухбайтными токенами, и эффективность метода заметно снижается. Эффективность метода существенно зависит от длины документа, поскольку из-за необходимости прикладывать к архиву словарь длина кратких документов не только не уменьшается, но даже возрастает.
  • 32. Алгоритмы обратимых методов. Алгоритм KWE. Существует довольно много реализаций этого алгоритма, среди которых наиболее распространенными являются алгоритм Лемпеля- Зива (алгоритм LZ) и его модификация - алгоритм Лемпеля-Зива- Велча (алгоритм LZW). Словарем в данном алгоритме является потенциально бесконечный список фраз. Новая фраза, состоящая из индекса совпадения и следующего за ним символа, прибавляется в словарь.
  • 33. Алгоритмы обратимых методов. Алгоритм KWE. Алгоритм LZ Название получил по инициалам двух исследователей - Абрахама Лемпэла (Abraham Lempel) и Якоба Зива (Jacob Ziv), разработавших в 1970 году алгоритм. Суть метода: упаковщик постоянно хранит некоторое количество последних обработанных символов в буфере. По мере обработки входного потока вновь поступившие символы попадают в конец буфера, сдвигая предшествующие символы и вытесняя самые старые. Затем, после построения хеш таблиц алгоритм выделяет самую длинную начальную подстроку входного потока, совпадающую с одной из подстрок в словаре, и выдает на выход пару (length, distance), где length - длина найденной в словаре подстроки, а distance - расстояние от нее до входной подстроки (то есть фактически индекс подстроки в буфере, вычтенный из его размера).
  • 34. Алгоритмы обратимых методов. Алгоритм KWE. Алгоритм LZ Увеличение размера файла в худшем случае на 32770/32768 (в двух байтах записано, что нужно переписать в выходной поток следующие 215 байт), что совсем неплохо. Максимальный коэффициент сжатия составит в пределе 8192 раза. Минимальная подстрока, для которой выгодно проводить сжатие, должна состоять в общем случае минимум из 5 байт, что и определяет малую ценность данного алгоритма. К достоинствам LZ можно отнести чрезвычайную простоту алгоритма декомпрессии.
  • 35. Алгоритмы обратимых методов. Алгоритм KWE. Алгоритм LZW Опубликован Велчем в 1984 году, в качестве улучшенной реализации алгоритма LZ. Алгоритм разработан так, чтобы его можно было быстро реализовать, но он не обязательно оптимален, поскольку не проводит никакого анализа входных данных. В 1987 году алгоритм стал частью стандарта на формат изображений GIF. В настоящее время, алгоритм содержится в стандарте PDF.
  • 36. Алгоритмы обратимых методов. Алгоритм KWE. Алгоритм LZW Процедура LZW-сжатия: СТРОКА = очередной символ из входного потока WHILE входной поток не пуст DO СИМВОЛ = очередной символ из входного потока IF СТРОКА+СИМВОЛ в таблице строк THEN СТРОКА = СТРОКА+СИМВОЛ ELSE вывести в выходной поток код для СТРОКА добавить в таблицу строк СТРОКА+СИМВОЛ СТРОКА = СИМВОЛ END of IF END of WHILE вывести в выходной поток код для СТРОКА
  • 37. Алгоритмы обратимых методов. Алгоритм KWE. Алгоритм LZW Пример: Входная строка: /WED/WE/WEE/ WEB/WET Вход (символы) Выход (коды) Новые коды и соответствующие строки /W / 256 = /W E W 257 = WE D E 258 = ED / D 259 = D/ WE 256 260 = /WE / E 261 = E/ WEE 260 262 = /WEE /W 261 263 = E/W EB 257 264 = WEB / B 265 = B/ WET 260 266 = /WET <EOF> T
  • 38. Алгоритмы обратимых методов. Алгоритм KWE. Алгоритм LZW Процедура LZW-распаковки: читать СТАРЫЙ_КОД вывести СТАРЫЙ_КОД WHILE входной поток не пуст DO читать НОВЫЙ_КОД СТРОКА = перевести НОВЫЙ_КОД вывести СТРОКУ СИМВОЛ = первый символ СТРОКИ добавить в таблицу перевода СТАРЫЙ_КОД+СИМВОЛ СТАРЫЙ_КОД = НОВЫЙ_КОД END of WHILE
  • 39. Алгоритмы обратимых методов. Алгоритм KWE. Алгоритм LZW Пример: Входные коды: /WED256E2602 61257B260T Вход Старый код Строка Сим- вол Новый вход таблицы Новый код Выход / / / W / W W 256 = /W E W E E 257 = WE D E D D 258 = ED 256 D /W / 259 = D/ E 256 E E 260 = /WE 260 E /WE / 261 = E/ 261 260 E/ E 262 = /WEE 257 261 WE W 263 = E/W B 257 B B 264 = WEB 260 B /WE / 265 = B/ T 260 T T 266 = /WET
  • 40. Алгоритмы обратимых методов. Алгоритм KWE. Характеристики алгоритма LZW Коэффициенты компрессии (Лучший, средний, худший коэффициенты): Примерно 1000; 4; 5/7. Сжатие в 1000 раз достигается только на одноцветных изображениях размером кратным примерно 7 Мб. Класс изображений: Ориентирован LZW на 8-битные изображения, построенные на компьютере. Сжимает за счет одинаковых подцепочек в потоке. Характерные особенности: Ситуация, когда алгоритм увеличивает изображение, встречается крайне редко.
  • 41. Алгоритмы обратимых методов. Алгоритм Хаффмана. Разработан в 1952 году аспирантом Массачусетского технологического института Дэвидом Хаффманом при написании им курсовой работы. В основе алгоритма лежит кодирование битовыми группами. Перед началом кодирования производится частотный анализ кода документа и выявляется частота повтора каждого из встречающихся символов.
  • 42. Алгоритмы обратимых методов. Алгоритм Хаффмана. Сжимая файл по алгоритму Хаффмана первое что надо сделать - это прочитать файл полностью и подсчитать сколько раз встречается каждый символ из расширенного набора ASCII. Чем чаще встречается тот или иной символ, тем меньшим количеством битов он кодируется. После подсчета частоты вхождения каждого символа, необходимо просмотреть таблицу кодов ASCII и сформировать бинарное дерево. Образующаяся в результате кодирования иерархическая структура прикладывается к сжатому документу в качестве таблицы соответствия.
  • 43. Алгоритмы обратимых методов. Алгоритм Хаффмана. Пример: Файл длинной в 100 байт содержит 6 различных символов в себе. Подсчет вхождений каждого из символов в файл дал следующее: Эти числа называют частотой вхождения для каждого символа.
  • 44. Алгоритмы обратимых методов. Алгоритм Хаффмана. Возьмем из последней таблицы 2 символа с наименьшей частотой - это D (5) и какой либо символ из F или A (10), можно взять любой из них, например A. Сформируем из "узлов" D и A новый "узел", частота вхождения для которого будет равна сумме частот D и A:
  • 45. Алгоритмы обратимых методов. Алгоритм Хаффмана. Теперь снова ищем два символа с самыми низкими частотами вхождения. Исключая из просмотра D и A и рассматривая вместо них новый "узел" с суммарной частотой вхождения. Самая низкая частота теперь у F и нового "узла". Снова сделаем операцию слияния узлов :
  • 46. Алгоритмы обратимых методов. Алгоритм Хаффмана. Рассматриваем таблицу снова для следующих двух символов (B и E). Продолжаем пока все "дерево" не сформировано, т.е. пока все не сведется к одному узлу.
  • 47. Алгоритмы обратимых методов. Алгоритм Хаффмана. Когда дерево создано, можно кодировать файл. Всегда начинают из корня (Root). Кодируя первый символ (лист дерева С), прослеживаем вверх по дереву все повороты ветвей и если мы делаем левый поворот, то запоминаем 0-й бит, и аналогично 1-й бит для правого поворота. В результате получим: C = 00 ( 2 бита ) A = 0100 ( 4 бита ) D = 0101 ( 4 бита ) F = 011 ( 3 бита ) B = 10 ( 2 бита ) E = 11 ( 2 бита ) При кодировании заменяем символы на данные последовательности.
  • 48. Алгоритмы обратимых методов. Алгоритм Хаффмана. Первоначальный размер файла : 100 байт - 800 бит; Размер сжатого файла : 30 байт - 240 бит; 240 - 30% из 800 , так что сжали этот файл на 70%. Частота первоначально уплотненные биты уменьшено на C 30 A 10 D 5 F 10 B 20 E 25 30 x 8 = 240 10 x 8 = 80 5 x 8 = 40 10 x 8 = 80 20 x 8 = 160 25 x 8 = 200 30 x 2 = 60 10 x 3 = 30 5 x 4 = 20 10 x 4 = 40 20 x 2 = 40 25 x 2 = 50 180 50 20 40 120 150
  • 49. Алгоритмы обратимых методов. Алгоритм Хаффмана. Характеристики классического алгоритма Хаффмана: Коэффициенты компрессии (Лучший, средний, худший коэффициенты): 8; 1,5; 1. Класс изображений: Практически не применяется к изображениям в чистом виде. Обычно используется как один из этапов компрессии в более сложных схемах. Характерные особенности: Единственный алгоритм, который не увеличивает размера исходных данных в худшем случае (если не считать необходимости хранить таблицу перекодировки вместе с файлом).
  • 50. Синтетические алгоритмы. Рассмотренные выше алгоритмы в «чистом виде» на практике не применяют из-за того, что эффективность каждого из них сильно зависит от начальных условий. В связи с этим, современные средства архивации данных используют более сложные алгоритмы, основанные на комбинации нескольких теоретических методов. Общим принципом в работе таких «синтетических» алгоритмов является предварительный просмотр и анализ исходных данных для индивидуальной настройки алгоритма, на особенности обрабатываемого материала.