Статистическое эффективное кодирование. (Использование при передаче и хранении).
Под кодированием в широком смысле слова подразумевается представление сообщений в форме, удобной для передачи по данному каналу. Обратная операция называется декодированием.
Кодирование, учитывающее статистические особенности источника сообщений называется статистическим (эффективным) кодированием.
В настоящее время разработано большое количество различных способов оптимального статистического кодирования. Все они должны обеспечивать решение двух основных задач:
при заданной статистике сообщений {Pi}формировать кодовые комбинации, допускающие V(X) C
возможность однозначного декодирования сигналов на приемной стороне
Для двоичного канала с отсутствием статистических связей между символами этим требованиям удовлетворяет код Шеннона-Фано.
Известно, что V C выполняется при равной вероятности появления различных сообщений.
В соответствии с этим, построение кода выполняется по следующей последовательности:
А) все буквы алфавита выписывают столбцом в порядке убывания вероятности;
Б) столбец последовательно делят на группы с приблизительно равной суммарной вероятностью.
При этом:
верхней половине «0»;
нижней половине «1»;
В качестве примера рассмотрим алфавит сообщений из 8 букв (для С = 3000 дв.ед./с)
|
Pi |
Эффективное кодирование |
Равномерное кодирование |
||||||||||
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
1 |
2 |
3 |
|
Z1 |
½ |
0 |
|
|
|
|
|
|
|
0 |
0 |
0 |
|
Z2 |
¼ |
1 |
0 |
|
|
|
|
|
|
0 |
0 |
1 |
|
Z3 |
⅛ |
1 |
1 |
0 |
|
|
|
|
|
0 |
1 |
0 |
|
Z4 |
1⁄₁₆ |
1 |
1 |
1 |
0 |
|
|
|
|
0 |
1 |
1 |
|
Z5 |
1⁄₃₂ |
1 |
1 |
1 |
1 |
0 |
|
|
|
1 |
0 |
0 |
|
Z6 |
1⁄₆₄ |
1 |
1 |
1 |
1 |
1 |
0 |
|
|
1 |
0 |
1 |
|
Z7 |
1⁄₁₂₈ |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
|
1 |
1 |
0 |
|
Z8 |
1⁄₁₂₈ |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
1 |
1 |
1 |
|
Особенности
В) Полученный код является неравномерным, т.к. длина кодовых комбинаций находится в обратной зависимости от их вероятности.
Г) Из таблицы видно, что ни одна из кодовых комбинаций не является началом другой. Этим обеспечивается свойство префикса – разделимости кодовых комбинаций, а, следовательно, и возможности однозначного декодирования сообщений.
Оценим скорость передачи информации для методов:
а) статистического кодирования;
V = C *I /ср.
На передачу каждого сообщения в среднем требуется V = C/ 1500 сообщ./с
8
ср. = Pi *i = 163/64 дв.разр. ср.= H(X)
i=1
8
H(X) = - Pi *log2Pi =163/64 бит/символ. Для C = 3000 дв.ед./с V(Z) = 3000 бит/с;
i=1
б) равномерного кодирования;
Каждому сообщению требуется 3 двоичных разряда равн.= log2N, а каждое сообщение Zi содержит:
8
I(Z) = H(Z) = - Pi*log2Pi = 163/64 бит/сообщ.
i=1
Поэтому, при C = 3000 дв.ед./с имеем: V = 1000сообщ./с V(Z) = 1*1000 = 1984 бит/с
В рассмотренном примере получено:
V(Z) = C и Kотн. =1 -идеальный случай.
Это удалось получить благодаря тому, что в рассмотренном примере значения P(Zi) были заданы такие, что подгруппы точно делились пополам.
2. Введение в криптографию.
Приближение V к C было осуществлено за счет:
“качественно” – наиболее часто передаваемые сообщения кодировались наиболее короткой длиной двоичных разрядов, и наоборот.
“количественно” – (более строго) за счет нового кодирования получено равномерное распределение i.
После кодирования сообщения, буквы алфавита Zi были заменены на значения двоичных разрядов j.
Рассмотрим вероятность появления значений j (двоичных разрядов) для статистического и равномерного методов кодирования.
Статистическое Равномерное
j
1
0 P0
= 15/16
1 P1=
1/16
Pj
= 0
0,5 j
равенство
2
0 P0
= 51/64
Pj = 1 0,5 стремится к = 1 P1= 13/64
3 0 P0 = 87/128
1 P1= 41/128
1 2 3 1 2 3
явно неравномерное распределение
В реальных условиях это, как правило, не обеспечивается.
Рассмотрим следующий пример.
Источник вырабатывает сообщения, формируемые из трех независимых символов с вероятностями:
x1 P1= 0,65; x2 P2= 0,23; x3 P3= 0,12
оценить эффективность применения равномерного и статистического способа кодирования
каким образом можно добиться V = 0,99 *C, C = 1000 дв.ед./с
а) дв.равн.= [log2N] = [log23] = 2 дв.ед.
3
H(X) = Pi *log2Pi = 1,26 бит
i=1
V(X) = H(X)/ дв.равн.* C = 630 бит/с ; K = H(X)/ дв.равн.= 1,26/2 = 0,63
что соответствует 63% от С.
б) применим эффективное кодирование
Pi 1 2
X1 0,65 0
X
2
0,23
1 0
X3 0,12 1 1
3
При этом: дв.=Pi *дв.i= 1* 0,65 + 2* 0,23 + 0,12 *2 = 1,35 дв.ед.
i=1
Kотн.коэф.= 0,933
Причиной C > V(X) и Kотн. эфф. 1 при использовании эффективного способа кодирования является невозможность разбиения сообщений { Xi } на подгруппы с достаточно близкой вероятностью.
