Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информационная энтропия и неравномерное кодирование. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
872 Кб
Скачать

Таким образом, избыточность кода r показывает, что на кодирование каждого символа источника тратится в среднем на r бит больше, чем могло бы тратиться в теории. При этом нужно понимать, что кодирование со средней длиной l = H может быть нереализуемым на практике, так что избыточность показывает несовершенство кода по сравнению с идеальным теоретическим результатом.

Из теоремы 2.2.3 следует, что для любого неравномерного префиксного кода избыточность является неотрицательным числом: r 0 . В то же время теорема 2.2.2 утверждает, что всегда существует неравномерный префиксный код, для которого r <1.

Контрольные вопросы

1.Запишите неравенство Крафта.

2.Сформулируйте прямую теорему неравномерного кодирования. Поясните ее смысл.

3.Сформулируйте обратную теорему неравномерного кодирования. Поясните ее смысл.

4.Что такое избыточность неравномерного кода?

§2.3. КОДИРОВАНИЕ ХАФФМАНА

В1952 г. студент Массачусетского технологического института (MIT) Дэвид Хаффман (англ. David Huffman) в своей курсовой работе предложил алгоритм построения неравномерного префиксного кода и доказал, что его алгоритм всегда будет давать оптимальный код, то есть код с наименьшей средней длиной. На сегодняшний день алгоритм кодирования Хаффмана является наиболее популярным и востребованным алгоритмом сжатия данных

в различных прикладных задачах. Достаточно отметить, например, что в настоящее время кодирование Хаффмана применяется при сжатии фото- и видеоданных в форматах JPEG и MPEG, а также в сетевых протоколах передачи данныхHTTP.

57

Рассмотрим источник символов, которые для удобства обозначим числами: X ={1,2, ,n}. Обозначим p1, p2 , , pn вероятности появления соответствующих символов и, кроме того, будем полагать, что символы нашего источника упорядочены по убыванию их вероятностей, то есть

p1 p2 ≥ ≥ pn .

Отметим, что данное требование никоим образом не является ограничением общности, так как мы всегда можем переобозначить символы так, чтобы их вероятности убывали с ростом их номера.

Задача, которая стояла в свое время перед Хаффманом, заключалась в построении такого неравномерного префиксного кода, который обладал бы наименьшей возможной средней длиной. Как мы увидим далее, решение этой задачи, вообще говоря, не единственно: могут существовать несколько неравномерных префиксных кодов с минимальной средней длиной.Чтобы решить эту задачу, Хаффман пошел по следующему пути: в предположении, что такой код уже построен, он попытался выявить наиболее специфичные свойства этого кода, с помощью которых далее он смог сформулировать наиболее простой способ его построения. Давайте мы также пройдем по этому пути и проследим всю логику рассуждений Хаффмана.

Итак, предположим, что неравномерный префиксный код для нашего источника уже построен и имеет минимально возможную длину. Соответствующие кодовые слова мы обозначим C ={c1,c2 , ,cn}, причем длины этих слов равны {l1,l2 , ,ln}. Сформулируем основные свойства такого кода.

СВОЙСТВО 2.3.1. Если pi < p j , то li l j , то есть менее вероятные

символы имеют более длинные кодовые слова.

СВОЙСТВО 2.3.2. Не менее двух кодовых слов имеют максимальную

длину lmax = max{li}.

1in

58

СВОЙСТВО 2.3.3. Среди кодовых слов, имеющих длину lmax , найдутся два, которые будут различаться только в последнем бите (разряде).

Эти три свойства достаточно просто доказываются методом «от противного». Например, свойство 2.3.1 можно доказать, предположив, что имеется код такой, что для пары символов i и j имеет место неравенство pi < p j , но ci < c j . Тогда мы можем построить другой код, в котором символу i соответствует кодовое слово ci, а символу j – кодовое слово cj. Очевидно, что средняя длина второго кода будет меньше, чем первого, что противоречит допущению о том, что первый код оптимален.

