Теоретические сведения

 

Е. Н. Гилбертом и Э. Ф. Муром был предложен метод построения алфавитного кода, для которого .

Пусть символы алфавита некоторым образом упорядочены, например, a 1 ≤a 2 ≤…≤an. Код  называется алфавитным, если кодовые слова лексикографически упорядочены, т.е. .

Процесс построения кода происходит следующим образом.

1. Вычисляем величины Qi, i= 1 ,n:

Q 1 =p 1 / 2,

Q 2 =p 1 +p2/ 2,

Q 3 =p 1 +p 2 +p 3 / 2,

Qn=p 1 +p 2 +…+pn- 1 +pn/ 2.

2. Представляем суммы Qi в двоичном виде.

3. В качестве кодовых слов берем  младших бит в двоичном представлении Qi, .

Пример. Пусть дан алфавит A={ a 1, a 2, a 3, a 4, a 5, a 6} с вероятностями p 1=0.36, p 2=0.18, p 3=0.18, p4=0.12, p 5=0.09, p 6=0.07. Построенный код приведен в табл. 1.

Таблица 1

Код Гилберта-Мура

ai Pi Qi Li кодовое слово
a 1 a2 a3 a4 a5 a6 1/23≤0.18 1/23≤0.18<1/22 1/22≤0.36<1/21 1/24≤0.07 1/24≤0.09 1/24≤0.12 0.09 0.27 0.54 0.755 0.835 0.94 4 4 3 5 5 5 0001 0100 100 11000 11010 11110

 

Средняя длина кодового слова не превышает значения  энтропии   плюс 2. Действительно,

Lср =4 . 0.18+4 . 0.18+3 . 0.36+5 . 0.07+5 . 0.09+5 . 0.12=3.92<2.37+2

 

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

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

Обозначим:

n – количество символов исходного алфавита;

P – массив вероятностей символов;

Q – массив для величин Qi;

L – массив длин кодовых слов;

C – матрица элементарных кодов.

pr:=0

DO (i=1,…,n)

    Q [i]:= pr+ P[i] /2

    pr:=pr+ P[i]

    L [i]:= - élog2P[i] ù +1      (использовать соотношение из п. 6.1)

OD

DO (i=1,…,n)

    DO (j=1,…,L[i])

    Q [i]:=Q [i] *2                             (формирование кодового слова

              C [i,j]:= ëQ [i]û                                         в двоичном виде)

    IF (Q [i] >1) Q [i]:=Q [i] - 1 FI

              OD

OD

 

Порядок выполнения работы

1. Изучить теоретический материал.

2. Реализовать процедуру построения кода Гилберта-Мура.

3. Построить код Гилберта-Мура для текста на английском языке (использовать файл не менее 1 Кб). Распечатать полученную кодовую таблицу в виде:

Символ Вероятность Кодовое слово Длина кодового слова
       

 

4. Сравнить среднюю длину кодового слова с энтропией исходного файла для построенного кода Гилберта-Мура. Полученные результаты оформить в виде таблицы:

Энтропия исходного текста Средняя длина кодового слова
   

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

1. Почему код Гилберта-Мура считается почти оптимальным?

2. На сколько средняя длина кодового слова превосходит энтропию источника для кода Гилберта-Мура?

3. Какой код называется алфавитным?

4. Является ли алфавитным код Гилберта-Мура?

5. Почему код Гилберта-Мура имеет наибольшую избыточность среди рассмотренных почти оптимальных кодов?

Лабораторная работа № 6

Тема: Оптимальный код Хаффмана.

Цель работы: ознакомление с алгоритмами эффективного кодирования неравновероятных символов источника дискретных сообщений и сравнение их эффективности.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: