Равномерное кодирование.




Равномерное кодирование – это кодирование, при котором каждый элементарный код имеет одинаковую длину.

Например, если выбрать в качестве алфавита В цифры, то одноразрядным кодом можно закодировать 10 символов, а двухразрядными числами – 100.

Пусть алфавит В содержит к букв, а длина элементарного кода n букв. Сколько символов (m) при равномерном кодировании можно закодировать?

Элементарные коды - это кортежи из n букв, взятых из данных к, поэтому они являются размещениями с повторениями. По известной формуле их число равно

m = кn (1)

Поставим обратную задачу. Имеется m букв алфавита А. Сколько букв должны содержать элементарные коды при равномерном кодировании?

Из формулы (1), логарифмируя, получим

n = logк m (2)

Если же алфавит В={0,1} – двоичный, то закодировать n – битным кодом можно в силу формулы (1)

m = 2 n (3) букв.

Пусть имеется алфавит А, состоящий из m символов. Сколько бит должен содержать каждый элементарный код при равномерном кодировании?

Из формулы (2) получим

n = log 2 m (4), если m – степень 2

и по формуле

n =\ log m | + 1 (5),

где |log m | - целая часть log m..

Формулы (4) - (5) называются формулами Хартли.

Если в качестве алфавита А взять русский алфавит, который содержит 33 символа и пробел, то для 34 символов: по формуле Хартли

n =|log 34 | +1=5+1- 6 бит. При этом мы можем 6-битным кодом закодировать еще 30 символов. Такое кодирование называется избыточным. В компьютерах применяется 1-байтовое кодирование (256 символов) и оно также является избыточным.

Задача: Дано сообщение S. Производится равномерное кодирование длиной k – бит. Найти общую длину кода.

Решение: Если длина сообщения |S|= , то длина кода L=k .

Алфавитное кодирование.

Алфавитное кодирование – это кодирование, при котором каждой букве алфавита А соответствует элементарный код алфавита В.

Если некоторое слово может быть представлено в виде двух частей = , то называется префиксом, а - постфиксом. Естественно разбиение слова на префикс и постфикс чаще всего неоднозначно. Например, в слове 00110 префиксом может быть 0, или 00, или 001, или 0011.

Кодирование с минимальной избыточностью.

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

Пусть задан алфавит А, и мы назначили неравномерные коды этому алфавиту. Например, букве А – 4 – битный код; Б – 6 – битный код; Ъ – 2 – битный код; О – 7 – битный код и так далее. Ясно, что в обычном тексте Ъ встречается реже буквы О, следовательно, если мы переназначим коды: О – 2 – битный код, Ъ – 7 – битный код, то общая длина кода уменьшится.

Алгоритм для сообщения S:

1) Находим частоту появления каждой буквы в заданном сообщении.

2) Элементарный код наименьшей длины ставим в соответствие букве с наибольшей частотой и так далее.

Замечание:

Этот кодирование применимо для данного сообщения S. Для другого сообщения частота появления букв может быть другой, следовательно, элементарные коды могут быть другими.

Префиксное кодирование.

Пусть имеется алфавит А. Таблица соответствия буквам алфавита А элементарных кодов, называется схемой кодирования.

Схема кодирования называется префиксной, если не один элементарный код не является префиксом другого элементарного кода.

Например:

А={a,b}; B={0,1};

={ а 0; b 01} – не префиксная схема.

={ a 0; b 10} - префиксная схема.

Схема кодирования называется разделимой, если любой код однозначным образом разбивается на элементарные коды, то есть если код = , ,…, = , ,…, , то = и k= , т.е. возможно однозначное декодирование.

Теорема. Префиксные схемы разделимы.

Доказательство:

Пусть схема ={αi βi}| префиксная, но неразделима. Это значит, что существует некоторое t такое, что = , = = . Так как схема неразделима, то . А это значит, что есть такое , что или = , то есть элементарный код содержит и , а значит, является префиксом, следовательно, кодирование – не префиксное. Пришли к противоречию, означающее, что наше утверждение о неразделимости схемы неверно, следовательно, схема разделима.

