Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LEKTsIYa_4

.pdf
Скачиваний:
0
Добавлен:
22.04.2024
Размер:
582.9 Кб
Скачать

ЛЕКЦИЯ № 4.

2. Кодовые слова переменой длины.

Если символы источника не равновероятны, то более эффективно использовать кодовые слова переменной длины. Пример: код Морзе (19 век). Символам, возникающим более часто, ставятся в соответствие более короткие кодовые слова, а символам, возникающим менее часто, сопоставляются более длинные кодовые слова. Такой метод кодирования, который требует знания вероятностей появления символов источника, называется энтропийным.

Рассмотрим

пример.

Пусть

ДИБП

имеет

алфавит

объемом

 

L 4 ,

A {a , a

, a

, a

} . Символы появляются

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

p(a )

1

, p(a

)

1

 

,

 

 

1

2

3

4

 

 

 

 

 

 

1

2

 

2

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p(a3 ) p(a4 )

1

. Предположим, что они кодируются следующим образом:

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

код 1: a1 0,

a2 01, a3

011, a4

111 , код 2: a1

0, a2 10,

a3 110 , a4

111

 

Пусть принимается последовательность 0010010111… . Тогда декодирование кода 1 дает результат: a1 , a2 , a1 , a2 , a1 , a4 или a1 , a2 , a1 , a2 , a3 . Т.е. имеем не однозначное декодирование. По коду 2: a1, a1, a2 , a1, a2 , a4 . Здесь существует только один вариант декодирования. Ни одно кодовое слово кода 2 не является началом (префиксом) другого кодового слова.

В общем, префиксное условие кода требует,

чтобы для кодового слова длины

K (b1....bM bM 1.....bK ) не

существовало других

кодовых слов длины M K с

элементами (b1....bM ) .

Это свойство делает кодовые слова однозначно

декодируемыми.

Критерий оптимальности однозначно декодируемых кодов переменной длины имеет вид:

L

 

K nk p(ak ) min ,

(2.13)

k 1

где K - среднее число бит, приходящихся на один символ источника, nk - длина

k - го кодового слова.

 

 

Теорема Шеннона кодирования ДИБП. Пусть X -

ансамбль символов

ДИБП с конечной энтропией

H (X ) и выходными символами из алфавита

A {a1,...., aL } с вероятностями

выхода p(ak ), k 1,2,.., L .

Тогда существует

возможность создать код, который удовлетворяет префиксному условию и имеет среднюю длину K , удовлетворяющую неравенству

 

(2.14)

H ( X )

K

H ( X ) 1

Алгоритм кодирования Фано.

Пример. Рассмотрим ДИБП с объемом алфавита L 8 . Символы источника имеют вероятности выхода

p(a ) p(a

 

)

1

, p(a

) p(a

 

)

1

, p(a

) p(a

) p(a

 

) p(a )

1

.

2

 

4

 

7

 

1

 

4

3

 

 

 

8

 

5

6

 

8

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1) Располагаем

 

сообщения

источника

 

в порядке

 

не возрастания их

вероятностей.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2)Множество символов разбивается (сверху вниз) на два подмножества так, чтобы суммы вероятностей входящих в них сообщений оказались бы равными или минимально отличающимися друг от друга. Сообщениям первого подмножества приписываем «0», а сообщениям второго подмножества – «1» или наоборот.

3)С каждым из образовавшихся подмножеств повторяем пункт 2).

 

 

{a1 ,......, a8 }

 

 

{a1 , a2}

 

{a3 ,......, a8 }

 

0

 

1

{a1}

{a2 }

{a3 , a4 }

{a5 , a6 , a7 , a8 }

00

01

10

11

{a3 }

{a4 }

{a5 , a6 } {a7 , a8 }

100

101

110

111

{a3 } {a3 } {a3 } {a3 }

1100 1101 1110 1111

Символ

Вероятность

Код

a1

1/4

00

a2

1/4

01

a3

1/8

100

a4

1/8

101

a5

1/16

1100

a6

1/16

1101

a7

1/16

1110

a8

1/16

1111

Вывод. Метод кодирования Фано позволяет строить оптимальные

префиксные коды в том случае, если вероятности символов источника раны p(ak ) 2 c (для двоичных кодов), где с – положительное целое число.

