Теоретические сведения
Помехоустойчивое кодирование
Кодирование, с помощью которого можно нейтрализовать непреднамеренное искажение информации, обусловленное, например, наличием шума в канале связи, называют помехоустойчивым. Оно используется для защиты информации от случайных искажений при хранении, передаче и т.п. Проблема обусловлена несоответствием между требованиями, предъявляемыми при передаче данных и качеством реальных каналов связи. В сетях передачи данных требуется обеспечить вероятность ошибки не выше 10-6 - 10-9, а при использовании реальных каналов связи указанная вероятность не превышает 10-2 - 10-5.
Определение. Помехоустойчивым (п/у) или корректирующим называется код, позволяющий обнаружить и устранить ошибки, возникающие под действием помех.
Теорема Шеннона для дискретного канала с помехами утверждает, что вероятность ошибок за счет действия в канале связи помех может быть сделана сколь угодно малой выбором соответствующего способа кодирования.
К сожалению основная теорема кодирования Шеннона не конструктивна, она не указывает способ построения конкретного оптимального помехоустойчивого кода, обеспечивающего предельное согласование сигнала с каналом, существование которого доказывает.
Вместе с тем, обосновав принципиальную возможность построения помехоустойчивых кодов, обеспечивающих идеальную передачу, теория Шеннона мобилизовала усилия ученых на разработку конкретных кодов. В результате в настоящее время теория помехоустойчивого кодирования превратилась в самостоятельную науку, в развитии которой достигнуты большие успехи.
Далее в этом разделе мы рассмотрим способы, позволяющие закодировать некое сообщение или какой-либо его код таким образом, чтобы можно было восстановить это сообщение в случае искажений за счет помех.
Помехоустойчивое кодирование бывает блочное и непрерывное.
блочными называют коды, в которых исходные сообщения S объединяются в блоки и каждый блок кодируется помехоустойчивым кодом.
при непрерывном кодировании построение помехоустойчивого кода ведется непрерывно по наблюдаемой части последовательности S не дожидаясь конца блока. Используется реже.
Блочные коды в свою очередь делятся на
равномерные, использующие блоки равной длины и не требующие разделительного символа между ними;
неравномерные, имеющие неопределенную длину блока.
самый большой класс блочных равномерных кодов составляют линейные коды, у которых проверочные символы получаются в результате линейных операций над информационными символами.
Для двоичных кодов такой линейной операцией является - сложение по модулю два информационных символов.
Помехоустойчивость кодирования обеспечивается за счет введения избыточности в кодовые слова. Пусть длина блока равномерного кода равна n. Всего можно составить N0=2n различных кодовых слов такой длины. И пусть среди n символов блока:
k – используется для передачи информации, а остальные
m=n-k – являются проверочными и используются только для защиты от сбоев.
Такие блочные линейные коды называют (n,k) – кодами.
Процесс помехоустойчивого кодирования можно описать следующим образом. В последовательности {S}, поступающей на вход помехоустойчивого кодера все символы являются информационными. Поэтому разбиваем её на блоки по k символов. В процессе помехоустойчивого кодирования к каждому такому блоку добавляются по m проверочных символов. Полученные блоки длиной n символов составят помехоустойчивую последовательность {U}, передаваемую по каналу связи.
Если бы все символы блока были информационными, то каждый блок помехоустойчивого кода длиной n максимально мог бы нести количество информации равное , а на самом деле несут информацию толькоk символов блока в максимально возможном количестве , тогда избыточность блока помехоустойчивого кодаU длиной n равна
.
Это значит, что из всех возможных N0=2n кодовых слов (комбинаций n двоичных символов кода) в качестве помехоустойчивого кода используется только часть слов и их количество равно N=2k.
Таким образом все множество {U} кодовых слов разбивается на два множества: разрешенные и запрещенные или ошибочные слова.
На вход канала связи поступают только разрешенные кодовые слова, а на выходе могут быть любые – как разрешенные, так и ошибочные слова.
Основная задача построения помехоустойчивых кодов – выбор их множества всех возможных кодовых слов такое подмножество разрешенных, чтобы вероятность обнаружения и исправления ошибки была максимально возможной, и, следовательно, вероятность искажения информации в канале связи была наименьшей.