Неравномерные коды

advertisement
1. Теория информации и кодирование как научное направление
Теория информации – наука с точно известной датой рождения. Ее появление на свет связывают с публикацией Клодом
Шенноном работы “Математическая теория связи” в 1948 г. С тех пор теория информация прошла большой путь, обогатилась
огромным числом интересных научных открытий и доказала свою практическую важность. Сегодня в повседневный обиход вошли
высокоскоростные модемы для телефонных каналов, лазерные компакт-диски для хранения информации, жесткие диски большой
емкости для персональных компьютеров, мобильные телефонные аппараты для сотовых систем связи и многие другие устройства,
создание которых было бы невозможно без привлечения методологии и математического аппарата, разработанных в рамках теории
информации.
Хотя теории информации часто приписывают несколько более широкое значение, применяя ее методологию в естествознании и
искусстве, с точки зрения самого Шеннона, она может корректно рассматриваться только как раздел математической теории связи.
2. Вопросы и задачи теории информации и кодирования
Теория информации представляет собой математическую теорию, посвященную измерению информации, ее потока, "размеров"
канала связи и т.п., особенно применительно к радио, телеграфии, телевидению и к другим средствам связи. Первоначально теория
была посвящена каналу связи, определяемому длиной волны и частотой, реализация которого была связана с колебаниями воздуха или
электромагнитным излучением. Обычно соответствующий процесс был непрерывным, но мог быть и дискретным,
когдаинформация кодировалась, а затем декодировалась. Кроме того, теория информации изучает методы построения кодов,
обладающих полезными свойствами.
3. Модель системы передачи информации
Круг задач теории информации можно пояснить с помощью представленной на рис.1 структурной схемы типичной системы
передачи или хранения информации.
Рис.1.Типичная система передачи (хранения) информации
В этой схеме под источником понимается любое устройство или объект живой природы, порождающие сообщения, которые
должны быть перемещены в пространстве или во времени. Это может быть клавиатура компьютера, человек, аналоговый выход
видеокамеры и т. п. Поскольку, независимо от изначальной физической природы, все подлежащие передаче сообщения обычно
преобразуются в форму электрических сигналов, именно такие сигналы рассматриваются как выход источника.
Цель кодера источника – представление информации в наиболее компактной форме. Это нужно для того, чтобы эффективно
использовать ресурсы канала связи либо запоминающего устройства.
Далее следует кодер канала, задачей которого является обработка информации с целью защиты сообщений от помех при передаче по
каналу связи либо возможных искажений при их хранении.
Модулятор служит для преобразования сообщений, формируемых кодером канала, в сигналы, согласованные с физической природой
канала связи или средой накопителя информации.
Канал связи - это среда передачи информации, которая характеризуется, в первую очередь, максимально возможной для нее
скоростью передачи данных или, другими словами, емкостью канала связи.
Кодирование - преобразование дискретной информации одним из следующих способов: шифрование, сжатие, защита от шума.
Шум - это помехи в канале связи при передаче информации.
Остальные блоки, расположенные на приемной стороне, выполняют обратные операции и предоставляют получателю информацию в
удобном для использования виде.
4. Модель сигналов и их классификация
Знаками будем называть реальные различимые получателем материальные объекты: буквы, цифры, предметы.
Сигналами будем называть динамические процессы, т. е. процессы, изменяющиеся со временем, или колебания величины любой
природы: напряжения, давления, электромагнитного поля и др. В теории информации понятия «знак» и «сигнал» часто
взаимозаменяемы без ущерба однозначности. Допуская значительную нестрогость, сигналами часто называют любые воздействия,
которые могут принимать некоторое множество значений.
Из знаков или сигналов строятся последовательности, которые называются сообщениями. Элементарными сообщениями являются
каждый из знаков или сигналов. Сообщения или их последовательность несут информацию получателю.
Множество всех знаков или сигналов называют алфавитом, из которого строятся сообщения. Знаки чаще используются для хранения
сообщений (информации); сигналы же — для переноса сообщений из одной точки пространства в другую. В этом случае знакам
однозначно сопоставляются сигналы. Правило, по которому производится сопоставление, называется правилом кодирования или
сокращенно «кодом». Процесс сопоставления называется кодированием. В более широком смысле под кодированием понимается
любое сопоставление, в том числе одних знаков или сигналов другим. Процесс, обратный выбранному кодированию, называется
декодированием.
5. Дискретные и непрерывные каналы связи
Различают две формы представления информации — непрерывную и дискретную.
Чтобы сообщение было передано от источника к получателю, необходима некоторая материальная субстанция – носитель информации.
Сообщение, передаваемое с помощью носителя, назовем сигналом. В общем случае сигнал – это изменяющийся во времени
физический процесс.
В случае, когда параметр сигнала принимает последовательное во времени конечное число значений, сигнал называется дискретным, а
сообщение, передаваемое с помощью таких сигналов - дискретным сообщением. Информация, передаваемая источником, в этом случае
также называется дискретной.
Если же источник вырабатывает непрерывное сообщение (соответственно параметр сигнала – непрерывная функция от времени),
соответствующая информация называется непрерывной.
Пример дискретного сообщения – процесс чтения книги, информация в которой представлена текстом, т.е. дискретной
последовательностью отдельных значков (букв). Примером непрерывного сообщения служит человеческая речь, передаваемая
модулированной звуковой волной; параметром сигнала в этом случае является давление, создаваемое этой волной в точке нахождения
приемника – человеческого уха.