Перед тем как сформулировать еще одно свойство, введем некоторые обозначения. Для источника с алфавитом X ={1,2, ,n} и некоторого оптимального кода C ={c1,c2 , ,cn} введем вспомогательный источник с алфавитом X ′={1,2, ,n 1}, символам которого мы припишем вероятности

p1′ = p1, p2′ = p2 , , pn2 = pn2 , pn1 = pn + pn1 .

Теперь мы построим код Cдля этого источника по следующему правилу: символам 1, 2, …, n – 1 мы припишем кодовые слова c1′ = c1 , c2′ = c2 , …, cn2 = cn2 соответственно, а последнему символу n 1 мы присвоим кодовое слово cn1, представляющее собой общую часть кодов cn1 и cn .

СВОЙСТВО 2.3.4. Если код Cдля источника X является оптимальным, то код C будет оптимальным для источника X.

Это последнее свойство является ключевым при построении оптимального кода Хаффмана. Действительно, используя данное свойство, построение кода мы можем осуществить рекуррентно, сводя задачу построения кода объемаn к аналогичной задачео построении кода объемаn – 1.

Алгоритм построения оптимального кода Хаффмана удобнее всего сформулировать в терминах бинарных деревьев. Как мы уже отмечали

59

в § 2.1, бинарные деревья находятся во взаимооднозначном соответствии с неравномерными префиксными кодами.

Алгоритм построения кода Хаффмана

Вход: вероятности символов p1 p2 ≥ ≥ pn .

Выход: бинарное дерево, ассоциированное с кодом Хаффмана. Инициализация: n0 = n – число необработанных узлов дерева. while ( n0 >1) do

в списке необработанных узлов выбираем два с наименьшими вероятностями; исключаем эти узлы из списка необработанных;

вводим новый узел, присваивая ему вероятность, равную сумме вероятностей двух исключенных узлов; новый узел соединяем ребрами с двумя исключенными узлами;

n0 n0 1; end.

После того как данный алгоритм завершится, будет построено кодовое дерево неравномерного префиксного кода с минимально возможной средней длиной.

Из прямой теоремы кодирования следует, что для кодов Хаффмана средняя длина удовлетворяет неравенству

l < H +1,

где H – энтропия источника. Отсюда получаем, что избыточность кода Хаффмана всегда является меньше единицы (см. определение 2.2.1):

r <1.

60

В конкретных задачах, впрочем, избыточность оказывается много меньшей единицы. Более точная оценка для избыточности кода Хаффмана была получена Р. Галлагером в 1978 году [4].

ТЕОРЕМА 2.3.1. Пусть p1 – максимальное значение вероятностей символов источника. Тогда избыточность кода Хаффмана для этого источника удовлетворяет условию

 

p1 +σ,

p1 <1/ 2,

r

 

 

2 − f ( p1 ) − p1, p1 ≥1/ 2,

где f ( p) = −p log2 p (1p)log2 (1p)

– энтропия двоичного источника

(см. пример 1.1.2 из главы 1), σ =1log2 e log2 log2 e 0.08607.

Оценка Галлагера точна при p1 > 0.5. В то же время, для p1 < 0.5 она дает весьма грубое приближение к истинному значению избыточности r. В свое время этот факт привел к интенсивному поиску более точных оценок, в результате которого, в конце концов, в статье Манстеттена была получена соответствующая оценка [5]. Кроме того, было доказано, что эта оценка более не может быть улучшена, если известно только значение максимальной вероятности p1 .

Пример решения задачи

Задача. Пусть источник с алфавитом X ={a,b,c,d,e, f } имеет вероятности появления символов p(a) =0.4, p(b) = 0.3, p(c) = 0.1, p(d ) =0.1, p(e) = 0.05, p( f ) =0.05. Построить код Хаффмана для этого источника, вычислить его среднюю длину и избыточность.

Решение. Кодовое дерево Хаффмана, соответствующее данному примеру, имеет следующий вид (один из его вариантов):

