Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоргалки по теории информации.doc
Скачиваний:
298
Добавлен:
02.05.2014
Размер:
881.15 Кб
Скачать

15. Процедуры Шеннона-Фано и Хаффмена

Процедура Шеннона-Фано.

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

Кодовое дерево, построенное процедурой Шеннона-Фано

Процедура Хафмена.

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

Процедура Хаффмана представляет собой рекурсивный алгоритм, стоящий бинарное кодовое дерево в обратную сторону, т.е. от конечных вершин к корню. Конечные вершины представляют отдельные сообщения и их вероятности, корень представляет множество всех сообщений с суммарной вероятностью, равной единице, а внутренние вершины, а внутренние вершины представляют сгруппированные подмножества и их суммарные вероятности. Пусть Pm – задача кодирования сообщений, где сообщение i имеет вероятность появления pi иОсновная идея алгоритма состоит в том, чтобы объединить два сообщения с наименьшими вероятностями в одно множество и далее решать задачу Pm-1 c m-1 сообщениями и вероятностямиПрактически кодовое дерево в явном виде строится в обратном направлении, как показано на рис. 5 для нашего примера.

Кодовое дерево, построенное процедурой Хаффмана.

Прямой подсчет дает среднее значение длины кодового слова L=3.145, что совпадает с результатом, полученным с помощью процедуры Шеннона-Фано (это означает, что в данном примере процедура Шеннона-Фано также оказалась оптимальной).

16. Помехоустойчивое кодирование. Основные принципы помехоустойчивого кодирования.

Основные принципы помехоустойчивого кодирования.

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

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

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

Однако в теореме Шеннона не говорится о том, как нужно строить помехоустойчивые коды.

На этот вопрос отвечает теория помехоустойчивого кодирования.

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

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

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

Напомним, что двоичный код – это код с основание m=2.

Количество разрядов n в кодовой комбинации принято называть длиной или значностью кода. Каждый разряд может принимать значение 0 или 1. Количество единиц в кодовой комбинации называют весом кодовой комбинации и обозначают .

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

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

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

Вес вектора ошибки характеризует кратность ошибки. Сумма по модулю для искажений кодовой комбинации и вектора ошибки дает исходную неискаженную комбинацию.

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

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

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

Таким образом, не все искажения могут быть обнаружены. Доля обнаруживаемых ошибочных комбинаций составляет

Для использования данного кода в качестве исправляющего множество запрещенных кодовых комбинаций разбивается на N непересекающихся подмножеств Mk . Каждое из множеств Mk ставится в соответствие одной из разрешенных комбинаций.

Если принятая запрещенная комбинация принадлежит подмножеству Mi , то считается, что передана комбинация Ai

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

Способ разбиения на подмножества зависит от того, какие ошибки должны исправляться данным кодом.

Связь исправляющей способности кода с кодовым расстоянием.

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

Рассмотрим это на конкретных примерах.

Пусть необходимо построить код, обнаруживающий все ошибки кратностью t и ниже.

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

7.29

В общем случае для устранения ошибок кратности кодовое расстояние должно удовлетворять условию

7.31

Аналогично рассуждая, можно установить, что для исправления всех ошибок кратности не более и одновременного обнаружения всех ошибок кратности не болееt (при t>) кодовое расстояние должно удовлетворять условию

7.32

При этом нужно иметь в виду, что если обнаруженная кодом ошибка исправлена быть не может, т.е. в данном случае код только обнаруживает ошибку.