- •Балтийский Федеральный Университет имени и. Канта
- •Расчетно-графическая работа №1
- •1.2 Статистический подход к измерению информации
- •Расчетно-графическая работа №2 Тема: «Разработка формальной грамматики Хомского».
- •1.1 Формальная грамматика
- •1.2 Пример построения грамматики
- •1.3 Представление грамматики в виде графа
- •1.5 Классификация формальных грамматик
- •Расчетно-графическая работа №3
- •Метод Шеннона-Фано
- •Метод Хаффмана
- •Расчетно-графическая работа №4 Тема: «Системы счисления».
- •Правила перевода целых чисел
- •Правила перевода правильных дробей
- •Правила сложения
- •Правила вычитания
- •Правила умножения
- •Правила деления
- •Расчетно-графическая работа №5 Тема: «Нормальные алгоритмы Маркова и машины Тьюринга».
- •Расчетно-графическая работа № 6 Тема: «Архивирование файлов алгоритмом Зива-Лемпеля-Велча».
- •7 Методические указания по выполнению расчетно-графической работы № 7 на тему: «Нахождение всех гамильтоновых циклов на ориентированном графе»
Расчетно-графическая работа №3
Тема: «Кодирование информации (код Шеннона-Фано и код Хаффмана)».
Теоретическая часть
Кодирование
Кодирование – это представление сигнала в определенной форме, удобной или пригодной для последующего использования сигнала. Говоря строже, это правило, описывающее отображение одного набора знаков в другой набор знаков. Тогда отображаемый набор знаков называется исходным алфавитом, а набор знаков, который используется для отображения, - кодовым алфавитом, или алфавитом для кодирования. При этом кодированию подлежат как отдельные символы исходного алфавита, так и их комбинации. Аналогично для построения кода используются как отдельные символы кодового алфавита, так и их комбинации.
Совокупность символов кодового алфавита, применяемых для кодирования одного символа (или одной комбинации символов) исходного алфавита, называется кодовой комбинацией, или, короче, кодом символа. При этом кодовая комбинация может содержать один символ кодового алфавита.
Символ (или комбинация символов) исходного алфавита, которому соответствует кодовая комбинация, называется исходным символом.
Совокупность кодовых комбинаций называется кодом.
Взаимосвязь символов (или комбинаций символов, если кодируются не отдельные символы исходного алфавита) исходного алфавита с их кодовыми комбинациями составляет таблицу соответствия (или таблицу кодов).
Следует отметить, что понятие «код» омонимично: оно может употребляться и в смысле кодовой комбинации, и в приведенном выше смысле. Аналогично, понятие «кодовая комбинация» синонимично понятию «код».
Обратная процедура получения исходных символов по кодам символов называется декодированием. Очевидно, для выполнения правильного декодирования код должен быть однозначным, т.е. одному исходному знаку должен соответствовать точно один код и наоборот.
В зависимости от целей кодирования, различают следующие его виды:
кодирование по образцу - каждый знак дискретного сигнала представляется знаком или набором знаков того алфавита, в котором выполняется кодирование. Используется, в частности, всякий раз для ввода информации в компьютер для ее внутреннего представления;
криптографическое кодирование, или шифрование, – используется, когда нужно защитить информацию от несанкционированного доступа;
эффективное, или оптимальное, кодирование – для устранения избыточности данных путем снижения среднего числа символов кодового алфавита для представления одного исходного символа. Активно используется в архиваторах;
помехозащитное или помехоустойчивое кодирование – для обеспечения заданной достоверности в случае, когда на сигнал накладывается помеха. Используется для защиты от помех при передаче информации по каналам связи.
Эффективное кодирование
Д
(3.1)
где k – число символов исходного алфавита;
ns – число двоичных разрядов для кодирования символа s;
fs – частота символа s; причем
При этом Частоты fs появления каждого символа в исходном:
где ms – число появлений символа s в исходном тексте.
Существуют два классических метода эффективного кодирования: методы Шеннона-Фано и Хаффмана. Входными данными для обоих методов является заданное множество исходных символов для кодирования с частотами; результат - эффективные коды.