6. Дискретный вероятный ансамбль как модель источника информации
Предположим, что источник сообщений может в каждый момент времени случайным образом принять одно из конечного множества
возможных состояний. Такой источник называют дискретным источником сообщений. При этом принято говорить, что различные
состояния реализуются вследствие выбора их источника. Каждому состоянию источника U ставиться в соответствие условное
обозначение в виде знака. Совокупность знаков u1, u2,:,ui,:,uN соответствующих всем N возможным состояниям источника называют
его алфавитом, а количество состояний N объемом алфавита. Формирование таким источником сообщений сводиться к выбору им
некоторого состояния ui и выдачи соответствующего знака. Таким образом, под элементарным дискретным сообщением будем
понимать символ ui выдаваемое источником, при этом в течение некоторого времени Т источник может выдать дискретное сообщение
в виде последовательности элементарных дискретных сообщений, представляющей сбой набор символов u i (например, u5, u1, u3)
каждый из которых имеет длительность ti секунд. В общем случае необязательно одинаковую для различных i. Такая модель источника
сообщений соответствует реальной ситуации имеющей место в телеграфии (ti№const) и передаче данных (ti=const). Отдельные
состояния источника могут выбираться им чаще, другие реже. Поэтому в общем случае он храниться дискретным ансамблем U т.е.
полной совокупностью состояний с вероятностями их появления, составляющими в сумме 1.
7. Код и кодирование
Одну и ту же информацию, например, сведения об опасности мы можем выразить разными способами: просто крикнуть; оставить
предупреждающий знак (рисунок); с помощью мимики и жестов; передать сигнал «SOS» с помощью азбуки Морзе или используя
семафорную и флажковую сигнализацию. В каждом из этих способов мы должны знать правила, по которым можно отобразить
информацию. Такое правило назовем кодом.
Код — это набор условных обозначений (или сигналов) для записи (или передачи) некоторых заранее определенных понятий.
Кодирование информации – это процесс формирования определенного представления информации. В более узком смысле под
термином «кодирование» часто понимают переход от одной формы представления информации к другой, более удобной для хранения,
передачи или обработки.
Обычно каждый образ при кодировании (иногда говорят — шифровке) представлении отдельным знаком.
Знак - это элемент конечного множества отличных друг от друга элементов.
Знак вместе с его смыслом называют символом.
Набор знаков, в котором определен их порядок, называется алфавитом. Существует множество алфавитов:
алфавит кириллических букв {А, Б, В, Г, Д, Е, ...}
алфавит латинских букв {А, В, С, D, Е, F,...}
алфавит десятичных цифр{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
алфавит знаков зодиака {картинки знаков зодиака} и др.
Особенно большое значение имеют наборы, состоящие всего из двух знаков:
пара знаков {+, -}
пара цифр {0, 1}
пара ответов {да, нет}
Алфавит, состоящий из двух знаков, называется двоичным алфавитом. Двоичный знак (англ. binary digit) получил название «бит».
Шифрование - кодирование сообщения отправителя, но такое чтобы оно было не понятно несанкционированному пользователю.
Длиной кода называется такое количество знаков, которое используется при кодировании.
Количество символов в алфавите кодирования и длина кода - совершенно разные вещи. Например, в русском алфавите 33 буквы, а
слова могут быть длиной в 1, 2, 3 и т.д. буквы.
8 Классификация кодов
Равномерное и не равномерное кодирование
Кодирование – это сопоставление сообщения одного источника с некоторым алфавитом сообщению другого источника с другим
алфавитом. Если закодированное сообщение будет занимать меньше места на машинном носителе при возможности восстановления
исходного сообщения, то в этом случае при кодировании достигается сжатие информации. Равномерное кодирование заключается в
сопоставлению символам кодов одинаковой длины. В этом случае говорить об эффективности можно только в том случае, когда
вероятности появления символов источника равны, то есть его энтропия максимальна.
В качестве примера равномерного кода можно назвать ASCII-таблицу, где каждому из 256 символов сопоставлено двоичное значение
от 00000000 до 11111111. Независимо от вероятности появления символа на его представление отводится 1 байт, или 8 бит. Как
известно, национальные языки обладают большой избыточностью, то есть разницей между энтропией источника и максимально
возможной энтропией, обусловленной равной вероятностью появления любого символа из алфавита. Например, избыточность русского
языка составляет 70%, а английского – 50%. Это в частности означает, что некоторые буквы появляются в тексте гораздо чаще других и
поэтому использовать равномерное кодирование нерационально.
При неравномерном кодировании часто встречающимся символам сопоставляются более короткие кодовые последовательности, редко
встречающимся – более длинные. За счет этого удается значительно сократить объем файла без потерь информации. Существует
несколько методов неравномерного кодирования, важнейших из которых является метод Шеннона-Фано.
9. Количество и объем информации при передаче информации в равномерном коде
Алфавитный подход используется для измерения количества информации в тексте, представленном в виде последовательности
символов некоторого алфавита.Такой подход не связан с содержанием текста. Количество информации в этом случае
называется информационным объемом текста, который пропорционален размеру текста — количеству символов, составляющих
текст. Иногда данный подход к измерению информации называют объемным подходом.
Каждый символ текста несет определенное количество информации. Его называютинформационным весом символа. Поэтому
информационный объем текста равен сумме информационных весов всех символов, составляющих текст.
Здесь предполагается, что текст — это последовательная цепочка пронумерованных символов. В формуле (1) i1 обозначает
информационный вес первого символа текста, i2 — информационный вес второго символа текста и т.д.; K — размер текста, т.е. полное
число символов в тексте.
Все множество различных символов, используемых для записи текстов, называетсяалфавитом. Размер алфавита — целое число,
которое называется мощностью алфавита. Следует иметь в виду, что в алфавит входят не только буквы определенного языка, но все
другие символы, которые могут использоваться в тексте: цифры, знаки препинания, различные скобки, пробел и пр.
10. Простые коды и методы их построения. Избыточность кодов.
11. Равномерные коды. Понятие разрядности кода и ее расчет.
Равномерные простые коды
Как следует из определения, простые равномерные коды состоят из комбинаций одинаковой длины. Естественно, возникает вопрос:
Хорошо это или плохо?" Для ответа на этот вопрос рассмотрим следующий пример.
Пусть имеется некоторое сообщение, состоящее из М элементов, представляющее собой некоторую последовательность m(m<<M)
знаков (например, книга имеет M =100000 элементов, представляющая собой некоторую последовательность из 32 букв, 10 цифр и 11
знаков препинания, т.е. из m = 53 знаков). Как известно, это сообщение несет некоторое количество информации I, равное:
I=log2N
где N - число возможных вариантов последовательностей из M элементов.
Поскольку последовательность из M элементов составлена знаками, каждый из которых ( xi) появляется в последовательности с
различными вероятностями рi , то, используя формулу Стерлинга, можно показать, что количество информации в этой
последовательности будет:
На один элемент сообщения будет приходиться в среднем количество информации:
Если каждый знак сообщения кодируется n -элементной кодовой комбинацией, состояний из двоичных символов, то каждый из них
будет содержать Нэ количества информации
Очевидно, что код следует считать наилучшим с точки зрения скорости передачи тогда, когда Нэ будет максимально возможным.
Из теории информации известно, что один двоичный элемент может содержать максимальное количество информации равное 1-му
биту, т.е. всегда Нэ <= I.
Следовательно, величина
может служить мерой, информационной недогрузки каждого двоичного элемента.
Если число знаков, из которых состоит сообщение, m=2n и все знаки равновероятны pi=1/m , то величина R = 0 Действительно.
Таким образом, максимальная скорость передачи равномерного простого кода будет тогда и только тогда, когда выполняются
условия
где n - целое число.
На практике, как правило, знаки сообщения неравновероятны, а также не выполняется условие
, Поэтому равномерные коды
имеют
, т.е. скорость их практически всегда ниже максимально возможной. Далее будет показано, что в ряде случаев с
помощью неравномерного кода можно получить большую старость передачи. Однако, тот факт, что каждая кодовая комбинация в
равномерных кодах имеет одинаковое количество двоичных элементов, позволяет получать простые правила кодирования и
декодирования и, соответственно, простую техническую реализация кодирующих и декодирующих устройств.
Кроме того, за счет простых способов определения на приемной стороне начала и конца каждой кодовой комбинации, что является
необходимым условием однозначного декодирования, помехоустойчивость равномерных кодов достаточно высокая. Важным фактором
является также то, что простые равномерные коды легко преобразуются в корректирующие коды для повышения достоверности
информации. Все это привело к тому, что равномерные коды получили широкое применение на практике.
Для расширения возможностей равномерных кодов используют следующие меры. Например, число русских букв, цифр и знаков
препинания составляет 53, что требует применения 6-элементных кодовых комбинаций (
). Поэтому все множество
знаков разбивается на два множества (регистра): буквенный и цифровой, что позволяет использовать 5-элементные кодовые
комбинации. Для правильного декодирования вводятся специальные комбинации, указывающие о переходе с одного регистра на
другой.
Современные отечественные телеграфные аппараты имеют три регистра: русский, латинский и цифровой.
Увеличение алфавита может быть достигнуто за счет того, что кодируются не только отдельные буквы (цифры), а и целые слова и даже
отдельные фразы. Естественно - это вызывает необходимость увеличения числа регистров при использовании того же 5-элементного
равномерного кода.
12. Неравномерное кодирование дискретных источников.
Неравномерные коды
Как отмечалось выше, неравномерными кодами называют такие коды, которые содержат разное число элементов.
Эти коды, как и равномерные коды, с точки зрения скорости передачи информации могут оцениваться величиной информационной
недогрузки каждого двоичного символа:
где
- средняя длина кодовой комбинации;
- длина комбинации, соответствующей i-му символу сообщения;
- вероятность появления i-го символа в сообщении.
Если более вероятным символам сообщения сопоставить более короткие кодовые комбинации и наоборот, то средняя длина кодовой
комбинации будет меньше, т.е. скорость передачи информации таким кодом будет выше.
Такие коды называют оптимальными. Если символы сообщения резко неравновероятны, то, целая код оптимальным, иногда можно
увеличить скорость по сравнению с равномерным кодом.
При построении неравномерных кодов необходимо учитывать требование однозначного декодирования сообщения, первым этапом
которого является правильное определение начала и конца каждой кодовой комбинации. Этого можно достичь, если между
комбинациями ставить специальные разделительные группы или использовать неприводимые коды. Неприводимость кодов
заключается в том, что в них из более длинной комбинации нельзя составить более короткие комбинации. В настоящее время
разработан целый ряд неприводимых кодов.
Примером неприводимого кода может служить код, состоящий из следующих комбинация:
11, 10, 011, 001, 000, 00001, 000001
Неприводимость этого кода заключается в том, что короткие кодовые комбинация не могут быть началом более длинных кодовых
комбинаций и, следовательно, любая двоичная последовательность однозначно разбивается на указанные кодовые комбинации.
Например, последовательность
- 1011100000110000101111101000111 однозначно разбивается на комбинации
10, 11, 10, 00001, 10, 0001, 011, 11, 10, 10, 001, 11
Необходимо отметить, что применение оптимальных неравномерных кодов не всегда будет обеспечивать большую скорость передачи
по сравнению с равномерным кодом. Предпосылкой получения более высокой скорости передачи путем применения неравномерного
кода может служить заметная неравновероятность символов сообщения и хорошая согласованность выбранного неравномерного кода
со статистической структурой сообщения.
13. Основные характеристики неравномерного кода. Условие Фано.
Оценка кодов обычно производится по их основным характеристикам, выраженным в различных количественных и качественных
показателях. Данные характеристики используются для выбора кодов, предназначенных для передачи, хранения кодов, и обработки
информации.
К ним относятся следующие характеристики
) Длина кода n - число разрядов (символов), составляющих кодовую комбинацию.
) Основание кода m - количество отличающихся друг от друга импульсных признаков, используемых в кодовых словах. Для двоичных
кодов m = 2.
) Мощность кода Np - число кодовых комбинаций (рабочих кодовых слов), используемых для передачи сообщений.
) Полное число кодовых комбинаций N - число всех возможных комбинаций, равное mn (для m = 2 → N = 2n).
) Число информационных разрядов k - количество символов (разрядов) кодового слова, предназначенных для передачи собственного
сообщения. Np = 2k
) Число проверочных символов r - количество символов (разрядов) кодового слова, необходимых для коррекции ошибок. Это число
характеризует абсолютную избыточность кода.
) Избыточность кода R - относительная избыточность.
В общем случае можно ее привести к виду:
) Скорость передачи кодовых комбинаций - отношение числа информации символов n к длине кода:
) Вес кодовой комбинации w - количество единиц в кодовой комбинации. Весовая характеристика кода W(w) - число кодовых слов
весом w.
) Вероятность не обнаруживаемых ошибок РН.О. - это вероятность такого события, при котором принятая кодовая комбинация
отличается от переданной, а свойства данного кода не позволяют определить факта наличия ошибки.
) Оптимальность кода - свойства такого кода, который обеспечивает наименьшую вероятность не обнаружения ошибки среди всех
кодов той же длины n и избыточности r.
) Коэффициент ложных переходов:
где
- число рабочих кодовых комбинаций, отстоящих от і-ой кодовой комбинации на расстоянии d.
- число сочетаний из d для данной длины n кода.
Данный коэффициент показывает, какая доля ошибок кратности d не обнаруживается. Для систематических кодов все кодовые слова
имеют одинаковое распределение кодовых расстояний от других слов, поэтому:
Условие Фано (англ. Fano condition, в честь Роберта Фано) — в теории кодирования необходимое условие построения
самотерминирующегося кода (в другой терминологии, префиксного кода). Обычная формулировка этого условия выглядит так:
Никакое кодовое слово не может быть началом другого кодового слова.
Более «математическая» формулировка:
Если в код входит слово a, то для любой непустой строки b слова ab в коде не существует.
Примером кода, удовлетворяющего условию Фано, являются телефонные номера в традиционной телефонии. Если в сети
существует номер 101, то номер 1012345 не может быть выдан: при наборе трёх цифр АТС прекращает понимать дальнейший набор и
соединяет с адресатом по номеру 101. Однако для набора с сотового телефона это правило уже не действует, потому что требуется
явное завершение последовательности знаков соответствующей кнопкой (обычно — с изображением зелёной трубки), при этом 101,
1010 и 1012345 могут одновременно пониматься как разные адресаты.
14. Измерение информации. Собственная информация.
Собственная информация — статистическая функция дискретной случайной величины.
Собственная информация сама является случайной величиной, которую следует отличать от её среднего значения —информационной
энтропии.
Для случайной величины
, имеющей конечное число значений:
собственная информация определяется как
Единицы измерения информации зависят от основания логарифма. В случае логарифма с основанием 2 единицей измерения
является бит, если используется натуральный логарифм — то нат, если десятичный — то хартли.
Основание логарифма Единица измерения
Количество информации
о падении монеты «орлом» вверх
2
бит
бит
e
нат
ната
10
хартли
хартли
Собственную информацию можно понимать как «меру неожиданности» события — чем меньше вероятность события, тем больше
информации оно содержит.
Свойства собственной информации[править | править вики-текст]
1) Неотрицательность:
при
.
, т.е. предопределенный факт никакой информации не
несет.
2) Монотонность:
, если
3) Аддитивность: для независимых
.
справедливо
15. Модель информации по хартли. Формула Хартли.
Формула Хартли определяет количество информации, содержащееся в сообщении длины n.
Имеется алфавит А, из букв которого составляется сообщение:
Количество возможных вариантов разных сообщений:
где N — возможное количество различных сообщений, шт; m — количество букв в алфавите, шт; n — количество букв в сообщении,
шт.
Пример: Алфавит состоит из двух букв «B» и «X», длина сообщения 3 буквы — таким образом, m=2, n=3. При выбранных нами
алфавите и длине сообщения можно составить
разных сообщений «BBB», «BBX», «BXB», «BXX»,
«XBB», «XBX», «XXB», «XXX» — других вариантов нет.
Формула Хартли определяется:
где I — количество информации, бит.
При равновероятности символов
формула Хартли переходит в собственную информацию.
Формула Хартли была предложена Ральфом Хартли в 1928 году как один из научных подходов к оценке сообщений.
16. Энтропия и информация.
Информацио́нная энтропи́я — мера неопределённости или непредсказуемости информации, неопределённость появления какоголибо символа первичного алфавита. При отсутствии информационных потерь численно равна количеству информации на символ
передаваемого сообщения.
Например, в последовательности букв, составляющих какое-либо предложение на русском языке, разные буквы появляются с разной
частотой, поэтому неопределённость появления для некоторых букв меньше, чем для других. Если же учесть, что некоторые сочетания
букв (в этом случае говорят об энтропии
-го порядка, см. ниже) встречаются очень редко, то неопределённость уменьшается еще
сильнее.
Энтропия — это количество информации, приходящейся на одно элементарное сообщение источника, вырабатывающего
статистически независимые сообщения.
Определение с помощью собственной информации[править | править вики-текст]
Также можно определить энтропию случайной величины, введя предварительно понятия распределения случайной величины
,
имеющей конечное число значений:[2]
и собственной информации:
Тогда энтропия определяется как:
От основания логарифма зависит единица измерения количества информации и энтропии: бит, нат, трит или хартли.
Свойства
Энтропия является количеством, определённым в контексте вероятностной модели для источника данных. Например, кидание монеты
имеет энтропию:
бит на одно кидание (при условии его независимости), а
количество возможных состояний равно:
возможных состояния (значения) ("орёл" и "решка").
У источника, который генерирует строку, состоящую только из букв «А», энтропия равна нулю:
количество возможных состояний равно:
,а
возможное состояние(значение) («А») и от основания логарифма не зависит.
Это тоже информация, которую тоже надо учитывать. Примером запоминающих устройств в которых используются разряды с
энтропией равной нулю, но с количеством информации равным 1возможному состоянию, т.е. не равным нулю, являются разряды
данных записанных в ПЗУ, в которых каждый разряд имеет только одно возможное состояние.
Так, например, опытным путём можно установить, что энтропия английского текста равна 1,5 бит на символ, что конечно будет
варьироваться для разных текстов. Степень энтропии источника данных означает среднее число битов на элемент данных, требуемых
для её зашифровки без потери информации, при оптимальном кодировании.
Некоторые биты данных могут не нести информации. Например, структуры данных часто хранят избыточную информацию, или имеют
идентичные секции независимо от информации в структуре данных.
Количество энтропии не всегда выражается целым числом битов.
Эффективность
Алфавит может иметь вероятностное распределение далекое от равномерного. Если исходный алфавит содержит n символов,
тогда его можно сравнить с «оптимизированным алфавитом», вероятностное распределение которого равномерное. Соотношение
энтропии исходного и оптимизированного алфавита — это эффективность исходного алфавита, которая может быть выражена в
процентах. Эффективность исходного алфавита с n символами может быть также определена как его n-арная энтропия.
Энтропия ограничивает максимально возможное сжатие без потерь (или почти без потерь), которое может быть реализовано
при использовании теоретически — типичного набора или, на практике, — кодирования Хаффмана, кодирования Лемпеля — Зива —
Велча или арифметического кодирования.
17. Метод арифметического кодирования по постоянному алфавиту.
Арифметическое кодирование — один из алгоритмов энтропийного сжатия.
В отличие от алгоритма Хаффмана, не имеет жесткого постоянного соответствия входных символов — группам бит выходного потока.
Это даёт алгоритму большую гибкость в представлении дробных частот встречаемости символов.
Как правило, превосходит алгоритм Хаффмана по эффективности сжатия, позволяет сжимать данные с энтропией, меньшей 1 бита на
кодируемый символ, но некоторые версии имеют патентные ограничения от компании IBM.
Обеспечивает почти оптимальную степень сжатия с точки зрения энтропийной оценки кодирования Шеннона. На каждый
символ требуется почти
бит, где
— информационная энтропияисточника.
В отличие от алгоритма Хаффмана, метод арифметического кодирования показывает высокую эффективность для дробных
неравномерных интервалов распределения вероятностей кодируемых символов. Однако в случае равновероятного распределения
символов, например для строки бит 010101…0101 длины s метод арифметического кодирования приближается к префиксному коду
Хаффмана и даже может занимать на один бит больше.[1]
Принцип действия
Пусть имеется некий алфавит, а также данные о частотности использования символов (опционально). Тогда рассмотрим на
координатной прямой отрезок от 0 до 1.
Назовём этот отрезок рабочим. Расположим на нём точки таким образом, что длины образованных отрезков будут равны частоте
использования символа, и каждый такой отрезок будет соответствовать одному символу.
Теперь возьмём символ из потока и найдём для него отрезок среди только что сформированных, теперь отрезок для этого символа стал
рабочим. Разобьём его таким же образом, как разбили отрезок от 0 до 1. Выполним эту операцию для некоторого числа
последовательных символов. Затем выберем любое число из рабочего отрезка. Биты этого числа вместе с длиной его битовой записи и
есть результат арифметического кодирования использованных символов потока.
Кодирование сообщения
Возьмём для примера следующую последовательность:
NEUTRAL NEGATIVE END-OF-DATA
Сначала разобьём отрезок от 0 до 1 согласно частотам сигналов. Разбивать отрезок будем в порядке, указанном выше[2].
Теперь начнём кодировать с первого символа. Первому символу — NEUTRAL соответствует отрезок от 0 до 0.6. Разобьём этот отрезок
аналогично отрезку от 0 до 1.
Закодируем второй символ — NEGATIVE. На отрезке от 0 до 0.6 ему соответствует отрезок от 0.48 до 0.54. Разобьём этот отрезок
аналогично отрезку от 0 до 1.
Закодируем третий символ — END-OF-DATA. На отрезке от 0.48 до 0.54 ему соответствует отрезок от 0.534 до 0.54.
Так как это был последний символ, то кодирование завершено. Закодированное сообщение — отрезок от 0.534 до 0.54 или любое число
из него, например, 0.538.
Декодирование сообщения
Предположим, что нам необходимо раскодировать сообщение методом арифметического кодирования согласно описанной
выше модели. Сообщение в закодированном виде представлено дробным значением 0.538 (для простоты используется десятичное
представление дроби, вместо двоичного основания). Предполагается, что закодированное сообщение содержит ровно столько знаков в
рассматриваемом числе, сколько необходимо для однозначного восстановления первоначальных данных.
Начальное состояние процесса декодирования совпадает с процессом кодирования и рассматривается интервал [0,1). На
основании известной вероятностной модели дробное значение 0.538 попадает в интервал [0, 0.6). Это позволяет определить первый
символ, который был выбран кодировщиком, поэтому его значение выводится как первый символ декодированного сообщения.
18. Методы префиксного кодирования.
Алгоритм Хаффмана — адаптивный жадный алгоритм оптимального префиксного кодирования алфавита с
минимальной избыточностью. Был разработан в 1952 году аспирантомМассачусетского технологического института Дэвидом
Хаффманом при написании им курсовой работы. В настоящее время используется во многих программах сжатия данных.
В отличие от алгоритма Шеннона — Фано, алгоритм Хаффмана остаётся всегда оптимальным и для вторичных алфавитов m2 с более
чем двумя символами.
Этот метод кодирования состоит из двух основных этапов:
1.
Построение оптимального кодового дерева.
2.
Построение отображения код-символ на основе построенного дерева.
Кодирование Хаффмана
Один из первых алгоритмов эффективного кодирования информации был предложен Д. А. Хаффманом в 1952 году. Идея алгоритма
состоит в следующем: зная вероятности символов в сообщении, можно описать процедуру построения кодов переменной длины,
состоящих из целого количества битов. Символам с большей вероятностью ставятся в соответствие более короткие коды. Коды
Хаффмана обладают свойством префиксности (то есть ни одно кодовое слово не является префиксом другого), что позволяет
однозначно их декодировать.
Классический алгоритм Хаффмана на входе получает таблицу частот встречаемости символов в сообщении. Далее на основании этой
таблицы строится дерево кодирования Хаффмана (Н-дерево).[1]
1.
Символы входного алфавита образуют список свободных узлов. Каждый лист имеет вес, который может быть равен либо вероятности,
либо количеству вхождений символа в сжимаемое сообщение.
2.
Выбираются два свободных узла дерева с наименьшими весами.
3.
Создается их родитель с весом, равным их суммарному весу.
4.
Родитель добавляется в список свободных узлов, а два его потомка удаляются из этого списка.
5.
Одной дуге, выходящей из родителя, ставится в соответствие бит 1, другой — бит 0.
6.
Шаги, начиная со второго, повторяются до тех пор, пока в списке свободных узлов не останется только один свободный узел. Он и
будет считаться корнем дерева.
Допустим, у нас есть следующая таблица частот:
15
7
6
6
5
А
Б
В
Г
Д
Этот процесс можно представить как построение дерева, корень которого — символ с суммой вероятностей объединенных символов,
получившийся при объединении символов из последнего шага, его n 0 потомков — символы из предыдущего шага и т. д.
Чтобы определить код для каждого из символов, входящих в сообщение, мы должны пройти путь от листа дерева, соответствующего
текущему символу, до его корня, накапливая биты при перемещении по ветвям дерева (первая ветвь в пути соответствует младшему
биту). Полученная таким образом последовательность битов является кодом данного символа, записанным в обратном порядке.
Для данной таблицы символов коды Хаффмана будут выглядеть следующим образом.
А
Б
В
Г
Д
0
100
101
110
111
Поскольку ни один из полученных кодов не является префиксом другого, они могут быть однозначно декодированы при чтении их из
потока. Кроме того, наиболее частый символ сообщения А закодирован наименьшим количеством бит, а наиболее редкий символ Д —
наибольшим.
При этом общая длина сообщения, состоящего из приведённых в таблице символов, составит 87 бит (в среднем 2,2308 бита на символ).
При использовании равномерного кодирования общая длина сообщения составила бы 117 бит (ровно 3 бита на символ). Заметим,
что энтропия источника, независимым образом порождающего символы с указанными частотами, составляет ~2,1858 бита на символ,
то есть избыточность построенного для такого источника кода Хаффмана, понимаемая, как отличие среднего числа бит на символ от
энтропии, составляет менее 0,05 бит на символ.
Классический алгоритм Хаффмана имеет ряд существенных недостатков. Во-первых, для восстановления содержимого сжатого
сообщения декодер должен знать таблицу частот, которой пользовался кодер. Следовательно, длина сжатого сообщения увеличивается
на длину таблицы частот, которая должна посылаться впереди данных, что может свести на нет все усилия по сжатию сообщения.
Кроме того, необходимость наличия полной частотной статистики перед началом собственно кодирования требует двух проходов по
сообщению: одного для построения модели сообщения (таблицы частот и Н-дерева), другого для собственно кодирования. Во-вторых,
избыточность кодирования обращается в ноль лишь в тех случаях, когда вероятности кодируемых символов являются обратными
степенями числа 2. В-третьих, для источника с энтропией, не превышающей 1 (например, для двоичного источника), непосредственное
применение кода Хаффмана бессмысленно.
Кодирование Шенонна— Фано(англ. coding) — алгоритм префиксного неоднородного кодирования. Относится
к вероятностным методам сжатия (точнее, методам контекстного моделирования нулевого порядка). Подобно алгоритму
Хаффмана, алгоритм Шеннона — Фано использует избыточность сообщения, заключённую в неоднородном распределении частот
символов его (первичного) алфавита, то есть заменяет коды более частых символов короткими двоичными последовательностями, а
коды более редких символов — более длинными двоичными последовательностями.
Алгоритм был независимо друг от друга разработан Шенноном (публикация «Математическая теория связи», 1948 год) и, позже, Фано
(опубликовано как технический отчёт).
Основные этапы
1.
Символы первичного алфавита m1 выписывают по убыванию вероятностей.
2.
Символы полученного алфавита делят на две части, суммарные вероятности символов которых максимально близки друг другу.
3.
В префиксном коде для первой части алфавита присваивается двоичная цифра «0», второй части — «1».
4.
Полученные части рекурсивно делятся и их частям назначаются соответствующие двоичные цифры в префиксном коде.
Когда размер подалфавита становится равен нулю или единице, то дальнейшего удлинения префиксного кода для соответствующих
ему символов первичного алфавита не происходит, таким образом, алгоритм присваивает различным символам префиксные коды
разной длины. На шаге деления алфавита существует неоднозначность, так как разность суммарных вероятностей
может
быть одинакова для двух вариантов разделения (учитывая, что все символы первичного алфавита имеют вероятность больше нуля).
Алгоритм вычисления кодов Шеннона — Фано
Код Шеннона — Фано строится с помощью дерева. Построение этого дерева начинается от корня. Всё множество кодируемых
элементов соответствует корню дерева (вершине первого уровня). Оно разбивается на два подмножества с примерно одинаковыми
суммарными вероятностями. Эти подмножества соответствуют двум вершинам второго уровня, которые соединяются с корнем. Далее
каждое из этих подмножеств разбивается на два подмножества с примерно одинаковыми суммарными вероятностями. Им
соответствуют вершины третьего уровня. Если подмножество содержит единственный элемент, то ему соответствует концевая вершина
кодового дерева; такое подмножество разбиению не подлежит. Подобным образом поступаем до тех пор, пока не получим все
концевые вершины. Ветви кодового дерева размечаем символами 1 и 0, как в случае кода Хаффмана.
При построении кода Шеннона — Фано разбиение множества элементов может быть произведено, вообще говоря, несколькими
способами. Выбор разбиения на уровне n может ухудшить варианты разбиения на следующем уровне (n + 1) и привести к
неоптимальности кода в целом. Другими словами, оптимальное поведение на каждом шаге пути ещё не гарантирует оптимальности
всей совокупности действий. Поэтому код Шеннона — Фано не является оптимальным в общем смысле, хотя и дает оптимальные
результаты при некоторых распределениях вероятностей. Для одного и того же распределения вероятностей можно построить, вообще
говоря, несколько кодов Шеннона — Фано, и все они могут дать различные результаты. Если построить все возможные коды
Шеннона — Фано для данного распределения вероятностей, то среди них будут находиться и все коды Хаффмана, то есть оптимальные
коды.
Пример кодового дерева
Исходные символы:

