
- •Д.Е. Турчин
- •Лабораторный практикум
- •Кемерово 2013
- •Описание лабораторного практикума
- •1.2.2. Понятие кода и кодирования. Моделирование дискретных источников сообщений без памяти
- •1.3. Порядок выполнения работы
- •1.4. Контрольные вопросы
- •Марковские источники сообщений.
- •Эффективность, избыточность и производительность источника сообщений.
- •Кодовые деревья и префиксные коды.
- •2.3. Порядок выполнения работы
- •2.4. Контрольные вопросы
- •3.2.2. Пропускная способность дискретного канала связи. Кодеры и декодеры канала связи. Код с битом четности Пропускная способность дискретного канала связи.
- •Кодер и декодер канала связи. Код с битом четности.
- •3.3. Порядок выполнения работы
- •3.4. Контрольные вопросы
- •Метод Шеннона-Фано.
- •4.2.2. Методы кодирования источников сообщений по Хаффману Кодирование дискретного источника сообщений без памяти по Хаффману.
- •4.3. Порядок выполнения работы
- •4.4. Контрольные вопросы
- •Декодирование арифметического кода.
- •5.2.2. Метод адаптивного арифметического кодирования и его программная реализация
- •5.3. Порядок выполнения работы
- •5.4. Контрольные вопросы
- •6. Сжатие информации методами Лемпела-Зива
- •6.1. Цель работы
- •6.2. Основные теоретические сведения
- •Код Хэмминга.
- •7.2.2. Расширенный код Хэмминга. Программная реализация кода Хэмминга Расширенный код Хэмминга.
- •7.3. Порядок выполнения работы
- •7.5. Контрольные вопросы
- •8. Построение и декодирование линейных блоковых кодов
- •8.1. Цель работы
- •8.2. Основные теоретические сведения
- •8.3. Порядок выполнения работы
- •8.4. Контрольные вопросы
- •Приложение п.1. Понятие события и его вероятности. Теоремы сложения и умножения вероятностей Понятие события и вероятности события. Непосредственный подсчет вероятностей.
- •Теорема сложения вероятностей.
- •Теорема умножения вероятностей.
- •П.2. Данные для расчета энтропии и количества информации
- •П.3. Матрицы и операции над ними п.4. Многочлены и операции над ними
- •П.5. Вопросы к экзамену
1.2.2. Понятие кода и кодирования. Моделирование дискретных источников сообщений без памяти
Символы, выдаваемые источником сообщений, обычно подаются на вход кодера, который осуществляет процесс кодирования информации.
Под кодированием информации понимают процесс преобразования информации из формы, удобной для непосредственного ее использования, в форму, удобную для передачи, хранения или автоматической обработки. Обратный процесс называется декодированием.
Кодер имеет собственный алфавит символов C = {c1, c2, ..., cK}, называемый вторичным алфавитом (за первичный алфавит принимается алфавит источника сообщений). Кроме того, кодер имеет определенный алгоритм кодирования (код).
Код – правило сопоставления каждому конкретному сообщению (символу первичного алфавита) строго определённой комбинации символов вторичного алфавита. Отдельная комбинация таких символов называется кодовым словом.
Число символов L в кодовом слове называется длиной кодового слова.
Объем алфавита K кодера, то есть число различных символов кода называют основанием кода. Например, если K = 2, 3, 4, … , то код называют бинарным (двоичным), триарным (троичным), тетрарным и т. д.
Коды, все слова которых имеют одинаковую длину, называются равномерными (блочными). Соответственно коды, в которых данное условие не выполняется, называют неравномерными.
Неравномерные коды требуют либо специальных разделительных знаков, учитывающих конец одного кодового слова и начало другого, либо должны строиться так, чтобы никакое кодовое слово не являлась передней частью (префиксом) другого кодового слова (свойство префикса). Неравномерные коды, обладающие свойством префикса, называют префиксными кодами.
Для закодированного сообщения может быть определена такая характеристика, как объем информации, под которым понимают общее число символов вторичного алфавита в сообщении.
❒ Пример 1.5. Разработка компьютерной модели дискретного источника сообщений без памяти.
Требуется разработать компьютерную модель дискретного источника сообщений без памяти, описанного в примере 1.2.
Также создадим модель кодера источника сообщений, алфавит которого будет состоять из символов «0» и «1». Примем, что кодирование производится равномерным кодом по следующему правилу:
s1 → 00; s2 → 01; s3 → 10; s4 → 11.
В качестве вводимых данных должна использоваться длина сообщения от источника.
Результатами работы модели выступают исходное сообщение, сгенерированное источником, и закодированное сообщение, выдаваемое кодером. Кроме того, требуется выводить частоты появления символов в сообщении для проверки правильности работы модели.
Для программной реализации воспользуемся интегрированной средой разработки MS Visual Studio и языком программирования Visual C#. В качестве шаблона проекта используем консольное приложение.
Программный код консольного приложения организуем в виде двух классов DiscrIS и KoderIS.
Класс DiscrIS описывает дискретный источник сообщений (рис. 1.2). В данном классе присутствует метод случайного генерирования отдельных символов в соответствии с их вероятностями (метод GenSimv).
Рис. 1.2. Исходный код класса DiskrIS (дискретный источник сообщений)
Класс KoderIS описывает дискретный источник сообщений (рис. 1.3). В данном классе помимо метода кодирования (метод KodSimv) присутствует метод, связанный с выдачей информации о частотах появления отдельных символов (метод Statist). Такая статистическая информация позволяет проверить правильность компьютерной модели источника.
Рис. 1.3. Исходный код класса KoderIS (кодер источника сообщений)
В процедуре Main() консольного приложения (рис. 1.4) создаются экземпляры классов DiskrIS и KoderIS (объекты dis и kis) и осуществляется вызов их методов. В цикле for данной процедуры через переменную строку-буфер buf осуществляется передача отдельных символов от источника к кодеру, а также происходит формирование исходного (s) и закодированного (c) сообщений.
Рис. 1.4. Исходный код метода Main() консольного приложения
Результат работы консольного приложения при длине сообщения n = 220 символов показан на рис. 1.5.
Рис. 1.5. Результат работы консольного приложения
Из полученного результата видно, что частоты появления символов в сообщении приблизительно соответствуют вероятностям этих символов. ❒