61

Рис. 2.3.1. Бинарное дерево Хаффмана

Поясним подробнее алгоритм его построения.

Узлы дерева обозначены точками, а ребра – сплошными линиями. Для удобства построение дерева Хаффмана ведется по ярусам (англ. tiers), которые представляют собой прерывистые вертикальные линии. На нулевом ярусе (tier 0) располагаем узлы (концевые вершины), соответствующие исходным символам алфавита источника. Рядом выписываем значения вероятностей символов. Напомним, что символы всегда располагаем по убыванию вероятностей.

На следующем ярусе (tier 1) производим объединение двух вершин

с минимальными значениями вероятностей. В нашем случае– это вершины,

62

отвечающие символам e и f. Полученной при этом новой вершине приписываем вероятность, равную сумме вероятностей символов e и f, то есть

0.05 + 0.05 = 0.1.

Далее у нас имеется несколько вариантов. На ярусе 2 имеем две вершины с вероятностями 0.1 (соответствующие символам c и d) и построенную на предыдущем шаге промежуточную вершину с той же вероятностью 0.1. Таким образом, мы можем объединить любую из трех пар этих вершин, что приведет к различным вариантам бинарного дерева Хаффмана. Отметим, что, несмотря на возможность получения различных вариантов неравномерно кода, средняя длина должна в любом случае получиться одной и той же, так как по своему смыслу код Хаффмана является кодом с минимальной средней длиной. В качестве примера объединим вершины, соответствующие символам c и d (см. рис. 2.3.1), и припишем полученной промежуточной вершине вероятность 0.1 + 0.1 = 0.2.

Повторяя аналогичным образом эти рассуждения, в результате придем к бинарному дереву, изображенному на рис. 2.3.1. На его последнем ярусе (tier 5) располагается корневая вершина, которой приписывается вероятность, равная единице.

После того как дерево построено, каждому его «верхнему» ребру ставится в соответствие бинарная единица, а каждому «нижнему» ребру – бинарный ноль. На рис. 2.3.1 эти числа выделены красным цветом.

На заключительном этапе строим код Хаффмана. Делаем это следующим образом: начиная от корневой вершины «двигаемся» к концевой вершине, соответствующей выбранному символу. По пути считываем встречающиеся нули или единицы и выписываем их, не меняя порядок. При этом единственность каждого кода гарантируется тем фактом, что в бинарных деревьях имеется ровно один путь, соединяющий корень с данной концевой вершиной. Таким образом, для бинарного дерева, изображенного на рис. 2.3.1, получаем следующие коды символов:

a = 1, b = 01, c = 0011, d = 0010, e = 0001, f = 0000.

63

Длины полученных кодовых слов равны:

l(a) =1, l(b) = 2, l(c) = l(d ) = l(e) = l( f ) = 4 .

Отсюда для средней длины построенного кода получаем

l= p(a)l(a) + p(b)l(b) + p(c)l(c) + p(d )l(d ) + p(e)l(e) + p( f )l( f ) =

=0.4 1+0.3 2 +0.1 4 +0.1 4 +0.05 4 +0.05 4 = 2.2 бит.

Для энтропии этого источника имеем

H= −(p(a)log2 p(a) + p(b)log2 p(b) + p(c)log2 p(c) + p(d )log2 p(d ) +

+p(e)log2 p(e) + p( f )log2 p( f ))= −(0.4 log2 0.4 +0.3 log2 0.3 +

+2 0.1 log2 0.1+2 0.05 log2 0.05)2.1464 бит.

Отсюда, согласно формуле (2.2.3), избыточность данного кода равна

r = l H 0.0536 бит.

Ответ. Код Хаффмана для данного источника имеет вид a = 1, b = 01,

c = 0011, d = 0010, e = 0001, f = 0000. Его средняя длина

 

= 2.2 бит, а из-

l

быточность r 0.0536 бит.

 

 

 

 

 

 

 

Задачи для самостоятельного решения

 

 

1.

Построить

код

Хаффмана

для

источника

с

алфавитом

X ={a,b,c,d,e, f , g},

если

вероятности его

символов равны

p(a) =0.3,

p(b) =0.25, p(c) =0.15, p(d ) =0.1, p(e) = 0.1, p( f ) =0.05,

p(g) =0.05.

Найти среднюю длину полученного кода и его избыточность.

 

2.

Для троичного постоянного источника с алфавитом

X ={a,b,c}

и вероятностями символов

p(a) =1/ 2,

p(b) =1/ 4 и p(с) =1/ 4 построить

коды Хаффмана для символов алфавитов а) X; б) X 2 ; в) X 3 . Для каждого из построенных кодов вычислить среднюю длину и избыточность.

64

3*. Источник выбирает символы из алфавита объемом N с равными вероятностями. Найти среднюю длину кода Хаффмана как функцию N.

Контрольные вопросы

1.Перечислите свойства неравномерного кода с минимальной средней длиной.

2.Сформулируйте алгоритм построения дерева Хаффмана.

3.Как средняя длина кода Хаффмана связана с энтропией источника?

4.Сформулируйте верхнюю оценку для избыточности кода Хаффмана, полученную Галлагером.

§2.4. КОДИРОВАНИЕ ШЕННОНАИ ГИЛЬБЕРТАМУРА

Впринципе, код Хаффмана уже дает исчерпывающее решение задачи

опосимвольном неравномерном эффективном кодировании. Тем не менее, изучим еще два примера кодирования – кодирование Шеннона и кодирование Гильберта – Мура. Оба этих кода заметно хуже кодирования Хаффмана, так как обладают бо̀льшей избыточностью. Однако изучить эти методы нам будет полезно, во-первых, чисто по педагогическим соображениям, а во-вторых, рассматриваемые нами ниже алгоритмы являются более простыми с точки зрения практической реализации. Кроме того, кодирование Гильберта – Мура оказывается более полезным при разработке методов кодирования последовательностей символов, когда на первый план выходит не проблема избыточности, а проблема роста сложности построения кодовых слов и их декодирования.

Еще раз рассмотрим источник символов из алфавита X ={1,2, ,n} с вероятностями, расположенными по убыванию: p1 p2 ≥ ≥ pn . Каждому символу i сопоставим так называемую кумулятивную вероятность qi по следующему правилу:

65

q3 = p1 + p2 ,
q2 = p1,
q1 =0,
0, i =1;
= 1
ip j , i >1.j=1

qi

Другими словами, …, qn = p1 + p2 + + pn1. Принцип построения кодов Шеннона сформулируем в виде следующего определения.

ОПРЕДЕЛЕНИЕ 2.4.1. Кодом Шеннона символа i является последовательность нулей и единиц, представляющая собой первые

li = −log2 pi

разрядов после запятой в двоичной записи числа qi . Здесь скобки означают операцию округления

большего целого. Например:

2.5 = 3, 6.5 = 7, 4.01 = 5.

(2.4.1)

до ближайшего

Алгоритм построения кода Шеннона

Вход: вероятности символов источника p1 p2 ≥ ≥ pn . Выход: список кодов Шеннона символов источника. Вычисляем кумулятивные вероятности:

q1 =0;

for i = 2 to n do

qi = qi1 + pi1 ; end

вычисляем кодовые слова: for i =1 to n do

ci =первые li = −log2 pi разрядовпосле запятой в двоичной записи числа qi ;

end end.

66

Покажем, что код Шеннона является префиксным. Пусть i и j – два символа источника, такие что i < j . Так как pi p j , получаем

log2 pi log2 p j

 

 

log2 pi

≤ −log2 p j ,

откуда следует, что l

= −log

2

p

 

log

2

p

 

= l

j

. Таким образом, кодо-

i

 

 

i

 

 

 

j

 

 

вое слово ci символа i будет короче,