Существует метод кодирования Хаффмена, применение которого к любому произвольному ансамблю символов ДИБП обеспечивает получение оптимального по критерию (2.13) префиксного кода.

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

Критерий оптимальности кодов Хаффмена – минимум средней длины кодового слова (2.13).

Рассмотрим пример. ДИБП выдает символы из алфавита объемом L 7 с вероятностями:

p(a1 ) 0.2, p(a2 ) 0.35, p(a3 ) 0.1, p(a4 ) 0.3, p(a5 ) 0.005, p(a6 ) 0.04, p(a7 ) 0.005 .

1)Расположить символы источника в порядке убывания (невозрастания) вероятностей.

2)Процесс кодирования начинается с двух наименее вероятных символов a5 , a7 . Эти символы объединяются, причем верхней ветви присваивается «0»,

нижней «1» или наоборот.

3) Вероятности этих двух ветвей складываются, суммарному узлу присваивается вероятность 0.01.

4) Далее пункты 2), 3) повторяются, пока не исчерпаются символы источника. Вероятность последнего узла равна 1.

Полученный код не является единственно возможным.

Построим кодовое дерево.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кодовые слова

a2

(0.35)

 

 

 

 

 

 

 

 

 

0

0

 

 

 

 

 

 

 

 

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a4

(0.3)

 

 

 

 

 

(0.65)

 

0

1

10

 

 

 

 

 

 

 

 

 

 

 

a1

(0.2)

 

 

 

 

 

 

0

 

 

 

 

110

 

 

 

 

 

(0.35)

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a3

(0.1)

 

 

 

 

 

0

 

 

 

 

 

 

1110

 

 

 

 

 

 

 

 

 

 

 

 

(0.15)

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a6

(0.04)

 

 

0

 

 

 

 

 

 

 

11110

 

 

 

 

 

 

 

 

 

 

 

(0.05)

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a5

(0.005)

 

 

0

 

 

 

 

 

 

 

 

111110

 

 

 

 

 

 

 

 

 

 

(0.01)

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a7

(0.005)

 

 

1

 

 

 

 

 

 

 

 

111111

 

 

 

 

 

 

 

 

 

Кодовые слова записываются по кодовому дереву, проходя по нему, справа налево до кодируемого символа.

Энтропия заданного ДИБП H (X ) 2.11бит/символ (см. ф-лу (2.4)),

средняя

длина кодового слова

 

 

 

 

 

Тогда

 

K

2.21бит/символ (см. ф-лу (2.13)).

эффективность кода равна

H

( X )

 

2.11

0.95 (95%) .

 

 

 

 

2.21

 

 

 

K

 

 

Как уже отмечалось выше, предложенное кодовое дерево не является единственным. Возможен, например, следующий вариант:

 

 

 

 

 

 

 

 

 

 

 

 

Кодовые слова

a2

(0.35)

 

 

 

 

 

 

0

00

 

 

 

 

 

 

 

(0.65)

 

0

 

a4

(0.3)

 

 

 

 

 

 

1

01

 

 

 

 

 

 

 

 

 

 

 

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

(0.2)

 

 

 

 

 

 

0

 

10

 

 

 

 

 

(0.35)

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a3

(0.1)

 

 

 

 

0

 

 

 

 

110

 

 

 

(0.15)

 

1

 

 

 

 

 

 

 

 

 

 

 

 

a6

(0.04)

 

 

 

0

 

 

 

 

 

1110

 

 

 

 

 

 

 

 

 

(0.05)

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a5

(0.005)

 

 

0

 

 

 

 

 

 

11110

 

 

 

 

 

 

 

 

 

(0.01)

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a7

(0.005)

 

 

1

 

 

 

 

 

 

11111

 

 

 

 

 

 

 

 

Для такой схемы средняя длина кодовой комбинации тоже равна

K 2.21бит/символ, поэтому ее эффективность тоже составляет 95%.

Рассмотренный пример показывает посимвольное кодирование. Более эффективно – кодирование блоков из J символов источника одновременно.

В этом случае неравенство (2.14) можно переписать в следующем виде:

JH(X ) KJ JH(X ) 1,

где KJ - среднее число бит в J символьном блоке. Далее разделим это неравенство на J :

 

 

 

 

 

 

 