Что и требовалось доказать.

Замечание: утверждение о том, что если схема разделима, то она префиксная, неверно.

Пример:

А={a,b}; B={0,1};

: а 0; b 01 – схема не префиксная. Покажем, что она разделима.

Сообщение ab 001. Будем декодировать. Первая цифра 0 может быть кодом буквы а, а может быть префиксом буквы b. Но следующая цифра тоже 0. Значит, первый 0 не является префиксом буквы b, т.е. это код буквы а. Если предположить, что второй 0. это код буквы а, то следующий код начинается с 1, а таких кодов у нас нет, и мы вынуждены признать, что имеем код 01, т.е. букву b. Таким образом, получили 001 ab;

Декодирование можно начать и с конца. Если последний символ 1, то рассмотрим предпоследний. Если он 0, то эти два символа соответствуют букве b. Если он 1, то кодирование произведено неверно. Исключаем из рассмотрения эти два символа. Следующий символ конца 0. А 0 – это а. Если у нас есть еще символы – продолжаем.

Еще пример. aabbaba 0001010010.

Первый символ 0. Это значит, что он может соответствовать а или являться префиксом b. Рассмотрим следующий. Если он 1, то первые два символа являются элементарным кодом b. После этого рассматриваем третий аналогично первому. Так как 2 – ой символ у нас 0, то первый символ – это элементарный код буквы а. Рассматриваем второй аналогично первому. И т.д. Замечание: кодирование произведено неверно, если код начинается с 1 или две 1 стоят подряд внутри кода.

Неравенство Макмиллана.

Пусть имеется разделимая схема ={ }| и - длина элементарного кода. =| |. Тогда (1)

Неравенство Макмиллана позволяет установить будет ли имеющаяся схема кодирования разделимой (необходимое условие).

Пример:

Имеется схема кодирования – Азбука Морзе.

А – 01(точка, тире); =2;

Е – 0 (точка); =1;

Т – 1(тире); =1 и так далее.

Проверим неравенство Макмиллана:

+ + + … = + 1+…>1.

Вывод: схема кодирования неразделима. При фактическом использовании азбуки Морзе радист после каждой буквы делает паузу.

В некотором смысле условие (1) является достаточным. Если существует набор чисел (i=1,…,n), удовлетворяющий условию (1), то существует разделимая схема кодирования ={ }| , для которой | |= .

Понятие вероятности.

 

Рассмотрим некоторое событие А. Пусть при выполнении комплекса условий возможно n исходов, из которых m – благоприятных для А. Тогда вероятностью события А р (А) назовем отношение числа исходов, благоприятствующих А, к общему числу исходов:

р (А) = .

Ра практике часто пользуются статистической вероятностью. Если в n испытаниях событие А произошло m раз, то статистическая вероятность р (А) = . Отличие от предыдущей формулы заключается в том, что здесь n m фактические, а не гипотетические.

Пример.

Пусть в алфавите А буква ю занимает третью позицию. Сообщение содержит n = 100 букв. Буква ю встречается в этом сообщении m3 = 10 раз. Тогда вероятность появления буквы ю равна р3 = m3 / n = 10 / 100 = 0,01.

Цена кодирования.

Пусть имеется некоторый алфавит А, и имеется некоторая схема кодирования , ={ }| . Пусть - длина i того элементарного кода. Пусть известны вероятности вхождения i – той буквы алфавита А в сообщении, причем =1.

Тогда ценой кодирования называется сумма произведений вероятностей на соответствующую длину кода:

С= .

Цена кодирования выражает среднюю длину элементарного кода.

Пример: пусть заданы коды букв и вероятности их вхождения в сообщение.

а 0; =0,6;

в 10; =0,3;

с 11; =0,1;

Заметим, что =1. Тогда С=0,6*1+0,3*2+0,1*2=1,4.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-09-06 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: