Алфавитный код Гилберта – Мура
Рассмотрим источник с алфавитом А={a1,a2,…,an} и вероятностями p1,…pn. Пусть символы алфавита некоторым образом упорядочены, например, a1≤a2≤…≤an. Алфавитным называется код, в котором кодовые слова лексико-графически упорядочены, т.е. φ(a1)≤φ(a2)≤…≤φ(an).
Е.Н. Гилбертом и Э.Ф. Муром предложили метод построения алфавитного кода, для которого Lср < H+2. Процесс построения происходит следующим образом.
1. Составим суммы Qi, i=1,n, вычисленные следующим образом:
Q1=p1/2, Q2=p1+p2/2, Q3=p1+p2+p3/2,…, Qn=p1+p2+…+pn-1+pn/2.
2. Представим суммы Qi в двоичном виде.
3. В качестве кодовых слов возьмем é-log2più +1 младших бит в двоичном представлении Qi.
Пример. Пусть дан алфавит A={a1, a2, a3, a4, a5, a6} с вероятностями p1=0.36, p2=0.18, p3=0.18, p4=0.12, p5=0.09, p6=0.07. Построенный код приведен в таблице.
Таблица 13 Код Гилберта-Мура
ai | Pi | Qi | Li | кодовое слово |
a1 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 |
Средняя длина кодового слова не превышает значения энтропии плюс 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
16.6 Варианты заданий
1) Написать процедуры построения g-, w-кодов Элиаса для заданного натурального числа.
2) Запрограммировать процедуру кодирования и декодирования последовательности нулей и единиц методом кодирования длин серий.
3) Написать процедуру кодирования и декодирования последовательности символов заданным побуквенным префиксным кодом.
4) Запрограммировать процедуру, которая определяет является ли заданная схема побуквенного кодирования префиксной.
5) Для заданного набора длин кодовых слов написать процедуру построения побуквенного префиксного кода.
6) Написать процедуру кодирования текста на русском языке кодом Хаффмена. Определить степень сжатия этого кода.
7) Написать процедуру кодирования текста на русском языке кодом Фано. Определить степень сжатия этого кода. Сравнить средние длины кодовых слов кода Хаффмена и кода Фано.
8) Написать процедуру кодирования текста на русском языке кодом Шеннона. Определить степень сжатия этого кода. Сравнить средние длины кодовых слов кода Хаффмена и кода Шеннона.
9) Написать процедуру кодирования текста на русском языке кодом Гилберта-Мура. Определить степень сжатия этого кода. Сравнить средние длины кодовых слов кода Хаффмена и кода Гилберта-Мура.
10) Графически изобразить кодовое дерево заданного префиксного кода.
РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
1. Вирт Н. Алгоритмы и структуры данных. – М.: , 1989.
2. Кнут Д. Искусство программирования для ЭВМ, сортировка и поиск. – М.: Мир, 1978.
3. Ахо А., Ульман Дж., Хопкрофт Дж. Построение и анализ вычислительных алгоритмов. – М. Мир, 1979.
4. Марченко А.И., Марченко Л.А. Программирование в среде Turbo PASCAL 7.0. Базовый курс. Киев: «ВЕК+», 2003.
5. Березин Б.И., Березин С.Б. Начальный курс С и С++. М: «Диалог-МИФИ», 2001
Дата добавления: 2022-02-05; просмотров: 1174;