чем кодовое слово c j символа j. По-

этому далее нам достаточно будет показать, что эти коды отличаются друг от друга, по крайней мере, одним из первых li символов.

Рассмотрим разность между кумулятивными вероятностями этих символов:

j1

 

 

i1

 

j1

 

+ + p j1 .

 

 

q j qi = ∑ pk

− ∑ pk =

pk = pi + pi+1

 

 

k =1

 

 

k =1

 

k =i

 

 

 

 

 

 

Отсюда ясно, что

q

j

q

p .

Неравенство

l

= −log

2

p ≥ −log

2

p

 

 

i

i

 

i

 

i

i

равносильно неравенству pi 2li , с помощью которого мы можем записать

q j qi 2li .

Правая часть последнего неравенства в двоичной записи после запятой имеет li 1 нулей и единицу в li -ой позиции. Следовательно, в одном из первых li разрядов кодовые слова ci и c j будут различаться. Так как

доказанное утверждение будет верно для любой пары символов, код Шеннона является префиксным.

При построении кода Шеннона требовалась исходная упорядоченность символов источника по убыванию их вероятностей. На практике это означает, что перед применением алгоритма Шеннона нам потребуется произвести сортировку символов источника, что довольно трудоемко. Оказывается, можно модифицировать алгоритм Шеннона так, чтобы

67

упорядоченность символов по убыванию их вероятностей стала не существенной. Соответствующая модификация носит название кодирования Гильберта – Мура.

ОПРЕДЕЛЕНИЕ 2.4.2. Кодом Гильберта – Мура символа i является последовательность нулей и единиц, представляющая собой первые

l

= −log

2

( p

/ 2)

разрядов после запятой в двоичной записи числа

i

 

i

 

 

σi = qi + pi / 2.

Всоответствии с этим алгоритмом построение кодов Гильберта –

Мура выглядит следующим образом:

Алгоритм построения кодов Гильберта – Мура

Вход: вероятности символов источника p1, p2 , , pn . Выход: список кодов Гильберта – Мура символов источника.

Вычисляем кумулятивныевероятностиивспомогательныевеличиныσi :

q1 =0;

σ1 = p1 / 2;

for i = 2 to n do qi = qi1 + pi1 ;

σi = qi + p2i ;

end

вычисляем кодовые слова: for i =1 to n do

ci =первые li = −log2 pi +1 разрядовпосле запятой в двоичной записи числа σi ;

end end.

Доказательство префиксности кода Гильберта – Мура здесь не приводим. Любознательные читатели смогут найти его в учебном пособии [3].

68

Примеры решения задач

Задача 2.4.1. Для источника, разобранного в примере решения задачи из предыдущего параграфа, построить код Шеннона, вычислить его среднюю длину и избыточность. Сравнить полученные результаты с аналогичными результатами для кода Хаффмана.

Решение. Построение кода Шеннона удобно производить путем заполнения таблицы, в которой помимо исходных данных содержатся все кумулятивные вероятности qi , длины кодовых слов li , двоичная запись чисел qi и сами кодовые слова (табл. 2.4.1).

 

 

 

 

 

 

Таблица 2.4.1

 

 

 

Построение кода Шеннона

 

 

 

 

 

 

 

 

xi

pi

qi

 

li

Двоичная запись qi

Кодовое слово

a

0.40

0.00

 

2

0.000000…

00

b

0.30

0.40

 

2

0.011001…

01

 

 

 

 

 

 

 

c

0.10

0.70

 

4

0.101100…

1011

 

 

 

 

 

 

 

d

0.10

0.80

 

4

0.110011…

1100

 

 

 

 

 

 

 

e

0.05

0.90

 

5

0.111001…

11100

 

 

 

 

 

 

 

f

0.05

0.95

 

5

0.111100…

11110

