Добавлен: 16.05.2023
Просмотров: 890
Скачиваний: 5
СОДЕРЖАНИЕ
Глава 1. Кодирование. Методы кодирования данных.
1.1. Регистрационные методы кодирования данных
1.1.1. Порядковый метод кодирования
1.1.2. Серийно-порядковый метод кодирования
1.2. Классификационные методы кодирования данных
1.2.1. Последовательный метод кодирования
1.2.2. Параллельный метод кодирования данных
Глава 2. Методы кодирования - сжатие или упаковка данных
Глава 3. Кодирование как средство защиты информации от несанкционированного доступа
Рассмотрев главу 1 можно сделать вывод, что приведенные классификационные методы кодирования данных (последовательный и параллельный) характеризуются тем, что при глубокой классификации объектов код несет информацию о классификационной группировке, но не всегда опознает конкретный объект, а коды, полученные на основе регистрационных методов кодирования данных (порядковый и серийно-порядковый) при том, что хорошо выполняют функцию идентификации объектов, на деле почти не несут информацию об их свойствах. Поэтому регистрационные и классификационные методы кодирования данных чаще всего применяются в классификаторах в сочетании друг с другом.
___________________
1 Герасеймчук К.А. Кодирование. Основа кодирования: Учебник для вузов / К.А. Герасеймчук – СПб.: Питер, 2011. – 136 с.
Глава 2. Методы кодирования - сжатие или упаковка данных
Довольно часто в отдельный класс выделяют методы кодирования, которые позволяют построить (без потери информации) коды сообщений, имеющие меньшую длину по сравнению с исходным сообщением. Такие методы кодирования называют методами сжатия или упаковки данных. Качество сжатия определяется коэффициентом сжатия, который обычно измеряется в процентах и который показывает на сколько процентов кодированное сообщение короче исходного.11
Сжатие данных (data compression) – технический прием сокращения объема (размеров) записи данных на их носителе (жестком магнитном диске, дискете, магнитной ленте), реализуется разными методами, предпочтительно использующими кодирование (повторяющихся слов, фраз, символов). Выделяют две группы режимов сжатия данных – статическую и динамическую. Различают также виды сжатий:
- физическое и логическое;
- симметричное и асимметричное;
- адаптивное, полуадаптивное и неадаптивное кодирование;
- сжатие без потерь, с потерями и минимизацией потерь.7
Алгоритм Шеннона-Фано – один из первых алгоритмов сжатия, который впервые сформулировали американские ученые Шеннон и Роберт Фано. Данный метод сжатия имеет большое сходство с алгоритмом Хаффмана, который появился на несколько лет позже и является логическим продолжением алгоритма Шеннона.14
Далее рассмотрим подробнее алгоритмы Шеннона-Фано и Хаффмана.
___________________
11 Шавенько Н.К. Основы теории информации и кодирования / Н.К. Шавенько. – М.: МИИГАиК, 2012. – 28 с.
7 Русанов К.Л. Приемы сокращения объемов информации / К.Л. Русанов. – М.: ЮНИТИ-ДАНА, 2013. – 58 с.
14 https://ru.wikipedia.org/wiki/
2.1. Алгоритм Шеннона-Фано
Суть алгоритма Шенона-Фано заключается в том, что все символы алфавита источника сообщений ранжируют, т.е. располагают в порядке убывания вероятностей их появления и при использовании двоичного кода объем алфавита элементов символов кода равен 2. Впоследствии символы алфавита делятся на две группы примерно равной суммарной вероятности их появления. Все символы первой группы в качестве первого элемента кодового символа получают «0», а все символы второй группы – «1». Дальше группы делятся на подгруппы, по тому же правилу примерно равных суммарных вероятностей, и в каждой подгруппе присваивается вторая позиция кодовых символов. Процесс повторяется до закодирования всех символов алфавита кодируемого источника сообщений. В кодовый символ, который соответствует последней группе, добавляется в качестве последнего элемента «0» для того, чтобы начальный элемент символов кода не совпадал с конечным, что позволяет исключить разделительные элементы между символами кода (см. Таблицу 2 – построения кода Шеннона-Фано на примере источника сообщений, алфавит которого состоит из восьми символов).
Таблица 2
Процесс построения кода Шеннона-Фано
|
Номер |
Символы |
Вероятности |
Номера разбиений |
Кодовые символы |
|
символа (i) |
алфавита (mi) |
(Рi) |
символы |
|
|
1 |
m1 |
1/2 |
I |
0 |
|
2 |
m2 |
1/4 |
II |
10 |
|
3 |
m3 |
1/8 |
III |
110 |
|
4 |
m4 |
1/16 |
IV |
1110 |
|
5 |
m5 |
1/32 |
V |
11110 |
|
6 |
m6 |
1/64 |
VI |
111110 |
Продолжение Таблицы 2
|
7 |
m7 |
1/128 |
VII |
1111110 |
|
8 |
m8 |
1/256 |
11111110 |
На рис. 2 представлен граф кодирования (кодовое дерево), показывающий, как «расщепляется» ранжированная последовательность символов кодируемого источника сообщений на группы и отдельные символы и какие кодовые символы присваиваются группам и отдельным символам алфавита источника сообщений на каждом шаге разбиения.
Рис. 2. Граф кодирования по алгоритму Шеннона-Фано
Алгоритм Шеннона-Фано применим и при иных числовых основаниях кода (k > 2). В этом случае алгоритм получения кода аналогичен рассмотренному примеру, только алфавит кодируемого источника сообщений разбивается на k групп и подгрупп примерно одинаковой суммарной вероятности.
Представляет интерес сравнение эффективного кодирования равномерным кодом и неравномерным кодом по алгоритму Шеннона-Фано.
В качестве примера рассмотрим предложенный выше (Табл. 2) источник сообщений с объемом алфавита равным 8 и соответствующими вероятностями появления отдельных символов (Pi). Для кодирования используем двоичный код ( k = 2).
Энтропия рассмотренного источника сообщений (Hи) определяется по формуле Шеннона-Фано:
Максимально же возможное значение энтропии источника сообщений
(Hu.max), при условии равновероятного и взаимно независимого появления символов, находится по формуле Хартли:
Следовательно, избыточность рассматриваемого источника сообщений (Rи) может быть найдена из соотношения:
Используя формулу для эффективного равномерного кода, при k = 2,
получим значность равномерного двоичного кода (пр):
и избыточность равномерного кода (Rрк):
Энтропия элементов символов равномерного кода
, то есть количество информации, приходящееся на один элемент символа кода, будет равна:
При использовании эффективного кодирования по алгоритму Шеннона-Фано соответствующие информационные параметры кода будут следующие.
Средняя длина неравномерного кода (пН) определяется выражением:
(1)
где пi – значность i - го кодового символа, соответствующего символу алфавита mi.
Избыточность неравномерного кода (RНК) определим из соотношения:
(2)
Энтропия элементов символов эффективного неравномерного кода
может быть легко найдена:
(3)
Сравнивая выражения (1) и (3) видно, что, при использовании эффективного кодирования по алгоритму Шеннона-Фано, энтропия элементов символов такого неравномерного кода на 50% выше, чем энтропия элементов символов в случае использования равномерного кода. Предполагая, что скорость передачи по каналу элементов символов кода (W) одинакова для равномерного и неравномерного кода, то скорость передачи информации (V), определяемая выражением:
где Н – энтропия элементов символа кода, также будет на 50% выше при
использовании эффективного кодирования по алгоритму Шеннона-Фано по
сравнению с равномерным кодированием.
Алгоритм Шеннона-Фано часто применяют также и для блочного кодирования, где также существенно повышается эффективность кодирования. Для иллюстрации данного кодирования рассмотрим процедуру эффективного кодирования двоичным числовым кодом сообщений, генерируемых источником сообщений с объемом алфавита равным 2 (m = 2), то есть с алфавитом, который состоит только из двух символов m1 и m2 с вероятностями появления P(m1) = 0,9 и P(m2) = 0,1 и, следовательно, с энтропией Н = 0,47.
При посимвольном кодировании по алгоритму Шеннона-Фано эффект отсутствует, т.к. на каждый символ сообщения будет приходиться один символ кода, который состоит из одного элемента.
Осуществим кодирование блоков по алгоритму Шеннона-Фано, которые состоят из комбинаций двух символов источника сообщений, считая
символы взаимнонезависимыми. Результат приведен в Таблице 3.
Таблица 3
Кодирование блоков по алгоритму Шеннона-Фано
|
Блоки |
Вероятности |
Номера разбиений |
Кодовые комбинации |
|
m1m1 |
0,81 |
I |
1 |
|
m1m2 |
0,09 |
II |
01 |
|
m2m1 |
0,09 |
III |
001 |
|
m2m2 |
0,01 |
0001 |
Среднее число элементов символов кода на один символ исходного сообщения, вычисленное по формуле (2), равно 0,645, что значительно ниже, чем при посимвольном кодировании.
Кодирование блоков, соответствующих комбинациям из трех символов
источника сообщений, дает еще больший эффект. Результат приведен в Таблице 4.
Таблица 4
Кодирование блоков, соответствующих комбинациям
из трех символов источника сообщений
|
Блоки |
Вероятности |
Номера разбиений |
Кодовые комбинации |
|
m1 m1 m1 |
0,729 |
I |
1 |
|
m2 m1 m1 |
0,081 |
III |
011 |
|
m1 m2 m1 |
0,081 |
II |
010 |
|
m1 m1 m2 |
0,081 |
IV |
001 |
|
m2 m2 m1 |
0,009 |
VI |
00011 |
|
m2 m1 m2 |
0,009 |
V |
00010 |
Продолжение Таблицы 4
|
m1 m2 m2 |
0,009 |
VII |
00001 |
|
m2 m2 m2 |
0,001 |
00000 |
В этом случае среднее число элементов символов кода на один символ исходного источника сообщений равно 0,53.
Теоретический минимум Н = 0,47 может быть достигнут при кодировании блоков неограниченной длины.
Алгоритм Шеннона-Фано не всегда приводит к однозначному построению кода, т.к. если разбивать группы на подгруппы, то можно сделать большей по суммарной вероятности как верхнюю, так и нижнюю подгруппы. Такого недостатка нет в алгоритме Хаффмена, гарантирующим однозначное построение эффективного кода.11
2.2. Алгоритм Хаффмена
Алгоритм Хаффмана – скупой алгоритм оптимального префиксного кодирования алфавита с минимальной избыточностью. Он был разработан в 1952 году аспирантом Массачусетского технологического института Дэвидом Хаффманом при написании им курсовой работы. Данный алгоритм в настоящее время используется в многочисленных программах сжатия данных.