
- •Содержание
- •Введение
- •Общие сведения о системе передачи данных
- •Задания и методические рекомендации по их выполнению
- •Задание №1 Сжатие информации
- •2.1.1 Методические рекомендации и примеры
- •2.2 Задание №2 Эффективное кодирование методом Хаффмана
- •2.2.1 Методические рекомендации и пример
- •2.3 Задание №3 Скрэмблирование
- •2.3.1 Методические рекомендации и пример
- •2.4 Задание №4 Расчет параметров модема
- •2.4.1 Методические рекомендации и пример
- •3 Общие указания к выполнению курсового проекта
- •Список используемых источников
2.2 Задание №2 Эффективное кодирование методом Хаффмана
Сформировать кодовые комбинации для передачи последовательности знаков алфавита в соответствии со своими ФИО и закодировать полученный алфавит:
а) равномерным кодом (табл. 2);
б) кодом Хаффмана;
в) сделать вывод.
г) Определить энтропию источника сообщений.
Д) Определить среднюю длину кодовой комбинации.
е) Составить кодовую комбинацию при передаче заданной последовательности сообщений Zi, Zj, Zk, Zl, Zm, Zp.
и) Ввести ошибку в N разряд кодовой комбинации табл.4 и записать декодированную последовательность сообщений. Сравните переданную и принятую последовательность сообщений.
Таблица 4. Место ошибки в сообщении.
№ ошибочного разряда |
Последняя цифра студенческого билета |
||||||||||
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
||
N |
n |
n-1 |
n-2 |
n-3 |
n |
n-1 |
n-2 |
n-3 |
n |
n-1 |
2.2.1 Методические рекомендации и пример
Закодировать источник сообщений – это значит сопоставить каждому символу на выходе источника определенную последовательность элементарных символов, например двоичных. Будем называть эту последовательность кодовым словом или кодовой комбинацией.
Код является равномерным, если все кодовые слова имеют одну длину (содержат одинаковое число двоичных символов). В противном случае код называется неравномерным.
Выбор способа кодирования зависит от вероятностей появления символов источника. Если заранее известно, что в большинстве случае результатом измерений будет а1, то есть Р(а1)>>P(a2), P(a3), P(a4), то для записи результатов длинной последовательности измерений при неравномерном кодировании потребуется гораздо меньше двоичных символов.
В равномерных кодах не требуется специальных знаков, отделяющих кодовые слова друг от друга. При использовании неравномерных кодов встает задача однозначного декодирования. Неравномерный код является однозначно декодируемым, если ни одно более короткое кодовое слово не является началом другого более длинного кодового слова. Такой код называется префиксным.
Любой код, кодовые слова которого соответствуют различным вершинам дерева, является однозначно декодируемым, то есть префиксным. Если кодовые слова соответствуют некоторым промежуточным узлам, код не обладает свойством префиксности.
Например, существует источник, алфавит которого содержит четыре символа: A={a1, a2, a3, a4} проводятся измерения, результатом которых может быть одно из четырех событий. Каждый из результатов необходимо представить в двоичной форме записи. Исходя из выше сказанного, можно построить равномерный и неравномерный код, реализация представлена в таблице 5. Обратите внимание, что из таблицы не очевидна эффективность неравномерного кодирования.
Таблица 5. Реализация кодов.
ai |
Равномерный |
Неравномерный |
a1 |
00 |
0 |
a2 |
01 |
10 |
a3 |
10 |
110 |
a4 |
11 |
111 |
В настоящее время в оконечной аппаратуре передачи данных широко используются равномерные двоичные коды:
- EBCDIC;
- ASCII;
- 8-битовый код КОИ-8, кодировка 1251.
Кодирование по методу Хаффмана (неравномерное, эффективное кодирование) нашло широкое применение на практике, например, в факсимильных устройствах и современных протоколах сжатия для передачи данных – MNP5(7), LZW.
В общем случае математиками доказано, что код Хаффмана является самым экономным в том смысле, что никакой другой метод кодирования алфавита не позволяет получить среднее число двоичных символов на один символ алфавита меньше, чем в случае кода Хаффмана.
Построение кода Хаффмана основывается на преобразовании, которое называется сжатием алфавита.
Метод использует то, что современные СПД работают с промежуточным хранением данных, поэтому перед передачей в канал связи есть возможность проанализировать данные и, выявив частоту появления конкретного символа присвоить бинарную комбинацию по принципу: чем чаще встречается символ, тем меньшее количество бит ему присваивается. Проведите параллель с азбукой С. Морзе.
В нашем случае необходимо:
- пересчитать все буквы, встречающиеся в ФИО - Длинношеев Василий Олегович:
а) число букв -25;
б) частота появления букв - Д – 1, Л – 3, И – 4, Н – 2, 0 - 3, Ш – 1, Е – 3, В – 3, А – 1, С – 1, Й – 1, Г – 1, Ч – 1;
в) вычислить вероятность появления каждой буквы, при учёте того что 25 букв это 100%;
- выполнить действия в соответствии с нижеуказанным алгоритмом.
Алгоритм кодирования:
Расположить символы исходного алфавита А в порядке убывания вероятности.
Два наименее вероятных символа алфавита А будем считать одним символом нового сжатого алфавита А1.
Располагаем символы алфавита А1 в порядке убывания вероятности. И снова подвергаем его сжатию, как в пункте 2.
Повторяем процедуру, пока не придем к алфавиту, содержащему всего два символа.
Припишем символам последнего алфавита кодовые обозначения 0 (например - верхнему) и 1 (в нашем примере – нижнему). Это старшие символы будущих кодовых слов.
В предпоследнем алфавите кодовые обозначения получаются следующим образом:
- символ, который сохранился в последнем алфавите, имеет то же кодовое обозначение.
- символам, которые слились в последнем алфавите, приписывают справа 0 (в нашем примере – верхнему символу) и 1 (нижнему символу).
Повторяем процедуру, последовательно возвращаясь к исходному алфавиту.
Пример
Исходные данные (не соответствуют рассмотренному ФИО): Z1 = 0,0055; Z2 = 0,19; Z3= 0,21; Z4 = 0,145; Z5 = 0,120; Z6 = 0,05; Z7 = 0,11; Z8 = 0,12; Zi, Zj, Zk, Zl, Zm, Zp = Z4, Z1, Z4, Z6, Z5, Z5.
Решение:
Кодовое дерево (упрощённое)
1
1
- Z3
= 0,21 1 0,545
101 – Z2 = 0,19 1 0,335 0 1 – введ. ошибка 1
100 – Z4 = 0,145 0 1
011 – Z5 = 0,120 1 0,24
010 – Z8 = 0,12 0 1 0,455 0
001 – Z7 = 0,11 1 0,215 0
0001 –Z1 = 0,055 1 0 0,105
0000 – Z6 = 0,05 0
2. Энтропия источника сообщений бит/с:
3. Средняя длина кодовой комбинации бит:
4. Составим кодовую комбинацию при передаче заданной последовательности.
Z4 Z1 Z4 Z6 Z5 Z5
100 0001 100 0000 011 011
5. Введем ошибку в разряд n-1 и покажем введенную ошибку на кодовом дереве
110 000 111 00000011 011
Ошибка появилась еще в одном разряде.