Поясним процесс заполнения табл. 2.4.1. В первом столбце указаны символы алфавита источника, во втором – их вероятности. Это – входные данные задачи. Затем вычисляем кумулятивные вероятности. Первая кумулятивная вероятность q1 по определению равна нулю. Все последующие удобно вычислять по рекуррентной формуле

qi = qi1 + pi1 .

В соответствии с этой формулой получаем:

q2 = q1 + p1 = 0 +0.4 = 0.4,

q3 = q2 + p2 = 0.4 +0.3 = 0.7,

69

q4 = q3 + p3 = 0.7 +0.1 = 0.8,

q5 = q4 + p4 = 0.8 +0.1 = 0.9,

q6 = q5 + p5 = 0.9 +0.05 = 0.95.

Следующим этапом решения задачи является вычисление длин li будущих кодов Шеннона. Согласно формуле (2.4.1) имеем:

l

 

 

 

= −log

2

 

p

= −log

2

 

0.4

= ≈1.3219

= 2,

 

1

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

l

2

=

log

2

p

 

= −log

2

0.3

= ≈1.7370 = 2

,

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

l

3

=

log

2

p

 

= −log

2

0.1 = ≈3.3219 = 4

,

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

l

4

= −log

2

p

 

= −log

2

0.1

= ≈ 3.3219 = 4

,

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

l

5

 

= −log

2

p

 

= −log

2

0.05

= ≈ 4.3219 =5,

 

 

 

 

5

 

 

 

 

 

 

 

 

 

l

6

 

 

= −log

2

p

 

= −log

2

0.05

= ≈ 4.3219 =5.

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

После этого требуется перевести кумулятивные вероятности qi в двоичную систему счисления, оставляя после запятой необходимое число нулей и единиц. В нашем примере достаточно будет оставить шесть знаков после запятой, так как наибольшая длина кода равна l6 =5 (то есть оставляем пять и один «про запас»). В итоге для чисел qi получаем следующие двоичные выражения (по поводу алгоритма перевода дробных чисел в двоичную систему счисления см. прил. Б):

q1 =0.0010 =0.0000002 ,

q2 =0.4010 0.0110012 ,

q3 =0.7010 0.1011002 ,

70

q4 =0.8010 0.1100112 ,

q5 =0.9010 0.1110012 ,

q6 =0.9510 0.1111002 .

Теперь у нас все готово, чтобы выписать коды Шеннона. Для каждого символа в качестве его кода берем первые li знаков после запятой в двоичной записи соответствующего числа qi :

a = 00, b = 01, c =1011, d =1100, e =11100 , f =11110.

Очевидно, что данный код префиксный, так как ни одно его кодовое слово не является началом другого.

Вычислим среднюю длину полученного кода:

l = ∑ l(x) p(x) = 0.40 2 +0.30 2 +0.10 4 +0.10 4 +0.05 5 +0.05 5 = 2.7 бит.

x X

Таким образом, для этого источника средняя длина кода Шеннона (равная 2.7 бит) больше, чем средняя длина кода Хаффмана (равная 2.2 бит), на 0.5 бит.

Так как энтропия данного источника равна H 2.1464 бит (см. пример решения задачи в предыдущем параграфе), для избыточности кода Шеннона получаем

r = l H = 2.7 2.1464 0.5536 бит,

что приблизительно на 0.5 больше, чем в случае избыточности кода Хаффмана.

Ответ. Код Шеннона a = 00, b = 01, c =1011, d =1100, e =11100 , f =11110 имеет среднюю длину l = 2.7 бит и избыточность r 0.5536 бит. Средняя длина кода Шеннона для этого источника больше средней длины

71

соответствующего кода Хаффмана на 0.5 бит; настолько же будет большей и его избыточность.

Задача 2.4.2. Для источника с алфавитом X ={a,b,c} и вероятностями символов p(a) =0.1, p(b) =0.6 и p(c) = 0.3 построить код Гильберта – Мура, вычислить его среднюю длину и избыточность.

Решение. Так же, как и в случае кода Шеннона, построение кода Гильберта – Мура удобно производить путем заполнения соответствующей таблицы (табл. 2.4.2).

 

 

 

 

 

 