1

(2.15)

 

 

 

 

 

 

H ( X )

K

H ( X )

 

 

 

 

 

 

J

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здесь

 

 

KJ

- среднее число бит, приходящееся на один символ источника.

K

 

J

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Следовательно,

K

можно сделать как угодно близким к

H (X ) , выбирая J

достаточно большим, т.е.

 

H ( X ) , при J .

 

K

 

Пример. ДИБП выдает символы из алфавита объемом L 3 с вероятностями

p(a1 ) 0.45, p(a2 ) 0.35, p(a3 ) 0.2 .

 

 

 

 

 

Сначала рассмотрим посимвольное кодирование.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кодовые слова

 

a1

(0.45)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a2

(0.35)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(0.55)

 

 

 

 

1

 

 

 

 

 

a3

(0.2)

 

 

 

 

 

 

 

1

 

 

 

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Энтропия

источника

H(X ) 1.513бит/символ, средняя длина кодовой

комбинации

 

 

 

 

 

 

 

 

 

 

 

Эффективность такой схемы кодирования

 

 

K

1.55бит/символ.

равна

H

( X )

 

 

1.513

0.976 (97,6%) .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

K

1.55

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если символы закодировать парами, то получим кодовое дерево:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кодовые слова

a1a1 (0.20250)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

0

 

00

 

 

 

 

 

 

 

 

 

 

 

 

 

(0.5175)

 

 

 

 

 

a1a2

(0.1575)

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(0.315)

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

a2 a1

(0.1575)

 

 

1

 

 

 

 

(1)

 

 

011

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a2 a2

(0.1225)

 

 

 

 

 

 

 

 

 

0

 

0

 

 

100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(0.2125)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1a3

(0.09)

 

 

 

 

 

 

1

 

 

(0.4825)

 

 

 

 

 

 

 

101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a3 a1

(0.09)

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

1

 

1100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(0.16)

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

a2 a3

(0.07)

 

 

 

1

 

 

 

 

1

 

 

 

 

1101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(0.27)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a3a2

(0.07)

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

1110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(0.11)

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

a3 a3

(0.04)

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

1111

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Энтропия

H2 ( X ) 3.0255 бит/пара

символов,

 

средняя

длина кодовой

комбинации

 

 

2 3.0675 бит/пара

символов (

 

 

3.0675

 

1.53375 бит/символ),

 

K

K

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

тогда эффективность схемы кодирования

3.0255

 

 

 

1.513

0.986 (98.6%)

 

 

 

 

 

 

 

 

 

 

 

 

3.0675

 

1.53375

 

увеличилась по сравнению с посимвольным кодированием.

Кодирование стационарных источников.

Энтропия последовательности символов от стационарного источника определяется следующим образом:

J

 

H ( X1 ,..., X J ) H ( X i / X1 ,..., X i 1 ) ,

(2.16)

i 1

 

где X1 ,..., X J - блок случайных переменных, H ( X i / X1 ,..., X i 1 )

- энтропия i - го

символа при условии, что источник выдал предыдущие i 1 символов. Энтропия на символ для такого J символьного блока:

H J ( X )

1

H ( X1 ,..., X J )

(2.17)

J

 

 

 

Количество информации стационарного источника – энтропия на символ

(2.17) при J .

Пусть источник выдает J символьный блок с энтропией H J ( X ) . Тогда можно кодировать этот блок кодом Хаффмена, который удовлетворяет префиксному условию. Полученный код имеет среднее число бит на J символов, удовлетворяющее условию:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

H (X1,..., X J )

K

J H (X1,..., X J ) 1.

 

Разделим это неравенство на J , получим:

 

 

 

 

 

 

 

 

 

 

H J ( X )

 

H J ( X )

1

,

 

(2.18)

 

 

 

 

 

 

K

 

 

 

 

 

 

 

J

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где

 

 

KJ

- среднее число бит на один символ источника. Увеличивая длину

K

 

J

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

блока J

 

можно приблизить

K

к H J ( X ) , т.е.

 

K

HJ (X ) при J .

 

Вывод. Эффективное кодирование стационарных источников может быть

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

Недостаток: надо знать совместные функции плотности распределения вероятности для J символьных блоков.

Соседние файлы в предмете Основы теории информации