A (частота встречаемости 50)

B (частота встречаемости 39)

C (частота встречаемости 18)

D (частота встречаемости 49)

E (частота встречаемости 35)

F (частота встречаемости 24)
Кодовое дерево
Полученный код: A — 11, B — 101, C — 100, D — 00, E — 011, F — 010.
Кодирование Шеннона — Фано является достаточно старым методом сжатия, и на сегодняшний день оно не представляет особого
практического интереса. В большинстве случаев длина последовательности, сжатой по данному методу, равна длине сжатой
последовательности с использованием кодирования Хаффмана. Но на некоторых последовательностях могут сформироваться
неоптимальные коды Шеннона — Фано, поэтому более эффективным считается сжатие методом Хаффмана.
19 неравенство Крафта.
В теории кодирования, неравенство Крафта — Макмиллана даёт необходимое и достаточное
условие существования разделимых и префиксных кодов, обладающих заданным набором длин кодовых слов.
Предварительные определения[править | править вики-текст]
Пусть заданы два произвольных конечных множества, которые называются, соответственно, кодируемым алфавитом и кодирующим
алфавитом. Их элементы называются символами, а строки (последовательности конечной длины) символов — словами. Длина
слова — это число символов, из которого оно состоит.
В качестве кодирующего алфавита часто рассматривается множество
— так называемый двоичный или бинарный алфавит.
Схемой алфавитного кодирования (или просто (алфавитным) кодом) называется любое отображение символов кодируемого
алфавита в слова кодирующего алфавита, которые называюткодовыми словами. Пользуясь схемой кодирования, каждому слову
кодируемого алфавита можно сопоставить его код — конкатенацию кодовых слов, соответствующих каждому символу этого слова.
Код называется разделимым (или однозначно декодируемым), если никаким двум словам кодируемого алфавита не может быть
сопоставлен один и тот же код.
Префиксным кодом называется алфавитный код, в котором ни одно из кодовых слов не является префиксом никакого другого
кодового слова. Любой префиксный код является разделимым.
Формулировка[править | править вики-текст]
Теорема Макмиллана (1956).
Пусть заданы кодируемый и кодирующий алфавиты, состоящие из
кодовых слов:
и
символов, соответственно, и заданы желаемые длины
. Тогда необходимым и достаточным условием существования разделимого и префиксного кодов,
обладающих заданным набором длин кодовых слов, является выполнение неравенства:
Это неравенство и известно под названием неравенства Крафта — Макмиллана. Впервые оно было выведено Леоном Крафтом в
своей магистерской дипломной работе в 1949 году[1], однако он рассматривал только префиксные коды, поэтому при обсуждении
префиксных кодов это неравенство часто называют просто неравенством Крафта. В 1956 году Броквэй Макмиллан доказал
необходимость и достаточность этого неравенства для более общего класса кодов — разделимых кодов.
20. Неравенство Макмилана.
линейный код — это важный тип блокового кода, использующийся в схемах определения и коррекции ошибок. Линейные коды, по
сравнению с другими кодами, позволяют реализовывать более эффективные алгоритмы кодирования и декодирования информации.
21 Линейные коды
Линейный код длины n и ранга k является линейным подпространством C размерности k векторного пространства
, где
— конечное
поле из q элементов. Такой код с параметром q называется q-арным кодом (напр. если q = 5 — то это 5-арный код). Если q = 2 или q = 3, то код представляет
собой двоичный код, илитернарный соответственно.
Линейный (блоковый) код — такой код, что множество его кодовых слов образует
мерном линейном пространстве, изоморфное пространству
-мерное линейное подпространство (назовем его
)в
-
-битных векторов.
Это значит, что операция кодирования соответствует умножению исходного
-битного вектора на невырожденную матрицу
, называемую порождающей
матрицей.
Пусть
вектора
— ортогональное подпространство по отношению к
,а
— матрица, задающая базис этого подпространства. Тогда для любого
справедливо:
.
22. Циклические коды.
Несмотря на то, что исправление ошибок в линейных кодах уже значительно проще исправления в большинстве нелинейных, для
большинства кодов этот процесс все ещё достаточно сложен. Циклические коды, кроме более простого декодирования, обладают и
другими важными свойствами.
Циклическим кодом является линейный код, обладающий следующим свойством: если
циклическая перестановка также является кодовым словом.
является кодовым словом, то его
Слова циклического кода удобно представлять в виде многочленов. Например, кодовое слово
представляется в виде полинома
. При этом циклический сдвиг кодового
слова эквивалентен умножению многочлена на
по модулю
.
В дальнейшем, если не указано иное, мы будем считать, что циклический код является двоичным, то есть
… могут принимать
значения 0 или 1.
Практика
1.
Перевести ABCDh в двоичный формат и дополнить битами хемминга
Дв. 1010101111001101
12
1
13
1
14
1
15
0
0
0
1
1
Сумма бит, контролируемых битом 1=6(четная), поэтому бит 1 = 0
Сумма бит, контролируемых битом 2=6(четная), поэтому бит 2 = 0
Сумма бит, контролируемых битом 4=5(нечетная), поэтому бит 4 = 1
Сумма бит, контролируемых битом 8=5(нечетная), поэтому бит 8 = 1
Сумма бит, контролируемых битом 16=3(нечетная), поэтому бит 16 = 1
2
16
1
17
0
18
1
19
1
20
0
21
1
16+4+1
11
1
16+4
8+1
4+2+1
4+2
4+1
1+2
10
0
16+2+1
9
1
16+2
8
16+1
7
0
8+4+2+1
6
1
8+4+2
5
0
8+4+1
4
8+4
3
1
8+1+2
2
8+2
1
Download