Таблица 2.4.2

 

 

 

Построение кода Гильберта – Мура

 

 

 

 

 

 

 

 

xi

pi

qi

σi

li

Двоичная запись σi

Кодовое слово

a

0.1

0.0

0.05

5

0.000011…

00001

 

 

 

 

 

 

 

b

0.6

0.1

0.40

2

0.011001…

01

 

 

 

 

 

 

 

c

0.3

0.7

0.85

3

0.110110…

110

 

 

 

 

 

 

 

Первый столбец табл. 2.4.2. – исходные символы источника, второй – их вероятности. Третий столбец содержит кумулятивные вероятности qi :

q1 =0.0, q2 = q1 + p1 =0.1, q3 = q2 + p2 =0.1+0.6 =0.7.

После этого вычисляем величины σi = qi + pi / 2:

σ1 = q1 + p21 = 0.0 + 02.1 = 0.05;

σ2 = q2 + p22 = 0.1+ 02.6 = 0.40 ;

σ3 = q3 + p23 = 0.7 + 02.3 = 0.85.

72

Следующим шагом находим длины кодов Гильберта – Мура в соот-

ветствии с формулой l

 

= −log

2

p

/ 2 :

 

 

i

 

 

 

 

 

i

 

 

 

l

 

 

= −log

2

0.05

= 4.3219 = 5;

1

 

 

 

 

 

 

 

 

 

l

2

=

log

2

0.3

= 1.7370 = 2

;

 

 

 

 

 

 

 

 

 

 

l3 = −log2 0.15 = 2.7370 = 3.

В шестом столбце таблицы указаны числа σi в двоичном формате, оставляя после запятой шесть разрядов (с запасом):

σ1 = 0.0510 = 0.0000112 ;

σ2 = 0.4010 = 0.0000112 ;

σ3 = 0.8510 = 0.1101102.

Наконец, в самом крайнем правом столбце указаны итоговые кодовые слова Гильберта – Мура; в качестве i-го кода берется двоичная последовательность li символов после запятой в двоичной записи числа σi :

a = 00001, b = 01, c =110.

Вычислим среднюю длину полученного кода:

l = ∑ l(x) p(x) = 0.1 5 +0.6 2 +0.3 3 = 2.6 бит.

x X

73

Так как энтропия данного источника равна

H= −[p(a)log2 p(a) + p(b)log2 p(b) + p(c)log2 p(c)]=

=[0.1 log2 0.1+0.6 log2 0.6 +0.3 log2 0.3]1.296 бит,

для избыточности получаем

r = l H = 2.6 1.296 1.305 бит.

Ответ. Код Гильберта – Мура a = 00001,

b = 01, c =110 имеет сред-

нюю длину

 

= 2.6 бит и избыточность r 1.305 бит.

 

 

l

 

 

 

 

Задачи для самостоятельного решения

 

 

1. Построить

код

Шеннона

для

источника

с

алфавитом

X ={a,b,c,d,e, f , g},

если вероятности появления его

символов равны

p(a) =0.3, p(b) =0.25,

p(c) =0.15,

p(d ) =0.1, p(e) = 0.1,

p( f ) =0.05,

p(g) =0.05. Найти среднюю длину полученного кода и его избыточность.

2. Построить

код

Гильберта – Мура для источника с алфавитом

X ={a,b,c,d,e},

если

вероятности появления его символов равны

p(a) =0.1, p(b) =0.2,

p(c) =0.4 , p(d ) =0.2, p(e) = 0.1. Найти среднюю

длину полученного кода и его избыточность.

Контрольные вопросы

1.Что такое кумулятивная вероятность?

2.Сформулируйте определение кода Шеннона.

3.Сформулируйте определение кода Гильберта – Мура.

4.Являются ли коды Шеннона и Гильберта – Мура оптимальными

сточки зрения средней длины кода?

74

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]