Добавил:
north memphis Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab3.docx
Скачиваний:
0
Добавлен:
17.07.2026
Размер:
447.9 Кб
Скачать

МИНОБРНАУКИ РОССИИ

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

Кафедра информационной безопасности

Лабораторная РАБОТА №3

по дисциплине «Сети и системы передачи данных»

Тема: Кодирование источника и кодирование канала

Студент _________________

Преподаватель _________________ Абазина Е.С.

Санкт-Петербург

2026

Содержание

Y

Формулировка определений и их свойств 3

Код Хаффмана 3

Код Шеннона-Фано 4

Код Хэмминга 5

Задача 3.1.4 7

Задача 3.1.14 10

Задача 3.2.4 13

Задача 3.2.14 13

Список использованных источников 14

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

Цель лабораторной работы:

  • Ознакомиться с основными понятиями теории информации и кодирования, подходам к сокращению избыточности и к повышению помехоустойчивости за счет кодирования.

  • Изучить метод кодирования Хаффмана и Шеннона-Фано

  • Изучить метод кодирования Хэмминга

Формулировка определений и их свойств

Код Хаффмана

Построение кода Хаффмана производится при помощи таблицы распределения вероятностей повторения каждого символа:

Рисунок 1. Схема построения кода Хаффмана

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

Декодирование происходит следующим образом:

На вход выдается сообщение и таблица кодов.

Подобные закодированные сообщения могут декодироваться благодаря свойству префиксности эффективных кодов: никакая из коротких комбинаций не является началом другой, более длинной. Это свойство позволяет декодировать ОДНОЗНАЧНО.

В сообщении слева направо выделяется по одному двоичному символу и делается попытка декодирования в соответствии с таблицей кодов. Если попытка успешна, двоичный символ (или символы) исключается из исходной цепочки и заменяется соответствующим исходным символом. Если попытка не удается, во входной цепочке выделяется следующий двоичный символ и уже с двумя двоичными символами делается попытка их декодирования по таблице кодов. Если попытка и тогда неудачна, выделяют следующий третий и т.д

Код Шеннона-Фано

Код Шеннона – Фано строится с помощью дерева. Всё множество кодируемых элементов соответствует корню дерева (вершине первого уровня). Оно разбивается на два подмножества с примерно одинаковыми суммарными вероятностями. Эти подмножества соответствуют двум вершинам второго уровня, которые соединяются с корнем. Далее каждое из этих подмножеств разбивается на два подмножества с примерно одинаковыми суммарными вероятностями. Им соответствуют вершины третьего уровня. Если подмножество содержит единственный элемент, то ему соответствует концевая вершина кодового дерева; такое подмножество разбиению не подлежит. Подобным образом поступаем до тех пор, пока не получим все концевые вершины. Ветви кодового дерева размечаем символами 1 и 0, как в случае кода Хаффмана.

Рисунок 2. Дерево Шеннона-Фано

Ответ: A – 11, B – 101, C – 100, D – 00, E – 011, F – 010

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

Код Хэмминга

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

Другими словами, это алгоритм, который позволяет закодировать какое-либо информационное сообщение определённым образом и после передачи (например по сети) определить появилась ли какая-то ошибка в этом сообщении (к примеру из-за помех) и, при возможности, восстановить это сообщение. Сегодня, я опишу самый простой алгоритм Хемминга, который может исправлять лишь одну ошибку.

Также стоит отметить, что существуют более совершенные модификации данного алгоритма, которые позволяют обнаруживать (и если возможно исправлять) большее количество ошибок.

Сразу стоит сказать, что Код Хэмминга состоит из двух частей. Первая часть кодирует исходное сообщение, вставляя в него в определённых местах контрольные биты (вычисленные особым образом). Вторая часть получает входящее сообщение и заново вычисляет контрольные биты (по тому же алгоритму, что и первая часть). Если все вновь вычисленные контрольные биты совпадают с полученными, то сообщение получено без ошибок. В противном случае, выводится сообщение об ошибке и при возможности ошибка исправляется.

Рисунок 3. Построение кода Хэмминга

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

Рисунок 4. Формирование контрольных битов

Решение поставленной задачи Задача 3.1.4

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

Построение кодов для отдельных букв:

Рисунок 5. Побуквенные коды

Буква

Код

A

1

B

01

C

00

Построение кодов для пар букв:

Рисунок 6. Коды для пар букв

Сочетание

Код

AA

1

AB

011

AC

0011

BA

010

BB

0001

BC

00001

CA

0010

CB

000001

CC

000000

Вывод: Кодирование двухбуквенных сочетаний значительно эффективнее: избыточность менее 1%, тогда как при побуквенном кодировании избыточность превышает 11%. Это объясняется тем, что при укрупнении алфавита появляется возможность лучше согласовать длины кодов с вероятностями символов.

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