Алфавитное кодирование

Автор работы: Пользователь скрыл имя, 09 Декабря 2011 в 08:53, курсовая работа

Краткое описание

Работа подавляющего числа современных систем связи основана на передаче сообщений в цифровом виде. Сбой при приеме любого элемента цифровых данных способен вызвать значительное искажение всего сообщения в целом, что, в свою очередь, может привести к полной потере информации, содержащейся в нем. В современных информационных системах важнейшей задачей является обеспечение информационной безопасности, связанной с методами криптографии и кодирования, теоретические основы которой заложил Шеннон в своих трудах.

Содержание работы

Введение 3
1. Теоретические основы задачи кодирования……………………………………………...6
1.1. Постановка задачи кодирования………….……………………………..….……………6
1.2. Первая теорема Шеннона…………………………………………………………….....10
1.3. Вторая теорема Шеннона……………………………………………………………….13
1.4. Помехоустойчивые коды…..........………………………………………….......…….…14
2. Алфавитное кодирование......................................................................................................17
2.1. Основные определения.....................................................................................................17
2.2. Проблема распознавания взаимной однозначности алфавитного кодирования.......18
2.3. Алгоритм построения префиксного кода по набору длин элементарных кодов........22
2.4. Алгоритмы экономного алфавитного кодирования......................................................23
2.4.1. Алгоритм Хаффмана...............................................................................................24
2.4.2. Алгоритм Фано........................................................................................................26
2.4.3. Алгоритм Шеннона.................................................................................................27
2.4.4. Энтропия и ее связь со стоимостью оптимального алфавитного
кодирования..................................................................................................................................28
2.4.5. Возможности сжатия при алфавитном кодировании, учитывающем
синтаксис языка сообщений........................................................................................................31
Заключение..................................................................................................................................34
Список литературы 35

Содержимое работы - 1 файл

Алфавитное кодирование.doc

