Презентация по информатике на тему Сжатие двоичного кода (10 класс, профильный уровень)


Сжатие двоичного кода Любая информация в компьютере представляется в форме двоичного кода. Чем больше длина этого кода, тем больше места в памяти компьютера он занимает, тем больше времени требуется для его передачи по каналам связи. Все это складывается на производительности компьютера, на эффективности использования компьютерных сетей. Для сокращения объема данных выполняется их сжатие.Сжатие данных – это процесс, обеспечивающий уменьшение объема данных за счет изменения способа их организации.Возможны две ситуации при сжатии:Потеря информации в результате сжатия недопустимы;Допустима частичная потеря информации в результате сжатия. При упаковке данных в файловые архивы производится их сжатие без потери информации.Файловые архивы создаются для временного хранения на носителях или передачи по каналам связи. Для работы с этими данными требуется их распаковка (разархивирование), т.е. приведение к первоначальному виду. При этом ни один бит не должен быть потерян. Например:Если сжатию подвергается текст, то после распаковки в нем не должен быть искажен ни один символ.Сжатая программа также должна полностью восстанавливаться, поскольку малейшее искажение приведет ее в неработоспособное состояние. Сжатие с частичной потерей информацииПроизводится при сжатии кода изображения (графики, видео) и звука. Сжатие кода графики.Объем кода можно сократить за счет того, что коды цвета хранить не для каждого пикселя, а через один, два и т.д. пикселей растра.Чем больше такие пропуски, тем больше сжимаются данные, но при этом ухудшается качество изображения Сжатие кода видео.Быстро меняющиеся фрагменты фильма можно кодировать менее подробно, чем статические кадры. Сжатие кода звука.Поддается труднее всего.При хорошем качестве записи его объем в несжатом виде очень большой, а избыточность относительно мала.Используется психофизиологические особенности человеческого слуха. Учитывается, к каким гармоникам естественного звука наш слух более восприимчив, а к каким – менее. Слабо воспринимаемые гармоники отфильтровываются путем математической обработки. Сжатию также способствует учет нелинейной зависимости между амплитудой звуковых колебаний и восприятием нашим ухом громкости звучания. Сжатие без потери информацииПервый подход: использование неравномерного кода.Второй подход: выявление повторяющихся фрагментов кода. Использование неравномерного кода.Символы с меньшим информационным весом, т.е.часто встречающиеся, кодировать более коротким кодом по сравнению с реже встречающимися символами.При таком подходе можно существенно сократить объем общего кода текста и, соответственно, места, занимаемого им в памяти компьютера. Одним из простейших, но весьма эффективных способов построения двоичного неравномерно кода, является алгоритм Дэвида Хаффмана Алгоритм Хаффмана -Адаптивный алгоритм оптимального префиксного кодирования алфавита с минимальной избыточностью. Был разработан 1952 году аспирантом Массачусетского технологического института Дэвидом Хаффманом при написании им курсовой работы. В настоящее время используется во многих программах сжатия данных. Таблица ХаффманаВ этой таблице буквы расположены в порядке убывания частоты повторяемости в тексте. Самые часто используемые в текстах буквы «Е» и «Т» имеют коды размером 3 бита, а самые редкие буквы «Q» и «Z» – 10 битов.Особенностью данного кода является его префиксная структура. Это значит, что код любого символа не совпадает с началом кода всех остальных символов.
Префиксные кодыЧтобы понять, как строятся префиксные коды, рассмотрим, как построить ориентированный граф, определяющий этот код. Например, кодовые слова 00, 01, 10, 011, 100, 101, 1001, 1010, 1111, кодируют соответственно буквы: a, b, c, d, e, f, g, h, i. Префиксные кодыПостроим граф этого кода.Из начальной вершины выходят две дуги, помеченные 0 и 1. Затем из конца каждой такой дуги входят новые дуги, помеченные 0 и 1 так, чтобы, идя по этим дугам от корня, читалось начало какого-либо кодового слова. Префиксные кодыЕсли при этом какая-то последовательность оказывается прочитанной полностью, то у конца последней дуги пишется кодируемый символ. Из получившихся вершин снова проводятся дуги — и так далее, до тех пор, пока не будут исчерпаны все коды. Коэффициентом сжатия называют отношение длины кода в байтах после сжатия к его длине до сжатия.В данном примере: коэффициент сжатия = 16/29  0,55Раскодирование (распаковка) текста производится с помощью двоичного дерева кодирования Хаффмана.Деревом называется графическое представление (граф) структуры связей между элементами некоторой системы.Двоичным деревом называется дерево, в котором любая вершина, имеет не более двух потомков.Корнем дерева называется единственная вершина, не имеющая родительской вершины.Листьями дерева называются вершины, не имеющие потомков. Графическое изображение дерева Хаффмана, соответствующего табл. 1.8 Пример:Предположим, что необходимо выполнить сжатие текстового документа с фразой “мама_мыла_раму”. Наш исходный текст “весит” 112 бит, так как каждый символ занимает 8 бит в кодовой таблице, а таких символов у нас 14 штук. 1. Составляем таблицу частот, то есть, подсчитываем количество вхождений каждой буквы во фразу, в результате чего получим вес каждой буквы:урлы-аМ1111244 2. Сортируем значения в таблице по весам, в порядке спадания:ма-ылру4421111 3. Выбираем 2 значения с минимальными весами (“р” и “у”), суммируем их веса и заменяем эти значения в таблице одним объединенным значением:ма-ылру442112 Формируем дерево 4. Снова выбираем 2 значения с минимальными весами (“ы” и “л”), делаем с ними то же, что и на предыдущем шаге:МА-ЫЛРУ44222 Дерево стало таким: 5. Снова выбираем 2 значения с минимальными весами (“ыл” и “ру”), делаем с ними то же, что и на предыдущем шаге:МФ-ЫЛРУ4424 Дерево стало таким: 6. Снова выбираем 2 значения с минимальными весами (“_” и “ылру”), делаем с ними то же, что и на предыдущем шагеМА-ЫЛРУ446 Дерево стало таким: 7. Снова выбираем 2 значения с минимальными весами (“м” и “а”), делаем с ними то же, что и на предыдущем шаге:МА-ЫЛРУ86 Дерево стало таким: Последний шаг:МА_ЫЛРУ14 РЕЗУЛЬТАТма-ылру00011011001101111011114421111КОЭФФИЦИЕНТ СЖАТИЯ: 112/40=2,8 Решить самостоятельно:Постройте код Хаффмана для фраз и определить коэффициент сжатия.Карл_ у_клары_украл_ кораллы, а_клара_У_карла_украла_кларнетНА_ ДВОРЕ_ ТРАВА,_ НА_ ТРАВЕ_ ДРОВА Решить самостоятельно:2. Закодируйте с помощью кода Хаффмана следующий текст:HAPPYNEWYEAR3. Расшифруйте с помощью двоичного дерева Хаффмана следующий код:11110111 10111100 00011100 00101100 10010011 01110100 11001111 11101101001100 Для кодирования сообщения, состоящего из букв А, Б, В, Г и Д, используется неравномерный двоичный код, позволяющий однозначно декодировать полученную двоичную последовательность. А–00, Б–010, В–011, Г–101, Д–111. Можно ли сократить для одной из букв длину кодового слова так, чтобы код по-прежнему можно было декодировать однозначно? Выберите правильный вариант ответа.1) для буквы Б – 01 2) это невозможно3) для буквы В – 01 4) для буквы Г – 01Задача А9 00000101111011кореньЗадача А9. Решение.Построим двоичное дерево, в котором от каждого узла отходит две ветки: 0 или 1.Разместим на дереве буквы А, Б, В, Г и Д так, чтобы их код получался как последовательность чисел на рёбрах:АБВГД
Задача А9. Решение.По дереву определим, что для букв Г и Д код можно сократить. Выберем ответ из предложенных вариантов:1) для буквы Б – 01 2) это невозможно3) для буквы В – 01 4) для буквы Г – 0100000101111011АБВГДОтвет: 4. Для передачи по каналу связи сообщения, состоящего только из букв А, Б, В, Г, решили использовать неравномерный по длине код: A=0, Б=10, В=110. Как нужно закодировать букву Г, чтобы длина кода была минимальной и допускалось однозначное разбиение кодированного сообщения на буквы?1) 1 2) 1110 3) 111 4) 11 Для самостоятельной работы Для 5 букв латинского алфавита заданы их двоичные коды. Эти коды представлены в таблице:Задача А9ABCDE0000110010011Определить, какой набор букв закодирован двоичной строкой 0110100011000 Для передачи по каналу связи сообщения, состоящего только из букв А, Б, В, Г, решили использовать неравномерный по длине код: A=0, Б=10, В=110. Как нужно закодировать букву Г, чтобы длина кода была минимальной и допускалось однозначное разбиение кодированного сообщения на буквы?Задача А9 Д/ЗПостройте код Хаффмана для фраз и определить коэффициент сжатия.ОТ_ТОПОТА_КОПЫТ_ПЫЛЬ_ПО_ПОЛЮ_ЛЕТИТШЛА_САША_ПО_ШОССЕ_И СОСАЛА_СУШКУ