Лабораторная работа № 2 Построение кода постоянной длины. Цель работы: Изучить метод построения кода постоянной длины и оценить эффективность полученного кода. Теоретическая часть Для изображения информации часто используются тексты на том или ином языке. Множество букв алфавита языка конечно и может быть записано в виде двоичных кодов. Существует стандартная кодировка букв английского алфавита ASCII (American Standard Code for Information Interchange - Американский стандартный код для обмена информацией). Это семибитный код, в котором кроме букв английского алфавита (строчных и прописных) представлены также цифры, знаки препинания, некоторые дополнительные знаки и управляющие коды (например, перевод строки). Для представления расширение кода букв ASCII других до алфавитов 8-битового (кроме (extended английского) ASCII); при используется этом литеры дополнительного алфавита кодируются двоичными числами, старший бит которых равен 1, тогда как для исходных кодов ASCII он равен 0. Код постоянной длины – двоичное кодирование, отображающее каждый кодируемый знак на двоичное слово одинаковой длины. Пусть объектом кодирования являются тексты, записанные на некотором (естественном или искусственном) языке, причем число букв в алфавите этого языка, включая (если есть такая необходимость) некоторые знаки препинания, знак пробела и т.п., равно n. Далее, пусть L – наименьшее натуральное число, удовлетворяющее условию: L ≥ log2n Тогда можно пользоваться простейшим методом побуквенного кодирования с помощью кода постоянной длины L. Наиболее компактное кодирование достигается в том случае, когда число букв в алфавите равняется целой степени двойки. Нарушение этого условия непременно приводит к некоторой избыточности. Стохастический источник сообщений генерирует тексты в виде последовательности символов с заданным алфавитом и стационарными (не зависящими от времени) статистическими характеристиками появления элементов алфавита в последовательности. В простейшем случае каждый символ aiОA появляется независимо от других с вероятностью p(i). Количество информации, приносимое в среднем одним элементом сообщения (текста), по определению равно энтропии источника: n H = – ∑ p(i) log2p(i) i =1 Энтропия источника H является непрерывной функцией от p(i). При фиксированном n энтропия максимальна и равна log2n в случае, если все p(i) равны между собой. Обозначим длину i-го кодового слова как |cod(ai)|. Средняя длина кодовых слов может быть определена следующим образом: L = Σ p(i) |cod(ai)| Теорема кодирования: Для любого двоичного кодирования L≥H. Каждый источник может быть закодирован так, что разность L–H будет сколь угодно малой. Эффективность кода: отношение H/L Избыточность кода: отношение (L–H)/L Порядок выполнения лабораторной работы 1. Определить количество различных символов исходного текста, составить алфавит сообщения и определить длину кодовых слов. 2. Составить таблицу кодирования символов кодом постоянной длины. 3. Закодировать исходное сообщение полученным двоичным кодом и определить длину сообщения. 4. Рассчитать эффективность полученного кода постоянной длины для заданного сообщения. Варианты заданий 1. БАРАН КАРАБКАЛСЯ С КАРАБИНОМ 2. ТАРАКАН ПОПАЛ В КАПКАН 3. БАРАБАНЩИК БИЛ В ЯЩИК 4. КОЛОКОЛ ИЗ ВОЛОКОЛАМСКА 5. ПОЛОТЕНЦЕ ПОПАЛО В БОЛОТО 6. КОЛОБОК ПОЛОТЕНЦЕ УВОЛОК 7. ХЕРЕС ПОПАЛ НА ПЕРЕВЯЗЬ 8. МЕЛ ЕМЕЛЯ МЕЛ В МЕЛЬНИЦЕ 9. НА ЛАПУ УПАЛА КАПЛЯ ПАКЛИ 10. НЕ ПЕЙ ПЕНУ У РЕПЕЙНИКА 11. КОЛЕСИЛ СОКОЛ ОКОЛО ОКОЛИЦЫ 12. КАК ЛОМ САМ ПОЛОМАЛСЯ ПОПОЛАМ Содержание отчета о лабораторной работе: • номер группы, ФИО, дата выполнения работы; • исходное сообщение и алфавит; • таблица кодов постоянной длины; • закодированное сообщение и его длина; • количество информации в сообщении; • эффективность кода. Пример расчета эффективности кода постоянной длины Исходное сообщение: МАМА_МЫЛА_РАМУ Пример отчета Исходное сообщение "МАМА МЫЛА РАМУ" Алфавит А = { " ", А, Л, М, Р, У, Ы } Таблица кодов Символ Код "" 000 А 001 Л 010 М 011 Р 100 У 101 Ы 110 Сообщение = 011001011001000011110010001100001011101 Длина сообщения 42 бита (14 символов * бита/символ) Количество информации в сообщении H=2.522 бит/символ Средняя длина кододвого слова L=3 бит/символ Эффективность кода H/L=0.841