— 473.00 Кб (Скачать файл)

     Процесс, обратный кодированию, заключается  в восстановлении из кодовой комбинации Br=b1b2…bmr слова Ar=a1a2…anr из входного алфавита и называется декодированием. Если процесс кодирования осуществляется с использованием правила G, то процесс декодирования основан на применении правила G-1, где G-1 есть отображение, обратное отображению G.

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

     Пусть Ar — слово в алфавите А и Br =G(Ar) — слово в алфавите В. Код называется обратимым, если для любого слова Br =G(Ar) в алфавите В существует единственное преобразование G-1(Br)= Ar . То есть, по слову Br в алфавите В, всегда однозначно восстанавливается слово Ar в алфавите А, из которого было образовано слово Br.

     Примером  обратимого кодирования является представление  знаков в телеграфном коде при  передаче сообщений и восстановление их при приеме.

     Примером  необратимого кодирования является перевод текста с одного естественного  языка на другой. (Обратный перевод  побуквенно обычно не соответствует  исходному тексту.)

     Чтобы код был обратимым, необходимо:

     1) чтобы разным символам входного алфавита А были сопоставлены разные кодовые комбинации;

     2) чтобы никакая кодовая комбинация  не составляла начальной части  какой-нибудь другой кодовой комбинации.

     Наиболее  простым правилом кодирования является сопоставление каждому символу входного алфавита А слова конечной длины в выходном алфавите В. Код может быть задан в форме таблицы, графа, аналитического выражения, то есть в тех же формах, что и отображение.

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

     1.2. Первая теорема  Шеннона 

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

     При работе с кодированной информацией, искажаемой помехами, можно выделить следующие основные проблемы: установления самого факта того, что произошло искажение информации; выяснения того, в каком конкретно месте передаваемого текста это произошло; исправления ошибки – хотя бы с некоторой степенью достоверности.

     Помехи  в передачи информации - свойство отнюдь не только технических систем. Это - вполне обычное дело в быту. Пример был выше; другие примеры - разговор по телефону, в трубке которого "трещит", вождение автомобиля в тумане и т.д. Чаще всего человек вполне прилично справляется с каждой из указанных выше задач, хотя и не всегда отдает себе отчет, как он это делает (т.е. не алгоритмически, а исходя из каких-то ассоциативных связей).

     Например, каждый фрагмент текста ("предложение") передается трижды, и верным считается та пара фрагментов, которая полностью совпала. Однако, большая избыточность приводит к большим временным затратам при передаче информации и требует большого объема памяти при ее хранении. Отсюда следует задача устранения избыточности, или эффективного кодирования. Впервые теоретическое исследование такого рода проблем предпринял К.Шеннон.

     Первая  теорема Шеннона о передаче информации, которая называется также основной теоремой о кодировании при отсутствии помех, формулируется следующим образом:

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

     Используя понятие избыточности кода, можно  дать более короткую формулировку теоремы:

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

     Данные  утверждения являются теоремами  и, следовательно, должны доказываться, однако доказательства мы опустим. Для  нас важно, что теорема открывает  принципиальную возможность оптимального кодирования. Однако необходимо сознавать, что из самой теоремы никоим образом не следует, как такое кодирование осуществить практически – для этого должны привлекаться какие-то дополнительные соображения, что и станет предметом последующего обсуждения.

     Таким образом, оптимальное кодирование  принципиально возможно.

     Наиболее  важна для практики ситуация, когда  М=2, то есть информацию кодируют лишь двумя  сигналами 0 и 1.

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

     Кmin (А, В)= I (A) / log2 M= I (A) , 

     здесь I (A) - средняя информация на знак первичного алфавита.

     Ограничим себя ситуацией, когда M = 2, т.е. для представления  кодов в линии связи используется лишь два типа сигналов – наиболее просто реализуемый вариант. Подобное кодирование называется двоичным. Знаки двоичного алфавита принято обозначать "0" и "1. Удобство двоичных кодов и в том, что каждый элементарный сигнал (0 или 1) несет в себе 1 бит информации (log2M = 1); тогда из (1), теоремы Шеннона:  

     I1(A)≤ K(2) 

     и первая теорема Шеннона получает следующую интерпретацию:

     При отсутствии помех передачи средняя  длина двоичного кода может быть сколь угодно близкой к средней  информации, приходящейся на знак первичного алфавита.

     Определение количества переданной информации при  двоичном кодировании сводится к  простому подсчету числа импульсов (единиц) и пауз (нулей). При этом возникает  проблема выделения из потока сигналов (последовательности импульсов и пауз) отдельных кодов. Приемное устройство фиксирует интенсивность и длительность сигналов. Элементарные сигналы (0 и 1) могут иметь одинаковые или разные длительности. Их количество в коде (длина кодовой цепочки), который ставится в соответствие знаку первичного алфавита, также может быть одинаковым (в этом случае код называется равномерным) или разным (неравномерный код). Наконец, коды могут строиться для каждого знака исходного алфавита (алфавитное кодирование) или для их комбинаций (кодирование блоков, слов). В результате при кодировании (алфавитном и словесном) возможны следующие варианты сочетаний:  

     Таблица 1. Варианты сочетаний 

    Длительности  элементарных сигналов Кодировка первичных  символов (слов) Ситуация
    одинаковые равномерная (1)
    одинаковые неравномерная (2)
    разные равномерная (3)
    разные неравномерная (4)
 

     В случае использования неравномерного кодирования или сигналов разной длительности (ситуации (2), (3) и (4)) для  отделения кода одного знака от другого  между ними необходимо передавать специальный сигнал – временной разделитель (признак конца знака) или применять такие коды, которые оказываются уникальными, т.е. несовпадающими с частями других кодов. При равномерном кодировании одинаковыми по длительности сигналами (ситуация (1)) передачи специального разделителя не требуется, поскольку отделение одного кода от другого производится по общей длительности, которая для всех кодов оказывается одинаковой (или одинаковому числу бит при хранении).

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

     Если  имеется источник информации с энтропией  Н(х) и канал связи с пропускной способностью С, то если С > H(X), то всегда можно закодировать достаточно длинное сообщение таким образом, что оно будет передано без задержек. Если же, напротив, С < H(X), то передача информации без задержек невозможна.

     Первая  теорема Шеннона декларирует  возможность создания системы эффективного кодирования дискретных сообщений, у которой среднее количество двоичных символов на один символ сообщения асимптотически стремится к энтропии источника сообщений (в отсутствии помех).

     Первая  теорема Шеннона (переформулировка).

     При отсутствии помех  средняя длина  двоичного кода может  быть сколь угодно близкой к средней  информации, приходящейся на знак первичного алфавита.

     Какие же могут быть особенности вторичного алфавита при кодировании:

     Элементарные  коды 0 и 1 могут иметь одинаковые длительности (t0=t1) или разные (≠).

     Длина кода может быть одинаковой для всех знаков первичного алфавита (код равномерный) или различной (неравномерный код)

     Коды  могут строиться для отдельного знака первичного алфавита (алфавитное кодирование) или для их комбинаций (кодирование блоков, слов). 

     1.3. Вторая теорема Шеннона 

     Отношение пропускной способности канала связи  к скорости неискаженной передачи символов алфавита передаваемого сообщения  должно быть больше или равно энтропии передачи одного символа.

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

     Доказательство  теоремы основывается на следующих  рассуждениях. Первоначально последовательность X={xi} кодируется символами из В так, что достигается максимальная пропускная способность (канал не имеет помех). Затем в последовательность из В длины n вводится r символов по каналу передается новая последовательность из n + r символов. Число возможных последовательностей длины n + r больше числа возможных последовательностей длины n. Множество всех последовательностей длины n + r может быть разбито на n подмножеств, каждому из которых сопоставлена одна из последовательностей длины n. При наличии помехи на последовательность из n + r выводит ее из соответствующего подмножества с вероятностью сколь угодно малой.

     Теорема позволяет определять на приемной стороне  канала, какому подмножеству принадлежит  искаженная помехами принятая последовательность n + r, и тем самым восстановить исходную последовательность длины n.

     Эта теорема не дает конкретного метода построения кода, но указывает на пределы достижимого в области помехоустойчивого кодирования, стимулирует поиск новых путей решения этой проблемы. 

    1. Помехоустойчивые  коды
 

     Простые коды характеризуются тем, что для передачи информации используются все кодовые слова (комбинации), количество которых равно (q - основание кода, а n - длина кода). В общем случае они могут отличаться друг от друга одним символом (элементом). Поэтому даже один ошибочно принятый символ приводит к замене одного кодового сло-ва другим и, следовательно, к неправильному приему сообщения в целом.  
            Помехоустойчивыми кодами называются коды, позволяющие обнаруживать и (или) исправлять ошибки в кодовых словах, которые возникают при передаче по каналам связи. Эти коды строятся таким образом, что для передачи сообщения используется лишь часть кодовых слов, которые отличаются друг от друга более чем в одном символе. Эти кодовые слова называются разрешенными. Все остальные кодовые слова не используются и относятся к числу запрещенных.  
            Применение помехоустойчивых кодов для повышения верности передачи данных связано с решением задач кодирования и декодирования.  
            Задача кодирования заключается в получении при передаче для каждой k - элементной комбинации из множества соответствующего ей кодового слова длиною n из множества . Задача декодирования состоит в получении k - элементной комбинации из принятого n - разрядного кодового слова при одновременном обнаружении или исправлении ошибок.

Информация о работе Алфавитное кодирование